cancel
Showing results for 
Search instead for 
Did you mean: 

Problem in IDoc administrative segments while converting IDoc text to IDoc xml

former_member195202
Participant
0 Kudos

Hi Experts,

I am using file channel in PI for converting IDoc flat file into xml. I am using the standard module SAP_XI_IDOC/IDOCFlatToXmlConvertor.

The problem is with IDoc administrative segment which is 63 character long as described below:

Segment name (30) + SAP client (3) + IDoc number (16) + number of SAP segments (6) + Number of the hierarchically higher SAP segment (6) +

+ Hierarchy level (2)  = 63 chars.

Segment name, SAP client, IDoc number is fine. But I need to understand the functionality of 4th and 5th part in the above distribution.

number of SAP segment (excluding the header) --> If I generate an IDoc flat file, this 6 char field is generated as 000001, 000002, 000003 and so on ..

EDI_DC40  1200000000006044381731 3012  OILMAT05                ZZIFS_OILMAT05          ZSD_OILMAT                           ZSD_OISAPPDLLS  PDLCLNT120                                                                                     SAPIDS001 LS  DDSUD000                                                                                       20141009143818                                                                                                          20141008121507
E2MARAM007              120000000000604438100000100000002N  1000040     20100408      20140922                      ZFER 15121500             EA                                                                                                                                      199.040 183.040 KG 208.000 0002                                                                    0.000   0.000   0.000                                                                                                        999                                                                                                                                                              2                                                                                                                                                                              
E2OILMA001              120000000000604438100000200000103        
E2MAKTM001              120000000000604438100000300000103   4Visco 2000 A3/B3 15W-40, 208L E4  
E2MAKTM001              120000000000604438100000400000103   DVisco 2000 A3/B3 15W-40, 208L E4  
E2MAKTM001              120000000000604438100000500000103   EVisco 2000 A3/B3 15W-40, 208L E4  
E2MAKTM001              120000000000604438100000600000103   FVisco 2000 A3/B3 15W-40, 208L E4  
E2MAKTM001              120000000000604438100000700000103   GVisco 2000 A3/B3 15W-40, 208L E4  

So I expected that same way I could keep it in the IDoc text file which I have to convert into IDoc xml but this is creating a problem. I am not sure what should be correct pattern if I wish to create a file same way as I got from the standard output for IDoc text.If I keep the fields as 000001, 00002, 000003,

I get an error that IDoc could not be parsed properly by the sender channel.

For example, the following file is not read by the channel

EDI_DC40  1201000000000123456413 9011  SHPMNT05                SHPMNT05      SHPADV                  SUD    SHPADVSAPIIVLS  Z4ECLN100 Barloworld                                                                           A000000026LS  IIVCLNT001                                                                                     20141014164458                                                                                                          20141014164458
E2EDT20002              12010000000001234560000010000000112345678900002  301 01ABC123                                                                                                                                                                                                                                                                                            
E2EDL20003              12010000000001234560000020000000200001005559876BNMK                            CIFDE STADT                    01                                                                                                                         14401005                                                        20141014     
E2EDL21                 120100000000012345600000300000002LF                                            
E2EDT13001              120100000000012345600000400000002010                  20141014                    20141014                                                                            
E2EDL24007              120100000000012345600000500000001000010146AF4                        E4-PE46XC-205l                                                                          AX  SEKRABC54321  CASTROL ANVOL PE 46 XC8.000                      EA 1853.200 1982.000 KGM                             00020002 05                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          

If I keep some random values for 000001, 000002,000003, 000004 ...in above file (say 000001, 000004, 000006, 000009...), then the file is processed successfully (Idoc text to IDoc xml).

Am I doing something wrong here ?

Thanks,

Ravi.

Accepted Solutions (1)

Accepted Solutions (1)

engswee
Active Contributor
0 Kudos

Hi Ravi

IDoc flat files can be generated correctly via standard SAP techniques (using file port in ECC or using module in PI.) Just to clarify - are you generating the IDoc flat file manually via some custom programming? If yes, any particular reason for doing so?

Anyway, to answer your queries:-

  • Number of SAP segment = Just a running number starting from 000001 for first segment and increments by one for each segment after
  • Number of hierarchically higher SAP segment = States the parent segment number that this current segment belongs to

As IDocs are hierarchical objects dependent on their definition, it is very important that the parent segment is set correctly to match the definition.

Using your example above, here is an explanation of the numbering. E2MARAM007 is at the root of the IDoc, which the rest of the segments are under it directly.

However, for your SHPMNT05 file, all the parent segments are 000000, which means all are at the same level at the root. This is not correct if validated against SHPMNT05 definition, E2EDL2 should be under E2EDT2, etc, etc.

If you are generating this manually, you will need to make sure to set the parent segment number correctly based on definition.

Rgds

Eng Swee

former_member195202
Participant
0 Kudos

Hi Eng Swee,

Many thanks for your reply. I will check if this was the problem. Will get back soon

Thanks,

Ravi.

former_member195202
Participant
0 Kudos

Hi Eng Swee,

I was correcting the file sent by a third party and it had the relationship problem as I stated. I was able to parse the file correctly and understood the rule. Thanks for your help. I have marked your answer as the correct one

Cheers.

Ravi.

engswee
Active Contributor
0 Kudos

Good to know your issue has been resolved!

Answers (0)