2009 Apr 06 11:04 PM
Hi Guys
Anyone suggest the better way for this below code...
LOOP AT IT_HEADER
PERFORM GET_DUNNINH_ARREARS USING IT_HEADER-GPART IT_HEADER-VKONT
CHANGING L_DUE_BAL.
FORM GET_DUNNING_ARREARS
USING CDR_BP LIKE FKKMAKO-GPART "Business partner n
CDR_VKONT LIKE FKKMAKO-VKONT "Contract account
CHANGING CDR_ARREARS LIKE DFKKOP-BETRW. "Curr Arrears
SELECT LAUFD GPART VKONT MAZAE MSALM FROM FKKMAKO
UP TO 1 ROWS
INTO TABLE T_FKKMAKO
WHERE GPART = CDR_BP
AND VKONT = CDR_VKONT
AND XMSTO = ' '
ORDER BY LAUFD
DESCENDING.
IF SY-SUBRC = 0.
READ TABLE T_FKKMAKO INDEX 1.
SELECT LAUFD vkont OPBEL FROM FKKMAZE
INTO TABLE T_FKKMAZE
WHERE LAUFD = T_FKKMAKO-LAUFD
AND GPART = T_FKKMAKO-GPART
AND VKONT = T_FKKMAKO-VKONT
AND MAZAE = T_FKKMAKO-MAZAE
AND XMSTO = ' '.
SORT T_FKKMAZE BY LAUFD OPBEL.
DELETE ADJACENT DUPLICATES FROM T_FKKMAZE.
REFRESH T_DFKKOP .
CLEAR: T_DFKKOP.
LOOP AT T_FKKMAZE.
SELECT OPBEL AUGST vkont ABWBL BETRW FAEDN
AUGBD AUGBT AUGRS
FROM DFKKOP
APPENDING TABLE T_DFKKOP
WHERE OPBEL = T_FKKMAZE-OPBEL.
ENDLOOP
LOOP AT T_FKKMAZE.
LOOP AT T_DFKKOP WHERE OPBEL = T_FKKMAZE-OPBEL
AND AUGST = ' ' "not cleared
AND ABWBL = ' ' " no sub docs..
AND FAEDN <= T_FKKMAZE-LAUFD
AND AUGRS = ' '
AND vkont = T_FKKMAZE-VKONT.
CDR_ARREARS = CDR_ARREARS + T_DFKKOP-BETRW.
ENDLOOP.
ENDLOOP.
ENDIF.
ENDFORM.
Thanks in advance
2009 Apr 07 3:11 AM
Hi,
Instead ofwriting the SELECT queries inside the loop, you better write them outside the loop using FOR ALL ENTRIES and READ them inside the LOOP. This may improve the performance...
Hi Guys
Anyone suggest the better way for this below code...
LOOP AT IT_HEADER
PERFORM GET_DUNNINH_ARREARS USING IT_HEADER-GPART IT_HEADER-VKONT
CHANGING L_DUE_BAL.
FORM GET_DUNNING_ARREARS
USING CDR_BP LIKE FKKMAKO-GPART "Business partner n
CDR_VKONT LIKE FKKMAKO-VKONT "Contract account
CHANGING CDR_ARREARS LIKE DFKKOP-BETRW. "Curr Arrears
SELECT LAUFD GPART VKONT MAZAE MSALM FROM FKKMAKO
UP TO 1 ROWS
INTO TABLE T_FKKMAKO
WHERE GPART = CDR_BP
AND VKONT = CDR_VKONT
AND XMSTO = ' '
ORDER BY LAUFD
DESCENDING.
IF SY-SUBRC = 0.
READ TABLE T_FKKMAKO INDEX 1.
SELECT LAUFD vkont OPBEL FROM FKKMAZE
INTO TABLE T_FKKMAZE
WHERE LAUFD = T_FKKMAKO-LAUFD
AND GPART = T_FKKMAKO-GPART
AND VKONT = T_FKKMAKO-VKONT
AND MAZAE = T_FKKMAKO-MAZAE
AND XMSTO = ' '.
SORT T_FKKMAZE BY LAUFD OPBEL.
DELETE ADJACENT DUPLICATES FROM T_FKKMAZE.
REFRESH T_DFKKOP .
CLEAR: T_DFKKOP.
LOOP AT T_FKKMAZE.
SELECT OPBEL AUGST vkont ABWBL BETRW FAEDN
AUGBD AUGBT AUGRS
FROM DFKKOP
APPENDING TABLE T_DFKKOP
WHERE OPBEL = T_FKKMAZE-OPBEL.
ENDLOOP
LOOP AT T_FKKMAZE.
LOOP AT T_DFKKOP WHERE OPBEL = T_FKKMAZE-OPBEL
AND AUGST = ' ' "not cleared
AND ABWBL = ' ' " no sub docs..
AND FAEDN <= T_FKKMAZE-LAUFD
AND AUGRS = ' '
AND vkont = T_FKKMAZE-VKONT.
CDR_ARREARS = CDR_ARREARS + T_DFKKOP-BETRW.
ENDLOOP.
ENDLOOP.
ENDIF.
ENDFORM.
Thanks in advance
2009 Apr 07 3:11 AM
Hi,
Instead ofwriting the SELECT queries inside the loop, you better write them outside the loop using FOR ALL ENTRIES and READ them inside the LOOP. This may improve the performance...
2009 Apr 07 3:53 AM
Hi krk,
Post a meaningful thread with a meaningful Subject in SCN.
Regards,
Suneel G
2009 Apr 07 4:36 PM