2009 Nov 13 4:59 PM
HI,
I am trying to populate segment, looping through the segment but same segment exists twice with same qualifier. But it always gets first qualifier.
Example code,
LOOP at edidd_table INTO WA_IDOC_DATA WHERE SEGNAM = 'E1EDP02' .
IF WA_IDOC_DATA-SDATA+0(3) = '010'.
TEXT1 = WA_IDOC_DATA-SDATA+3(10).
ELSEIF WA_IDOC_DATA-SDATA+0(3) = '071'.
TEXT3 = WA_IDOC_DATA-SDATA+3(100).
ENDIF.
LOOP at edidd_table INTO WA_IDOC_DATA WHERE SEGNAM = 'E1IDKU3'.
WA_IDOC_DATA-SDATA+130(50) = TEXT1.
WA_IDOC_DATA-SDATA+394(30) = TEXT2.
WA_IDOC_DATA-SDATA+262(50) = TEXT3.
MODIFY EDIDD_TABLE FROM WA_IDOC_DATA.
ENDLOOP.
ENDLOOP.
In aboce code it gets value for first '071' (QUALIF) but second segment with same '071'(QUALIF) it's not getting that value at all.
Can someone help me how to get that value .
Thanks a lot.
2009 Nov 13 9:06 PM
It always get only the first one because you are doing nested and the sort sequence of edidd_table.
normally in Idoc, loop and case will be used. Can you try this? With proper sequence in internal table edidd_table. it will work.
LOOP at edidd_table INTO WA_IDOC_DATA.
case WA_IDOC_DATA-SEGNAM.
WHEN 'E1EDP02'.
IF WA_IDOC_DATA-SDATA+0(3) = '010'.
TEXT1 = WA_IDOC_DATA-SDATA+3(10).
ELSEIF WA_IDOC_DATA-SDATA+0(3) = '071'.
TEXT3 = WA_IDOC_DATA-SDATA+3(100).
ENDIF.
WHEN 'E1IDKU3'.
WA_IDOC_DATA-SDATA+130(50) = TEXT1.
WA_IDOC_DATA-SDATA+394(30) = TEXT2.
WA_IDOC_DATA-SDATA+262(50) = TEXT3.
MODIFY EDIDD_TABLE FROM WA_IDOC_DATA.
ENDCASE.
ENDLOOP.
cheers,
chaiphon
HI,
I am trying to populate segment, looping through the segment but same segment exists twice with same qualifier. But it always gets first qualifier.
Example code,
LOOP at edidd_table INTO WA_IDOC_DATA WHERE SEGNAM = 'E1EDP02' .
IF WA_IDOC_DATA-SDATA+0(3) = '010'.
TEXT1 = WA_IDOC_DATA-SDATA+3(10).
ELSEIF WA_IDOC_DATA-SDATA+0(3) = '071'.
TEXT3 = WA_IDOC_DATA-SDATA+3(100).
ENDIF.
LOOP at edidd_table INTO WA_IDOC_DATA WHERE SEGNAM = 'E1IDKU3'.
WA_IDOC_DATA-SDATA+130(50) = TEXT1.
WA_IDOC_DATA-SDATA+394(30) = TEXT2.
WA_IDOC_DATA-SDATA+262(50) = TEXT3.
MODIFY EDIDD_TABLE FROM WA_IDOC_DATA.
ENDLOOP.
ENDLOOP.
In aboce code it gets value for first '071' (QUALIF) but second segment with same '071'(QUALIF) it's not getting that value at all.
Can someone help me how to get that value .
Thanks a lot.
2009 Nov 13 9:06 PM
It always get only the first one because you are doing nested and the sort sequence of edidd_table.
normally in Idoc, loop and case will be used. Can you try this? With proper sequence in internal table edidd_table. it will work.
LOOP at edidd_table INTO WA_IDOC_DATA.
case WA_IDOC_DATA-SEGNAM.
WHEN 'E1EDP02'.
IF WA_IDOC_DATA-SDATA+0(3) = '010'.
TEXT1 = WA_IDOC_DATA-SDATA+3(10).
ELSEIF WA_IDOC_DATA-SDATA+0(3) = '071'.
TEXT3 = WA_IDOC_DATA-SDATA+3(100).
ENDIF.
WHEN 'E1IDKU3'.
WA_IDOC_DATA-SDATA+130(50) = TEXT1.
WA_IDOC_DATA-SDATA+394(30) = TEXT2.
WA_IDOC_DATA-SDATA+262(50) = TEXT3.
MODIFY EDIDD_TABLE FROM WA_IDOC_DATA.
ENDCASE.
ENDLOOP.
cheers,
chaiphon