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

combined loop

Former Member
0 Likes
729

hi,

how to combined these two loop which gives the same values.

LOOP AT IBSAKN INTO WBSAKN.

SELECT SINGLE AWKEY INTO W_AWKEY FROM BKPF

                                 WHERE BELNR = WBSAKN-BELNR

                                 AND GJAHR = WBSAKN-GJAHR

                                 AND STBLG = ''.

IF SY-SUBRC = 0.

ST = strlen( W_AWKEY ).

IF ST = 18.

W_BEL = w_awkey+0(10).

W_GJAHR = w_awkey+14(4).

ELSE.

W_BEL = w_awkey+0(10).

W_GJAHR = w_awkey+10(4).

ENDIF.

CLEAR: W_AWKEY.

SELECT SINGLE BELNR INTO W_AWKEY FROM RBKP

                                 WHERE BELNR = W_BEL

                                 AND GJAHR = W_GJAHR

                                 AND STBLG <> ''.

    IF SY-SUBRC = 0.

    DELETE IBSAKN WHERE BELNR = WBSAKN-BELNR.

    ENDIF.

ELSE.

  DELETE IBSAKN WHERE BELNR = WBSAKN-BELNR.

ENDIF.

CLEAR: W_BEL,W_GJAHR,WBSAKN,ST.

ENDLOOP.

DATA: TELNR TYPE BELNR_D,

      TJAHR TYPE GJAHR.

LOOP AT IBSAKN INTO WBSAKN.

  IF WBSAKN-REBZG IS INITIAL.

SELECT SINGLE BELNR GJAHR INTO (TELNR,TJAHR) FROM BSAK WHERE BLART IN ('KR','KG') AND AUGBL = WBSAKN-AUGBL

AND BUKRS = P_BUKRS.

IF SY-SUBRC = 0.

WBSAKN-REBZG = TELNR.

WBSAKN-REBZJ = TJAHR.

CLEAR: TELNR,TJAHR.

MODIFY IBSAKN FROM WBSAKN TRANSPORTING REBZG REBZJ.

ENDIF.

ENDIF.

ENDLOOP.

1 ACCEPTED SOLUTION
Read only

Former Member
0 Likes
688

Hi,

Please check:

DATA: TELNR TYPE BELNR_D,


      TJAHR TYPE GJAHR.


LOOP AT IBSAKN INTO WBSAKN.

SELECT SINGLE AWKEY INTO W_AWKEY FROM BKPF


                                 WHERE BELNR = WBSAKN-BELNR


                                 AND GJAHR = WBSAKN-GJAHR


                                 AND STBLG = ''.


IF SY-SUBRC = 0.


ST = strlen( W_AWKEY ).


IF ST = 18.


W_BEL = w_awkey+0(10).


W_GJAHR = w_awkey+14(4).


ELSE.


W_BEL = w_awkey+0(10).


W_GJAHR = w_awkey+10(4).


ENDIF.


CLEAR: W_AWKEY.


SELECT SINGLE BELNR INTO W_AWKEY FROM RBKP


                                 WHERE BELNR = W_BEL


                                 AND GJAHR = W_GJAHR


                                 AND STBLG <> ''.


    IF SY-SUBRC = 0.


    DELETE IBSAKN WHERE BELNR = WBSAKN-BELNR.


    ENDIF.


ELSE.


  DELETE IBSAKN WHERE BELNR = WBSAKN-BELNR.


ENDIF.


CLEAR: W_BEL,W_GJAHR,WBSAKN,ST.

IF WBSAKN-REBZG IS INITIAL.


SELECT SINGLE BELNR GJAHR INTO (TELNR,TJAHR) FROM BSAK WHERE BLART IN ('KR','KG')AND AUGBL = WBSAKN-AUGBL


AND BUKRS = P_BUKRS.


IF SY-SUBRC = 0.


WBSAKN-REBZG = TELNR.


WBSAKN-REBZJ = TJAHR.


CLEAR: TELNR,TJAHR.


MODIFY IBSAKN FROM WBSAKN TRANSPORTING REBZG REBZJ.


ENDIF.


ENDIF.




ENDLOOP.

Regards

Purnand

6 REPLIES 6
Read only

Former Member
0 Likes
689

Hi,

Please check:

DATA: TELNR TYPE BELNR_D,


      TJAHR TYPE GJAHR.


LOOP AT IBSAKN INTO WBSAKN.

SELECT SINGLE AWKEY INTO W_AWKEY FROM BKPF


                                 WHERE BELNR = WBSAKN-BELNR


                                 AND GJAHR = WBSAKN-GJAHR


                                 AND STBLG = ''.


IF SY-SUBRC = 0.


ST = strlen( W_AWKEY ).


IF ST = 18.


W_BEL = w_awkey+0(10).


W_GJAHR = w_awkey+14(4).


ELSE.


W_BEL = w_awkey+0(10).


W_GJAHR = w_awkey+10(4).


ENDIF.


CLEAR: W_AWKEY.


SELECT SINGLE BELNR INTO W_AWKEY FROM RBKP


                                 WHERE BELNR = W_BEL


                                 AND GJAHR = W_GJAHR


                                 AND STBLG <> ''.


    IF SY-SUBRC = 0.


    DELETE IBSAKN WHERE BELNR = WBSAKN-BELNR.


    ENDIF.


ELSE.


  DELETE IBSAKN WHERE BELNR = WBSAKN-BELNR.


ENDIF.


CLEAR: W_BEL,W_GJAHR,WBSAKN,ST.

IF WBSAKN-REBZG IS INITIAL.


SELECT SINGLE BELNR GJAHR INTO (TELNR,TJAHR) FROM BSAK WHERE BLART IN ('KR','KG')AND AUGBL = WBSAKN-AUGBL


AND BUKRS = P_BUKRS.


IF SY-SUBRC = 0.


WBSAKN-REBZG = TELNR.


WBSAKN-REBZJ = TJAHR.


CLEAR: TELNR,TJAHR.


MODIFY IBSAKN FROM WBSAKN TRANSPORTING REBZG REBZJ.


ENDIF.


ENDIF.




ENDLOOP.

Regards

Purnand

Read only

0 Likes
688

hi purnand,

DATA: TELNR TYPE BELNR_D,


      TJAHR TYPE GJAHR.


LOOP AT IBSAKN INTO WBSAKN.

SELECT SINGLE AWKEY INTO W_AWKEY FROM BKPF


                                 WHERE BELNR = WBSAKN-BELNR


                                 AND GJAHR = WBSAKN-GJAHR


                                 AND STBLG = ''.


IF SY-SUBRC = 0.


ST = strlen( W_AWKEY ).


IF ST = 18.


W_BEL = w_awkey+0(10).


W_GJAHR = w_awkey+14(4).


ELSE.


W_BEL = w_awkey+0(10).


W_GJAHR = w_awkey+10(4).


ENDIF.


CLEAR: W_AWKEY.


SELECT SINGLE BELNR INTO W_AWKEY FROM RBKP


                                 WHERE BELNR = W_BEL


                                 AND GJAHR = W_GJAHR


                                 AND STBLG <> ''.


    IF SY-SUBRC = 0.


    DELETE IBSAKN WHERE BELNR = WBSAKN-BELNR.


    ENDIF.


ELSE.


  DELETE IBSAKN WHERE BELNR = WBSAKN-BELNR.


ENDIF.


CLEAR: W_BEL,W_GJAHR,WBSAKN,ST.

in above clear statement you cleared wbsakn. then how can you match the below select statement. where augbl = wbsakn-augbl.

IF WBSAKN-REBZG IS INITIAL.


SELECT SINGLE BELNR GJAHR INTO (TELNR,TJAHR) FROM BSAK WHERE BLART IN ('KR','KG')AND AUGBL = WBSAKN-AUGBL


AND BUKRS = P_BUKRS.


IF SY-SUBRC = 0.


WBSAKN-REBZG = TELNR.


WBSAKN-REBZJ = TJAHR.


CLEAR: TELNR,TJAHR.


MODIFY IBSAKN FROM WBSAKN TRANSPORTING REBZG REBZJ.


ENDIF.


ENDIF.



ENDLOOP.

Read only

0 Likes
688

Hi Hitesh,

You are right. I hope you got the solution after removing that line?

Regards

Purnand

Read only

Kartik2
Contributor
0 Likes
688

Hi,

First of all please do not use select query inside a loop for such requirements, build your final internal table and use select for all entries..

Using for all entries addition with select query, requirement can be met.

Regards,

Kartik

Read only

Former Member
0 Likes
688

Don't use select statement inside loop if you want to read a table use READ table

http://help.sap.com/saphelp_erp60_sp/helpdata/en/fc/eb35f8358411d1829f0000e829fbfe/content.htm

then after implement your logic

Regards

Mahesh

Read only

Former Member
0 Likes
688

Hello,

dont use select inside the loop...it decreases the performance.......

use read table statement or you can also use parrallel cursor method......////

follow link:

http://scn.sap.com/thread/1067750

http://wiki.sdn.sap.com/wiki/display/Snippets/ABAP+Code+for+Parallel+Cursor+-+Loop+Processing

Thanks

Sabyasachi