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: 

looping...

Former Member
0 Kudos

Hi all,

i wish to loop thr my it_bseg and it_bkpf table...so that it will firstly read its text from PO table and then update the record into the FI table.But my printout result has two duplicate so i reckon that my loop statement is wrong..

SELECT * FROM ekpo INTO TABLE it_ekpo
  WHERE ebeln in p_ebeln AND ebelp in p_ebelp.



  SELECT * FROM bseg INTO TABLE it_bseg
  WHERE belnr in p_belnr AND bukrs in p_bukrs AND gjahr in p_gjahr.


  IF it_bseg[] IS NOT INITIAL.
SELECT TXZ01 FROM EKPO INTO CORRESPONDING FIELDS OF it_bseg
WHERE EBELN = BSEG-EBELN AND
EBELP = BSEG-EBELP.

IF SY-SUBRC EQ 0.
BSEG-SGTXT = EKPO-TXZ01.
ENDIF.
ENDSELECT.

  LOOP AT it_ekpo INTO it_ekpo.
LOOP AT it_bseg INTO it_bseg WHERE
BUKRS in p_bukrs AND
BELNR in p_belnr AND
GJAHR in p_gjahr.
MOVE it_ekpo-txz01 TO it_bseg-sgtxt.
MODIFY it_bseg FROM it_bseg TRANSPORTING sgtxt.
ENDLOOP.
 WRITE:/ it_bseg-belnr, it_bseg-gjahr, it_bseg-sgtxt, it_ekpo-ebeln.
ENDLOOP.
WRITE:/ it_bseg-belnr, it_bseg-gjahr, it_bseg-sgtxt, it_ekpo-ebeln.



  MODIFY bseg FROM TABLE it_bseg.
  COMMIT WORK.

ENDIF.
  IF sy-subrc EQ 0.
    WRITE:/3 'BSEG TABLE UPDATED SUCCESSFULLY WITH TEXT'.
  ENDIF.

1 ACCEPTED SOLUTION

Former Member
0 Kudos

Try coding as below -

SELECT * FROM ekpo INTO TABLE it_ekpo

WHERE ebeln in p_ebeln AND ebelp in p_ebelp.

SELECT * FROM bseg INTO TABLE it_bseg

WHERE belnr in p_belnr AND bukrs in p_bukrs AND gjahr in p_gjahr.

LOOP AT it_ekpo INTO it_ekpo.

LOOP AT it_bseg INTO it_bseg

WHERE EBELN = it_ekpo-EBELN

AND EBELP = it_ekpo-EBELP.

MOVE it_ekpo-txz01 TO it_bseg-sgtxt.

MODIFY it_bseg FROM it_bseg TRANSPORTING sgtxt.

WRITE:/ it_bseg-belnr, it_bseg-gjahr, it_bseg-sgtxt, it_ekpo-ebeln, it_ekpo-ebelP.

ENDLOOP.

ENDLOOP.

MODIFY bseg FROM TABLE it_bseg.

COMMIT WORK.

ENDIF.

IF sy-subrc EQ 0.

WRITE:/3 'BSEG TABLE UPDATED SUCCESSFULLY WITH TEXT'.

ENDIF.

3 REPLIES 3

Former Member
0 Kudos

Try coding as below -

SELECT * FROM ekpo INTO TABLE it_ekpo

WHERE ebeln in p_ebeln AND ebelp in p_ebelp.

SELECT * FROM bseg INTO TABLE it_bseg

WHERE belnr in p_belnr AND bukrs in p_bukrs AND gjahr in p_gjahr.

LOOP AT it_ekpo INTO it_ekpo.

LOOP AT it_bseg INTO it_bseg

WHERE EBELN = it_ekpo-EBELN

AND EBELP = it_ekpo-EBELP.

MOVE it_ekpo-txz01 TO it_bseg-sgtxt.

MODIFY it_bseg FROM it_bseg TRANSPORTING sgtxt.

WRITE:/ it_bseg-belnr, it_bseg-gjahr, it_bseg-sgtxt, it_ekpo-ebeln, it_ekpo-ebelP.

ENDLOOP.

ENDLOOP.

MODIFY bseg FROM TABLE it_bseg.

COMMIT WORK.

ENDIF.

IF sy-subrc EQ 0.

WRITE:/3 'BSEG TABLE UPDATED SUCCESSFULLY WITH TEXT'.

ENDIF.

Former Member
0 Kudos

hi it works!!!!! thank u so much...but then why?

is it because of this part of my coding that makes it loop n lopp ?


IF it_bseg[] IS NOT INITIAL.
SELECT TXZ01 FROM EKPO INTO CORRESPONDING FIELDS OF it_bseg
WHERE EBELN = BSEG-EBELN AND
EBELP = BSEG-EBELP.
 
IF SY-SUBRC EQ 0.
BSEG-SGTXT = EKPO-TXZ01.
ENDIF.
ENDSELECT.

faisal_altaf2
Active Contributor
0 Kudos

Hi, Weelilin

Please use Meaningful Subject Line

Please have a look at [Rules of Engagement|https://wiki.sdn.sap.com/wiki/display/HOME/RulesofEngagement]

Regards,

Faisal