cancel
Showing results for 
Search instead for 
Did you mean: 

Graphical mapping question

Former Member
0 Kudos

Hi gurus,

following response message come to me from webservice

<RESPONSE>

     <HEADER>

         <ITEM_HEADER>

             <ITEM_ID>10001</ITEM_ID>

             <ITEM_CODE>AAA</ITEM_CODE>

         </ITEM_HEADER>

         <ITEM_HEADER>

             <ITEM_ID>10002</ITEM_ID>

             <ITEM_CODE>BBB</ITEM_CODE>

         </ITEM_HEADER>

         <ITEM_HEADER>

             <ITEM_ID>10003</ITEM_ID>

             <ITEM_CODE>CCC</ITEM_CODE>

         </ITEM_HEADER>

         <ITEM_HEADER>

             <ITEM_ID>10004</ITEM_ID>

             <ITEM_CODE>DDD</ITEM_CODE>

         </ITEM_HEADER>

     </HEADER>

     <DETAIL>

         <ITEM_DETAIL>

             <ITEM_CODE>AAA</ITEM_CODE>

             <ITEM_VALUE>A10</ITEM_VALUE>

         </ITEM_DETAIL>

         <ITEM_DETAIL>

             <ITEM_CODE>AAA</ITEM_CODE>

             <ITEM_VALUE>A20</ITEM_VALUE>

         </ITEM_DETAIL>

         <ITEM_DETAIL>

             <ITEM_CODE>AAA</ITEM_CODE>

             <ITEM_VALUE>A30</ITEM_VALUE>

         </ITEM_DETAIL>

         <ITEM_DETAIL>

             <ITEM_CODE>CCC</ITEM_CODE>

             <ITEM_VALUE>C10</ITEM_VALUE>

         </ITEM_DETAIL>

         <ITEM_DETAIL>

             <ITEM_CODE>CCC</ITEM_CODE>

             <ITEM_VALUE>C20</ITEM_VALUE>

         </ITEM_DETAIL>

         <ITEM_DETAIL>

             <ITEM_CODE>DDD</ITEM_CODE>

             <ITEM_VALUE>D10</ITEM_VALUE>

         </ITEM_DETAIL>

         <ITEM_DETAIL>

             <ITEM_CODE>DDD</ITEM_CODE>

             <ITEM_VALUE>D20</ITEM_VALUE>

         </ITEM_DETAIL>

         <ITEM_DETAIL>

             <ITEM_CODE>DDD</ITEM_CODE>

             <ITEM_VALUE>D30</ITEM_VALUE>

         </ITEM_DETAIL>

         <ITEM_DETAIL>

             <ITEM_CODE>DDD</ITEM_CODE>

             <ITEM_VALUE>D40</ITEM_VALUE>

         </ITEM_DETAIL>

     </DETAIL>

</RESPONSE>

This should be summarized in a structure below;

<RESPONSE>

     <HEADER_DETAIL>

         <GRUOP>

             <ITEM>

                 <ITEM_ID>10001</ITEM_ID>

                 <ITEM_CODE>AAA</ITEM_CODE>

                 <ITEM_VALUE>A10</ITEM_VALUE>

             </ITEM>

             <ITEM>

                 <ITEM_ID>10001</ITEM_ID>

                 <ITEM_CODE>AAA</ITEM_CODE>

                 <ITEM_VALUE>A20</ITEM_VALUE>

             </ITEM>

             <ITEM>

                 <ITEM_ID>10001</ITEM_ID>

                 <ITEM_CODE>AAA</ITEM_CODE>

                 <ITEM_VALUE>A30</ITEM_VALUE>

             </ITEM>

         </GRUOP>

         <GRUOP>

             <ITEM>

                 <ITEM_ID>10003</ITEM_ID>

                 <ITEM_CODE>CCC</ITEM_CODE>

                 <ITEM_VALUE>C10</ITEM_VALUE>

             </ITEM>

             <ITEM>

                 <ITEM_ID>10003</ITEM_ID>

                 <ITEM_CODE>CCC</ITEM_CODE>

                 <ITEM_VALUE>C20</ITEM_VALUE>

             </ITEM>

             <ITEM>

                 <ITEM_ID>10003</ITEM_ID>

                 <ITEM_CODE>CCC</ITEM_CODE>

                 <ITEM_VALUE>C30</ITEM_VALUE>

             </ITEM>

         </GRUOP>

         <GRUOP>

             <ITEM>

                 <ITEM_ID>10004</ITEM_ID>

                 <ITEM_CODE>DDD</ITEM_CODE>

                 <ITEM_VALUE>D10</ITEM_VALUE>

             </ITEM>

             <ITEM>

                 <ITEM_ID>10004</ITEM_ID>

                 <ITEM_CODE>DDD</ITEM_CODE>

                 <ITEM_VALUE>D20</ITEM_VALUE>

             </ITEM>

             <ITEM>

                 <ITEM_ID>10004</ITEM_ID>

                 <ITEM_CODE>DDD</ITEM_CODE>

                 <ITEM_VALUE>D30</ITEM_VALUE>

             </ITEM>

             <ITEM>

                 <ITEM_ID>10004</ITEM_ID>

                 <ITEM_CODE>DDD</ITEM_CODE>

                 <ITEM_VALUE>D40</ITEM_VALUE>

             </ITEM>

         </GRUOP>

     </HEADER_DETAIL>

</RESPONSE>

value "10002" has no Item_value, therefore it should be ignored. can anyone assist me? Thank you

Accepted Solutions (1)

Accepted Solutions (1)

Muniyappan
Active Contributor
0 Kudos

Hi Peter,

i am assuming you will always get the data in above mentioned style.

check if this helps you.

input and output message

mapping

udf

var1--  ITEM_CODE (segment   <ITEM_HEADER>)

var2--  ITEM_CODE (segment   <ITEM_DETAIL>)

var3-- ITEM_ID (segment   <ITEM_HEADER>)

display queue for ITEM_ID.

Results

Regards,

Muniyappan.

Answers (1)

Answers (1)

Former Member
0 Kudos

Hi,

Here what you can do -

1. <ITEM_CODE> -> (Split By, value change) -> <GRUOP>

This will create GROUP segment for each unique ITEM_CODE

2. Map <ITEM_CODE> and <ITEM_VALUE> to corresponding target fields

3. Check for ITEM_CODE from Header and Detail segments and map it to target segment using IFELSE function.

Thanks

Amol

Former Member
0 Kudos

3. Check for ITEM_CODE from Header and Detail segments and map it to target segment using IFELSE function.

could you please explain in more detail?

former_member184789
Active Contributor
0 Kudos

Hi Peter,

Using ifwithoutElse when the field ITEM CODE in ITEM_DETAIL segment say AAA is equal to the value of field ITEM_CODE in segment <ITEM_HEADER> then map the source field ITEM_ID to target field ITEM_ID. For example in your source:

<HEADER>

         <ITEM_HEADER>

             <ITEM_ID>10001</ITEM_ID>

             <ITEM_CODE>AAA</ITEM_CODE>

         </ITEM_HEADER>

         <ITEM_HEADER>

     </HEADER>

     <DETAIL>

         <ITEM_DETAIL>

             <ITEM_CODE>AAA</ITEM_CODE>

             <ITEM_VALUE>A10</ITEM_VALUE>

         </ITEM_DETAIL>

         <ITEM_DETAIL>

             <ITEM_CODE>AAA</ITEM_CODE>

             <ITEM_VALUE>A20</ITEM_VALUE>

Here you can compare when ITEM_CODE in ITEM_DETAIL  has value AAA with ITEM_VALUES A10 & A20,you can match from segment above i.e

<ITEM_HEADER>

<ITEM_ID>10001</ITEM_ID>

             <ITEM_CODE>AAA</ITEM_CODE>

Try doing it with ifWithoutElse function. If it doesn't work, then you can have a small UDF like below. I haven't tested it properly, but it will give you an idea:

Inputs: ITEM_CODE in segment<ITEM_DETAIL> as 1st input say var1

Execution Type:All values of queue

ITEM_ID in segment   <ITEM_HEADER> as 2nd inputsay var2
ITEM_CODE in segment   <ITEM_HEADER>   as 3rd inputsay var3

for(int i =0;i<var1.length;i++)

{

for(int u = 0;u<var2.length;u++)

{

if(var1[i]==var3[u])

result.addValue(var2[u]);

break;

}

}