Application Development and Automation 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: 
Read only

Populate IDOC segment with same qualifier twice...

Former Member
0 Likes
680

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.

1 ACCEPTED SOLUTION
Read only

chaiphon
Contributor
0 Likes
511

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.

1 REPLY 1
Read only

chaiphon
Contributor
0 Likes
512

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