Application Development Discussions
Join the discussions or start your own on all things application development, including tools and APIs, programming models, and keeping your skills sharp.
cancel
Showing results for 
Search instead for 
Did you mean: 

*EDI: Syntax error in IDoc (segment cannot be identified)*

Former Member
0 Kudos

Hi

My IDoc is failling dueto a syntax error. I have extended the standard IDoc INVOIC02 with the extension E1EDP01

but when I run the send idoc report

the structure (hierarchy) of the IDOC changes drastically with all segments

of the IDOC being at the same hierarchical level and also I get the message

below.

*****************************************

EDI: Syntax error in IDoc (segment cannot be identified)

Diagnosis

The segment E1EDP19 does not occur at the current level of the basic type INVOIC02 (extension ).

This error can have several reasons:

The segment E1EDP19 is assigned to a group whose header segment does not occur.

The segment E1EDP19 does not exist in the syntax description of the basic type INVOIC02 (extension ).

The sequence of segments in the group in which the segment appears is incorrect.

Previous errors ('mandatory' segment or group missing) may be due to this error.

*****************************************************

Can anyone help this issue..

Mohana

1 ACCEPTED SOLUTION

Former Member
0 Kudos

Hello,

The Segment E1EDP01 seems to be at the Delivery Item Level. So, if you have any extension for this Segment, add this as a Child Segment E1EDL20.

Secondly, the Exit which you are required to use for populating the IDoc Extension is EXIT_SAPLVEDF_002 in which you'll have to populate the Extended Segment and append it to the INT_EDIDD table.

You were getting the error because you are trying to populate the extended the Segment at a location where its parent is not being populated (E1EDP19). Check it again and it should be working fine.

Thanks and Regards,

Venkat Phani Prasad Konduri

9 REPLIES 9

Former Member
0 Kudos

HI,

goto WE30 and check your IDocType espacially Extension.

Look for your hierarchical structure.

You have to use this structure and the segment must be filled in this levelline.

1. look at the error segment definition if it is mandatory or not

2. be sure that each E1EDP01 has one E1EDP19 or the hierarchic structure is OK.

Go to WE19 and check it, too

Former Member
0 Kudos

Hi,

Looks like a issue in Extending the IDOC.......Go thru the hierarchies once again......Follow the sequence of IDOC Extension.......If feeling confused with the existing one......go with a fresh one...

Former Member
0 Kudos

Hello,

The Segment E1EDP01 seems to be at the Delivery Item Level. So, if you have any extension for this Segment, add this as a Child Segment E1EDL20.

Secondly, the Exit which you are required to use for populating the IDoc Extension is EXIT_SAPLVEDF_002 in which you'll have to populate the Extended Segment and append it to the INT_EDIDD table.

You were getting the error because you are trying to populate the extended the Segment at a location where its parent is not being populated (E1EDP19). Check it again and it should be working fine.

Thanks and Regards,

Venkat Phani Prasad Konduri

0 Kudos

Anyone plz help this issue

0 Kudos

Mohana,

try to post your IDoc structure and your posted IDoc structure.

0 Kudos

Hi..The below is my source code..can anyone help this issue.

data: lv_matkl like mara-matkl, lv_matnr like mara-matnr.

data: lv_ean11 like mara-ean11, lv_psgnum like edidd-psgnum.

if control_record_out-rcvpor = 'CAREFOR_SE'.

*First Delete E1EDP19 Segment with SalesUnit EAN Number

loop at int_edidd where segnam = 'E1EDP19'.

clear: *e1edp19, lv_tabix.

lv_tabix = sy-tabix.

move int_edidd-sdata to *e1edp19.

if *e1edp19-qualf = '003'.

delete int_edidd index lv_tabix.

endif.

endloop.

*Find Parent Segment, and Populate Material Group

loop at int_edidd where segnam = 'E1EDP01'.

clear: *e1edp01, *e1edp19, lv_psgnum, lv_matkl, lv_tabix, lv_matnr, lv_ean11.

lv_tabix = sy-tabix.

lv_psgnum = int_edidd-segnum.

move int_edidd-sdata to *e1edp01.

read table xtvbdpr with key posnr = *e1edp01-posex.

if sy-subrc eq 0.

lv_matnr = xtvbdpr-matnr.

endif.

CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT'

EXPORTING

INPUT = lv_matnr

IMPORTING

OUTPUT = lv_matnr.

select single matkl ean11 into (lv_matkl,lv_ean11)

from mara

where matnr = lv_matnr.

if sy-subrc eq 0.

*e1edp01-matkl = lv_matkl.

move *e1edp01 to int_edidd-sdata.

modify int_edidd index lv_tabix.

endif.

*Add E1EDP19-003 Segment with BaseUnit EAN Number

if lv_ean11 is not initial.

*e1edp19-qualf = '003'.

*e1edp19-idtnr = lv_ean11.

int_edidd-sdata = *e1edp19.

int_edidd-segnam = 'E1EDP19'.

append int_edidd.

clear int_edidd.

endif.

endloop.

endif.

0 Kudos

hi,

i think you have an issue with your "add e1edp19" after e1edp01 modify.

what about your segmentnumber ? (segnum) this must be sorted after addition of a new segment.

example:

segnum 1 = e1edp01

segnum 2 = e1edp19

segnum 3 = e1edp19 (003)

segnum 4 = e1edp01

segnum 5 = e1edp19 (new added).

if you delete segnum3 (cause of qualifier = 003), then you have to use Segnum 3 for Segnum 4.

OK, After your edidd is complete, make a new segnum sort like this:

loop at edidd assigning <edidd>.

<edidd>-segnum = sy-tabix.

endloop.

Give me your EDIDD Table entries.

former_member125661
Contributor
0 Kudos

I am guessing, the order of these segments are not proper.

0 Kudos

Hi,

Maximum times the problem is that we assign basic type to partner number during the time of configuration but after creating the extension we forget to assign the extension to the partner number thinking that we have already completed the configuration so this is the problem assign extension to the partner number and it will work out.

Thanks & Regards,

Kotni Srikant