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