cancel
Showing results for 
Search instead for 
Did you mean: 

Need Help in Mapping

Former Member
0 Kudos

Hi Experts,

I am doing outbound scenario IDoc(invoic.invoice05) to file. in that based on the material number and ID we should replicate the target structure. To pass the material only for those which has the ID associated with it that mean we should create that many records in target side.

Source structure fields,

E1EDP01        0..Unbound

    Z1EDPM1    0..Unbound

        ID             1...1

    E1EDP02      0..Unbound

        Mterail Number  1..1

Trget Structure is

RequestMessages>       1..1

  <RequestMessage>     1..Unbound

<Searchcriterias>            1..1

           <SearchCriteria>  1..Unbound

                 <ID>

                 <Mterail Number>

To pass the material only for those which has the ID associated with it.

ex:

Material

ID

1

A1

A2

2

B1

B2

B3

3

expected output xml should be

RequestMessages>    

  <RequestMessage>   

        <Searchcriterias>          

               <SearchCriteria>

                     <ID>A1</ID>

                     <Mterail Number>1</Mterail Number>

                  </SearchCriteria>

                <SearchCriteria>

                      <ID>A2</ID>

                     <Mterail Number>1</Mterail Number>

                  </SearchCriteria>

            </Searchcriterias>  

   </RequestMessage>

<RequestMessage>   

        <Searchcriterias>          

               <SearchCriteria>

                     <ID>B11</ID>

                     <Mterail Number>2</Mterail Number>

                 </SearchCriteria>

                <SearchCriteria>

                      <ID>B2</ID>

                     <Mterail Number>2</Mterail Number>

                  </SearchCriteria>

                  <SearchCriteria>

                      <ID>B3</ID>

                      <Mterail Number>2</Mterail Number>

                  </SearchCriteria>

            </Searchcriterias>  

   </RequestMessage>

This how target is expecting how to handle the context? Please help me on this and highly appreciated for your help.

Regards,

Sanjay.

Accepted Solutions (1)

Accepted Solutions (1)

gagandeep_batra
Active Contributor
0 Kudos

you can use "USEONEASMANY" function for that

& can you post ur source XML also for batter clearance

Regards

Gagan

Former Member
0 Kudos

Hi Gagandeep,

Thaks for prompt reply,

Below given the source xml,

<E1EDP01>

     <Z1EDPM1>

            <ID>A1</ID>

      </Z1EDPM1>

      <Z1EDPM1>

            <ID>A2</ID>

      </Z1EDPM1>

     <E1EDP02>

        <MterailNuber>1</MaterilaNumber>

      </E1EDP02>

<E1EDP01>

<E1EDP01>

     <Z1EDPM1>

            <ID>B1</ID>

      </Z1EDPM1>

      <Z1EDPM1>

            <ID>B2</ID>

      </Z1EDPM1>

     <Z1EDPM1>

            <ID>B3</ID>

      </Z1EDPM1>

      <E1EDP02>

        <MterailNuber>2</MaterilaNumber>

      </E1EDP02>

<E1EDP01>

<E1EDP01>

     <Z1EDPM1>

            <ID></ID>

      </Z1EDPM1>

      <E1EDP02>

        <MterailNuber>3</MaterilaNumber>

      </E1EDP02>

<E1EDP01>

Best Regards,

Sanjay.

former_member184789
Active Contributor
0 Kudos

Hi,

As Gagandeep already pointed out, a UseoneAsMany will  help as you want to replicate E1EDP02-Material No. as many times as E1EDPM1-ID.

Former Member
0 Kudos

Hi Adarsh,

I should check both Matrerail numbe and ID as well. if ID is not there we dont need to cretae the Record.

Best Regards,

Sanjay.

former_member184789
Active Contributor
0 Kudos

Hi,

Then have a condition that if ID exists then map the fields using an ifWithoutElse condition. It will be like:

ID exists->IfWithoutElse->Then E1EDP02-Material->UseOneasMany(replicated as many times as ID)-> Target

gagandeep_batra
Active Contributor
0 Kudos

Hi Sanjay

Check below:

Source:

---------------------------------------

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

<ns0:MT_Mat xmlns:ns0="http://abcde.com/xi/FccTestEmp">

   <E1EDP01>

      <Z1EDPM1>

         <ID>A1</ID>

      </Z1EDPM1>

      <Z1EDPM1>

         <ID>A2</ID>

      </Z1EDPM1>

      <E1EDP02>

         <MatNumber>1</MatNumber>

      </E1EDP02>

   </E1EDP01>

   <E1EDP01>

      <Z1EDPM1>

         <ID>B1</ID>

      </Z1EDPM1>

      <Z1EDPM1>

         <ID>B2</ID>

      </Z1EDPM1>

      <Z1EDPM1>

         <ID>B3</ID>

      </Z1EDPM1>

      <E1EDP02>

         <MatNumber>2</MatNumber>

      </E1EDP02>

   </E1EDP01>

   <E1EDP01>

      <E1EDP02>

         <MatNumber>3</MatNumber>

      </E1EDP02>

   </E1EDP01>

   <E1EDP01>

      <Z1EDPM1>

         <ID>C1</ID>

      </Z1EDPM1>

      <Z1EDPM1>

         <ID>C2</ID>

      </Z1EDPM1>

      <Z1EDPM1>

         <ID>C3</ID>

      </Z1EDPM1>

      <E1EDP02>

         <MatNumber>5</MatNumber>

      </E1EDP02>

   </E1EDP01>

   <E1EDP01>

      <E1EDP02>

         <MatNumber>4</MatNumber>

      </E1EDP02>

   </E1EDP01>

</ns0:MT_Mat>

-----------------------

Target what i got

-----------------

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

<ns0:MT_Mat_Recv xmlns:ns0="http:abcde.com/xi/FccTestEmp"><RequestMessage><Searchcriterias><SearchCriteria><ID>A1</ID><MatNumber>1</MatNumber></SearchCriteria><SearchCriteria><ID>A2</ID><MatNumber>1</MatNumber></SearchCriteria></Searchcriterias></RequestMessage><RequestMessage><Searchcriterias><SearchCriteria><ID>B1</ID><MatNumber>2</MatNumber></SearchCriteria><SearchCriteria><ID>B2</ID><MatNumber>2</MatNumber></SearchCriteria><SearchCriteria><ID>B3</ID><MatNumber>2</MatNumber></SearchCriteria></Searchcriterias></RequestMessage><RequestMessage><Searchcriterias><SearchCriteria><ID>C1</ID><MatNumber>5</MatNumber></SearchCriteria><SearchCriteria><ID>C2</ID><MatNumber>5</MatNumber></SearchCriteria><SearchCriteria><ID>C3</ID><MatNumber>5</MatNumber></SearchCriteria></Searchcriterias></RequestMessage></ns0:MT_Mat_Recv>

____________________________________________________________

Regards

gAGan

Former Member
0 Kudos

Hi Gagan,

Great..now got the output what i am expecting.

Thanks so much for your help.

Best Regards,

Sanjay.

Answers (1)

Answers (1)

rcsegovia
Active Participant
0 Kudos