Hello
Need to tune this code.Its taking too much time.
REFRESH: T_BVOR.
IF NOT I_TEM[] IS INITIAL.
SELECT BVORG BUKRS GJAHR BELNR INTO
CORRESPONDING FIELDS OF
TABLE T_BVOR
FROM BVOR
FOR ALL ENTRIES IN I_TEM
WHERE BVORG = I_TEM-BVORG
AND GJAHR = I_TEM-GJAHR.
ENDIF.
IF SY-SUBRC EQ 0.
SORT T_BVOR BY BVORG GJAHR.
ENDIF.
CLEAR: WA_BVOR.
SORT I_TEM BY BVORG GJAHR.
LOOP AT T_BVOR INTO WA_BVOR.
CLEAR: I_TEM.
READ TABLE I_TEM WITH KEY BVORG = WA_BVOR-BVORG
GJAHR = WA_BVOR-GJAHR
BINARY SEARCH.
IF SY-SUBRC EQ 0.
MOVE I_TEM-BLART TO WA_BVOR-BLART.
ENDIF.
MODIFY T_BVOR FROM WA_BVOR TRANSPORTING BLART.
ENDLOOP.
SORT T_BVOR BY BUKRS BELNR GJAHR.
IF NOT T_BVOR[] IS INITIAL.
LOOP AT I_BVOR.
REFRESH: GT_BSEG.
SELECT BUKRS
BELNR GJAHR BSCHL KOSTL HKONT
EBELN PRCTR ZZINFO3 TXGRP
FROM BSEG
INTO CORRESPONDING FIELDS
OF TABLE GT_BSEG
FOR ALL ENTRIES IN T_BVOR
WHERE BUKRS = T_BVOR-BUKRS
AND BELNR = T_BVOR-BELNR
AND GJAHR = T_BVOR-GJAHR
AND NOT HKONT IN RANGE_HKONT.
ENDIF.
SORT GT_BSEG BY BUKRS BELNR GJAHR.
DELETE ADJACENT DUPLICATES FROM GT_BSEG
COMPARING BUKRS BELNR GJAHR.
CLEAR: WA_BSEG.
LOOP AT GT_BSEG INTO WA_BSEG.
CLEAR: WA_BVOR.
READ TABLE T_BVOR INTO WA_BVOR WITH KEY
BUKRS = WA_BSEG-BUKRS
BELNR = WA_BSEG-BELNR
GJAHR = WA_BSEG-GJAHR
BINARY SEARCH.
IF SY-SUBRC EQ 0.
MOVE WA_BVOR-BLART TO WA_BSEG-BLART.
MOVE WA_BVOR-BVORG TO WA_BSEG-BVORG.
ENDIF.
MODIFY GT_BSEG FROM WA_BSEG TRANSPORTING BLART BVORG.
ENDLOOP.
REFRESH: GT_BSEG1,GT_BSEG2.
SORT T_DOCS BY BSCHL BLART.
SORT GT_BSEG BY BVORG.
CLEAR: WA_BSEG.
LOOP AT GT_BSEG INTO WA_BSEG.
CLEAR: T_DOCS.
LOOP AT T_DOCS WHERE BSCHL = WA_BSEG-BSCHL
AND BLART = WA_BSEG-BLART.
IF T_DOCS-BSCHL = '40' OR T_DOCS-BSCHL = '50'
OR T_DOCS-BSCHL = '81' OR T_DOCS-BSCHL = '91'.
MOVE-CORRESPONDING WA_BSEG TO WA_BSEG1.
APPEND WA_BSEG1 TO GT_BSEG1.
CLEAR: WA_BSEG1.
ENDIF.
IF T_DOCS-BSCHL = '31' OR T_DOCS-BSCHL = '32'
OR T_DOCS-BSCHL = '21' OR T_DOCS-BSCHL = '22'
OR ( T_DOCS-ZDATATYP = 'TAXRPT02' AND
( T_DOCS-BSCHL = '40' OR T_DOCS-BSCHL = '50' ) ).
MOVE-CORRESPONDING WA_BSEG TO WA_BSEG1.
APPEND WA_BSEG2 TO GT_BSEG2.
CLEAR: WA_BSEG2.
ENDIF.
ENDLOOP.
ENDLOOP.
SORT GT_BSEG1 BY TXGRP.
SORT GT_BSEG2 BY BUKRS BELNR GJAHR.
LOOP AT i_bseg.
CLEAR: WA_BSEG2.
LOOP AT GT_BSEG2 INTO WA_BSEG2.
CLEAR : GT_ALV_ITEM.
LOOP AT GT_ALV_ITEM WHERE
BUKRS = WA_BSEG2-BUKRS AND
BELNR = WA_BSEG2-BELNR AND
GJAHR = WA_BSEG2-GJAHR.
CLEAR: WA_BSEG1.
LOOP AT GT_BSEG1 INTO WA_BSEG1
WHERE GJAHR = GT_ALV_ITEM-GJAHR AND
TXGRP = GT_ALV_ITEM-TXGRP AND
BVORG = WA_BSEG2-BVORG.
MOVE: WA_BSEG1-BUKRS TO GT_ALV_ITEM-BUKRS,
WA_BSEG1-EBELN TO GT_ALV_ITEM-EBELN,
WA_BSEG1-HKONT TO GT_ALV_ITEM-HKONT,
WA_BSEG1-BELNR TO GT_ALV_ITEM-BELNR,
WA_BSEG1-KOSTL TO GT_ALV_ITEM-KOSTL,
WA_BSEG1-PRCTR TO GT_ALV_ITEM-PRCTR,
WA_BSEG1-ZZINFO3 TO GT_ALV_ITEM-ZZINFO3." M003a
CLEAR: WA_BSEG1.
ENDLOOP.
MODIFY GT_ALV_ITEM INDEX SY-TABIX.
IF gt_alv_item-txjlv = 6.EXIT.ENDIF.
ENDIF.
ENDLOOP.
CLEAR: WA_BSEG2.
ENDLOOP.
Thanks
Sunil