Sunday, January 26, 2014

IDOC to SAP and the hierarchy is all wrong?


In SAP, have you ever come across this scenario, sending an IDOC to SAP and the hierarchy is all wrong?

I am working on the ORDERS message to SAP.

Have a look below, my E1EDP01 Segment needs to have children beneath it, E1EDP02 is a child of E1EDP01, however it does not have this… 




This is what I need to see in SAP, however they are coming all below each other…. Why ??? 

 
 
I looked at the SAP schema in BizTalk, in particular:

DATAHEADERCOLUMN_SEGNUM   - The segment number of this element.
DATAHEADERCOLUMN_HLEVEL – The Hierarchy level of the element
DATAHEADERCOLUMN_PSGNUM – The parent Segment number


Now, you can try mapping to these, however all the documents say that on the inbound iDOC these are not important…

Well the truth is, on the outbound iDOC they are fully populated, and it’s quite nice to see when SAP sends it to you.

On the inbound, these are not required, the KEY is to look at the schema of the IDOC, it’s quite crucial.

Look at my NODE, first of all in the version of the iDOC, its called E2EDP01008, in SAP based on the data structure type, its E1EDP01. 


Look at the MAX occurs, it is just once and it MUST be there, however I have quite a few repeated here….

Look at its parent, it occurs 999999 times; which is enough, underneath the parent are all of the children nodes that were also repeating.


ONE Instance of the parent is for ONE item, and all the children related to that ONE item. It’s the parent that should be looping all of the items, however quite often some of the children do repeat, within EACH item.

For these you need to use table looping, or structure you source message to handle this correctly.

You need to focus  on making the mandatory fields match up and getting the data from various places to ensure this occurs.

These are the steps I followed, and had to work out, and I managed to get it to work, it needs to be followed exactly, once done the potential is endless.