Skip to Content
0
Former Member
Dec 10, 2007 at 02:13 PM

Help in Tuning this Code

44 Views

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