Skip to Content

Mapping Problem SAP PI 7.1

Hello!

I am struggling with a sales order mapping:

My source and target structure:

My source data (just the content of fields KdNr, Auftrag, Posnr, Artnr, Liefermenge as an example):

01,1000,1,100,A,10

02,1001,1,100,A,10     -> KdNr "02" and Auftrag "1001"

02,1001,2,200,B,10     -> also KdNr "02" and Auftrag "1001" but pos. 2 of the order

03,1002,1,100,A,10

04,1003,1,100,A,10

05,1004,1,100,A,10

My goal:

a) 1 Recordset per KdNr (customer number) and

b) if a source Recordset has 2 or more positions (like 02,1001,1,100,A,10 and 02,1001,2,200,B,10) these positions should be mapped together in one Recordset in the target message.

So the output should be:

Recordset 1 with 1 position

Recordset 2 with 2 positions

Recordset 3 with 1 position

Recordset 4 with 1 position

Recordset 5 with 1 position

Does anyone know how to solve this problem? 😕

Thanks in advance and all the best for 2015!

Regards

Christian

Add comment
10|10000 characters needed characters exceeded

  • Get RSS Feed

2 Answers

  • Dec 30, 2014 at 05:02 PM

    Hi Christian,

    You can try below mapping.

    Apply a remove context on kdNR and Auftrag -> concat->sort>split by value(value change) -> collapse context -> recordset(Target)

    For the fields under recordset :

    You have to use sort by key(after concat from the above logic) and format by example

    For Position :

    position(source)-> remove context ->

                                                 formatebyexample     -> position (target)

    Recorset mapping ->

    For fields under Position :

    Similar to the fields under Recordset.

    Let me know if it is not clear, will try and share some screenshots whenever i can.

    Add comment
    10|10000 characters needed characters exceeded

  • avatar image
    Former Member
    Jan 02, 2015 at 01:07 PM

    Hello Christian,

    Happy new year to you too..

    Regarding your issue:

    a) 1 Recordset per KdNr (customer number) and

    For achieving this you can use use one as many node fuction.Means you can produce as many recordset as there are kdnr.

    b) if a source Recordset has 2 or more positions (like 02,1001,1,100,A,10 and 02,1001,2,200,B,10) these positions should be mapped together in one Recordset in the target message.

    For achieving this you can compare kdnr of diff recordset and if values are same then you use collapse context function and produce result.


    Hope this helps!!!!


    Regards

    Naveen

    Add comment
    10|10000 characters needed characters exceeded