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: 

Logic for IDOC_DATA table updation in a loop

Former Member
0 Kudos

Hi All,

Can any body give me the logic for modification of IDOC_DATA table in a loop.

LOOP AT IDOC_DATA.

CASE IDOC_DATA-SEGNAM.

WHEN SEGMENT1.

............................. Some Code

WHEN SEGMENT2.

SEGMENT2 = IDOC_DATA-SDATA.

SEGMENT2-akont = c_akont.

move c_e1 to SEGMENT2-akont+6(2).

  • Here SEGMENT2 is modified

  • Now i want to write a code to modify IDOC_DATA here

  • Can anybody tell me the logic to update IDOC_DATA table for that particular

  • segment

ENDCASE.

ENDLOOP.

Can anybody provide the statements for the same.

I want to write below code in that place:

<b>MOVE SEGMENT2 TO idoc_data-sdata.

MODIFY idoc_data TRANSPORTING sdata.</b>

Can anybody clarify whether above statements are correct (or) any changes required?

Thanks in advance.

Thanks,

Deep.

1 ACCEPTED SOLUTION

ferry_lianto
Active Contributor
0 Kudos

Hi,

Please try this.


DATA: ZSEGMENT2 LIKE SEGMENT2.

LOOP AT IDOC_DATA.
  CASE IDOC_DATA-SEGNAM.
     WHEN SEGMENT1.
        ...
 
     WHEN SEGMENT2.
       MOVE IDOC_DATA-SDATA TO ZSEGMENT2.
       MOVE C_AKONT TO ZSEGMENT2-AKONT.
       MOVE C_E1 TO ZSEGMENT2-AKONT+6(2).
       MOVE ZSEGMENT2 TO IDOC_DATA-SDATA.
       MODIFY IDOC_DATA.
 
  ENDCASE.
ENDLOOP.

Regards,

Ferry Lianto

3 REPLIES 3

Former Member
0 Kudos

hi,

Yes u r correct as per the existing code u provided.

revrt back if any issues,

Regards,

Naveen

Former Member
0 Kudos

Hi,

Store the index in a temporary variable and modify the internal table using the index..

LOOP AT IDOC_DATA.

V_TABIX = SY-TABIX. " Naren changes

CASE IDOC_DATA-SEGNAM.

WHEN SEGMENT1.

............................. Some Code

WHEN SEGMENT2.

SEGMENT2 = IDOC_DATA-SDATA.

SEGMENT2-akont = c_akont.

move c_e1 to SEGMENT2-akont+6(2).

  • Here SEGMENT2 is modified

  • Now i want to write a code to modify IDOC_DATA here

  • Can anybody tell me the logic to update IDOC_DATA table for that particular

  • segment

MODIFY IDOC_DATA INDEX V_TABIX TRANSPORTING SDATA. " Naren changes

ENDCASE.

ENDLOOP.

Thanks

Naren

ferry_lianto
Active Contributor
0 Kudos

Hi,

Please try this.


DATA: ZSEGMENT2 LIKE SEGMENT2.

LOOP AT IDOC_DATA.
  CASE IDOC_DATA-SEGNAM.
     WHEN SEGMENT1.
        ...
 
     WHEN SEGMENT2.
       MOVE IDOC_DATA-SDATA TO ZSEGMENT2.
       MOVE C_AKONT TO ZSEGMENT2-AKONT.
       MOVE C_E1 TO ZSEGMENT2-AKONT+6(2).
       MOVE ZSEGMENT2 TO IDOC_DATA-SDATA.
       MODIFY IDOC_DATA.
 
  ENDCASE.
ENDLOOP.

Regards,

Ferry Lianto