请教:如何优化这段代码
DATA:
* 实际可用的订单数
L_ACT_KWMENG LIKE VBAP-KWMENG,
* 实际发货过账数
L_ACT_LFIMG LIKE LIPS-LFIMG,
* 已做交货单数
L_LFIMG LIKE LIPS-LFIMG,
SUBRC LIKE SY-SUBRC,
L_UMREZ LIKE MARM-UMREZ VALUE 1.
LOOP AT ITAB_VBAP.
CLEAR: L_ACT_KWMENG, L_ACT_LFIMG, L_LFIMG.
SUBRC = 4.
LOOP AT ITAB_VBFA WHERE VBELV = ITAB_VBAP-VBELN
AND POSNV = ITAB_VBAP-POSNR.
* 已做交货单数量
L_LFIMG = L_LFIMG + ITAB_VBFA-RFMNG.
* 实际发货过账数量
READ TABLE ITAB_VBUK WITH KEY VBELN = ITAB_VBFA-VBELN.
IF SY-SUBRC = 0.
L_ACT_LFIMG = L_ACT_LFIMG + ITAB_VBFA-RFMNG.
ENDIF.
ENDLOOP.
L_LFIMG = L_LFIMG * ITAB_VBAP-UMVKN / ITAB_VBAP-UMVKZ.
L_ACT_LFIMG = L_ACT_LFIMG * ITAB_VBAP-UMVKN / ITAB_VBAP-UMVKZ.
IF ITAB_VBAP-AUART+2(2) = 'ZD'.
ITAB_VBAP-CMPRE = ITAB_VBAP-KZWI1 / ITAB_VBAP-KWMENG.
ENDIF.
IF ITAB_VBAP-ABGRU <> SPACE.
ITAB_VBAP-KWMENG = L_LFIMG.
ENDIF.
IF ITAB_VBAP-KWMENG > L_ACT_LFIMG.
SUBRC = 0.
ENDIF.
IF SUBRC = 0.
MOVE-CORRESPONDING ITAB_VBAP TO ITAB_OUTPUT.
ITAB_OUTPUT-LFIMG1 = L_LFIMG.
ITAB_OUTPUT-LFIMG2 = L_ACT_LFIMG.
ITAB_OUTPUT-WFIMG = ITAB_OUTPUT-KWMENG - L_ACT_LFIMG.
ITAB_OUTPUT-KUNAG = ITAB_VBAP-KUNNR.
ITAB_OUTPUT-KZWI1 = ITAB_VBAP-KWMENG * ITAB_VBAP-CMPRE.
ITAB_OUTPUT-LFWI1 = ITAB_OUTPUT-LFIMG1 * ITAB_VBAP-CMPRE.
ITAB_OUTPUT-LFWI2 = ITAB_OUTPUT-LFIMG2 * ITAB_VBAP-CMPRE.
ITAB_OUTPUT-WFWI1 = ITAB_OUTPUT-WFIMG * ITAB_VBAP-CMPRE.
PERFORM READ_DESC CHANGING ITAB_OUTPUT.
APPEND ITAB_OUTPUT.
CLEAR: ITAB_OUTPUT.
ENDIF.
CLEAR: ITAB_VBAP.
ENDLOOP.
由于两次循环的数据量比较大,有没有更好的办法实现上面的累加呢,请各位大虾指教。
|