cancel
Showing results for 
Search instead for 
Did you mean: 

Node Mapping Problem

Former Member
0 Kudos

Hello everybody,

I have the following structure:

When I run my file in this format:

EDI_DC40  1100000000000000001702       DELFOR02                                                    ZMFORECAST                                       A000000020LS

E2EDK09                       1100000000000000001000001000000  002006023566                       20120602                                                                                                                                                                                                 

E2EDKA1                       1100000000000000001000003000002  AA 200012                                                                                                                                                                                                                                                                                                                     

E2EDKA1                       1100000000000000001000004000003  BB BBBCLNT000                                                                                                                                                                                                                                                                               

E2EDP10                      1100000000000000001000005000004                     00001852481                                       

                       

E2EDP16                       1100000000000000001000006000005            000020120701  0                              00000000000000000000                                                                       

E2EDP16                       1100000000000000001000007000006            000020120801  0                              00000000000000000000                                                                       

E2EDP16                       1100000000000000001000008000007            000020120901  0                              00000000000000000000                                                                       

E2EDP16                       1100000000000000001000009000008            000020121001  0                              00000000000000000000                                                                       

E2EDP10                      1100000000000000001000010000009                     00007082366                                     

               

E2EDP16                       1100000000000000001000011000010            000020120701  0                              00000000000000000000                                                                       

E2EDP16                       1100000000000000001000012000011            000020120801  0                              00000000000000000000                                                                       

E2EDP16                       1100000000000000001000013000012            000020120901  0                              00000000000000000000                                                                       

E2EDP16                       1100000000000000001000014000013            000020121001  0                              00000000000000000000                                                                       

Returns me the error:       

<SAP:Stack>Runtime exception occurred during application mapping com/sap/xi/tf/_MM_DELFOR_SAP_IDOC_; com.sap.aii.mappingtool.tf7.IllegalInstanceException: Cannot create target element /DELFOR02/IDOC/E1EDK09/E1EDP10[2]/E1EDP16. Values missing in queue~</SAP:Stack>

I tried using SplitByValue, but he brings only the first structure E2EDP16, each E2EDP10. And discards the other items:

How do I treat these nodes to make the sequence?

Thanks ans regards,

Accepted Solutions (1)

Accepted Solutions (1)

Former Member
0 Kudos

Hi,

In source structure, E1EDP10 and E1EDP16 are two diff segements but in the target E1EDP16 comes under E1EDP10 segment?

On which conditions u want these 2 structures to be filled in target Idoc? Paste ur mapping here (but please make sure we can open the image)

Thanks

Amit Srivastava

Former Member
0 Kudos

Yes, In source structure, E1EDP10 and E1EDP16 are two diff segements but in the target E1EDP16 comes under E1EDP10 segment.

Follow:

Thanks.

Former Member
0 Kudos

I need that the target receives a E1EDP10 en E1EDP16, a E1EDP10 en E1EDP16 ....

As file below:

EDI_DC40  1100000000000000001702       DELFOR02                                                   

E2EDK09                       1100000000000000001000001000000  002006023566                                                                                                                                                                                      

E2EDKA1                       1100000000000000001000003000002                                                                                                                                                                                                                                                      

E2EDKA1                       1100000000000000001000004000003                                                                                                                                                                                  

E2EDP10                      1100000000000000001000005000004                                 

                      

E2EDP16                       1100000000000000001000006000005            000020120701  0                                                                            

E2EDP16                       1100000000000000001000007000006            000020120801  0                                                                                 

E2EDP16                       1100000000000000001000008000007            000020120901  0                                                                                               

E2EDP10                      1100000000000000001000010000009                                               

              

E2EDP16                       1100000000000000001000011000010            000020120701  0                                                                                           

E2EDP16                       1100000000000000001000012000011            000020120801  0                            

Former Member
0 Kudos

Hi,

Your mapping is not working because of ur structure...but i guess u wont change it due to FCC and there are some limitations with FCC when hierarchy increases.

So, to work with this structure there should be some unique identifier in E1EDP10 and its corresponding E1EDP16, which can help mapping  in identifying the correct iterations of E1EDP16 under E1EDP10.

or u can also try to use java mapping.

Thanks

Amit Srivastava

Former Member
0 Kudos

If identifier, which function I use?

Is there any example of Java Mapping?

Thank you!

Former Member
0 Kudos

Hi,

A very simple example will be something like this:

So u have to identify some unique value and then build ur mapping logic.

Tanks

Amit Srivastava

Former Member
0 Kudos

Hello, what you mapped in E1EDP16?

You changed the context of B?

Thanks for reply.

Former Member
0 Kudos

Sorry, Test success.

Is there any example of Java Mapping?

Thanks and regards.

Former Member
0 Kudos

Please, did some tests successfully.

 

When trying with a 2Mb file caught the error below:

        Cannot create target element /DELFOR02/IDOC/E1EDK09/E1EDP10[100]/E1EDP16. Values missing in queue context. Target XSD requires a value for this element, but the target-field mapping does not create one. Check whether the XML instance is valid for the source XSD, and whether the target-field mapping fulfils the requirement of the target XSD

See error logs for details    

Please, can you help me?

Former Member
0 Kudos

Hi,

Ur error is clearly saying that E1EDP16 segment is not getting created for the 100th occ. of E1EDP10.

Above, i had just mentioned an example, u have to discuss with the file creator and then identify the unique field.

Thanks

Amit Srivastava

Former Member
0 Kudos

Thanks for reply.

Exactly, the file was with diverging lines.

Please give me an example of Java Mapping for treatment of us or some other option?

Answers (3)

Answers (3)

Former Member
0 Kudos

Hi Thamir,

As a quick thing, you can change the File Content Conversion for the Source Structure.

As I have observed that Forecast can be the name of your RecordSet(Maybe you are already using)

To Simplify things you can use the following content conversion:

*Please change the occurence of Forecast from 1:1 to 1:unbounded.

(You can do the following in your current FCC as well)

What I am trying to achieve is to group E2EDP10 and its corresponding E2EDP16 segments

RecordSet -> Header1,*,Header2,*,Header3,*,Header4,1,ITEM,*

Header1(EDI_DC40 is the identifier)

-nodes

-nodes

-nodes

Header2(E2EDK09 is the identifier)

-nodes

-nodes

-nodes

Header3(E2EDKA1 is the identifier)

-nodes

-nodes

-nodes

Header4(E2EDP10 is the identifier)

-nodes

-nodes

-nodes

ITEM(E2EDP16 is the identifier)

-nodes

-nodes

-nodes

The above File Content Conversion will break the XML as Follows if I am right:

-RecordSet

--Header1(EDI_DC40 is the identifier)

---nodes

---nodes

---nodes

--Header2(E2EDK09 is the identifier)

---nodes

---nodes

---nodes

--Header3(E2EDKA1 is the identifier)

---nodes

---nodes

---nodes

--Header4(E2EDP10 is the identifier)

---nodes

---nodes

---nodes

--ITEM(E2EDP16 is the identifier)

---nodes

---nodes

---nodes

-RecordSet

--Header4(E2EDP10 is the identifier)

---nodes

---nodes

---nodes

--ITEM(E2EDP16 is the identifier)

---nodes

---nodes

---nodes

This may at least help you simplify which E2EDP16 segment goes under E2EDP10 segment.

I hope this Helps.

Thanks & Regards,

Tejas Bisen

Former Member
0 Kudos

Thanks for reply.

I ended up using an identifier.

Former Member
0 Kudos

Hello,

Try chnaging the context of E2EDP16 to the top node and then debug and see if values are coming properly or not. Anyhow i guess you need to apply split by value.

Regards

Former Member
0 Kudos

Thanks for reply.

I ended up using an identifier.

rajasekhar_reddy14
Active Contributor
0 Kudos

Hi,

you need to debug mapping by using display queue . it looks some values missing or mapping logic not correct.

remove split by value and map directly .

Regards,

Raj

Former Member
0 Kudos

I took the SplitByValue testing and direct the mapping already gives the error.

Can not create target element / DELFOR02/IDOC/E1EDK09/E1EDP10 [2] / E1EDP16. Values ​​missing in queue context. Target XSD requires a value for this element, but the target-field mapping does not create one. Check Whether the XML instance is valid for the source XSD, and Whether the target-field mapping fulfils the requirement of the target XSD See error logs for details.

Any idea?

rajasekhar_reddy14
Active Contributor
0 Kudos

are you sure source data has correctl data? while creating second E1EDP16 segement problem coming because no values.

what mapping u had done for E1EDP10?

Former Member
0 Kudos

My MT is show below:

<?xml version="1.0" encoding="utf-8" ?>

- <ns:MT_DELFOR xmlns:ns="http://com/Interfaces/SAP">

- <Forecast>

+ <E1EDK09>

+ <E1EDKA1>

+ <E1EDKA1>

+ <E1EDP10>

+ <E1EDP16>

+ <E1EDP16>

+ <E1EDP16>

+ <E1EDP16>

+ <E1EDP10>

+ <E1EDP16>

+ <E1EDP16>

+ <E1EDP16>

+ <E1EDP16>

</Forecast>

</ns:MT_DELFOR>