‎2013 Mar 13 11:40 AM
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.
‎2013 Mar 13 12:27 PM
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
‎2013 Mar 13 12:27 PM
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
‎2013 Mar 14 4:08 AM
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.
‎2013 Mar 14 5:49 AM
Hi Hitesh,
You are right. I hope you got the solution after removing that line?
Regards
Purnand
‎2013 Mar 13 12:37 PM
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
‎2013 Mar 13 12:55 PM
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
‎2013 Mar 13 1:58 PM
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