‎2010 Aug 16 12:47 PM
Hi Abapers,
this coding taken more time for execution. For increase the performance for the program what should i do.
CLEAR:GS_VBFA.
LOOP AT GT_SALES_DOC INTO GS_SALES_DOC.
SELECT SINGLE VBELV FROM VBFA CLIENT SPECIFIED INTO GS_VBFA
WHERE MANDT = SY-MANDT
AND VBELN = GS_SALES_DOC-SALES_DOC
%_HINTS ORACLE 'INDEX["VBFA" "VBFA~M01"]'.
SELECT VBELV POSNV VBELN POSNN VBTYP_N RFWRT ERDAT INTO TABLE LT_VBFA FROM VBFA
WHERE VBELV EQ GS_VBFA-VBELV
AND VBTYP_N = 'J'.
SORT LT_VBFA BY VBELN .
LOOP AT LT_VBFA INTO LS_VBFA .
READ TABLE GT_SALES_DOC INTO GS_SALES_DOC WITH KEY SALES_DOC = LS_VBFA-VBELN BINARY SEARCH.
IF sy-subrc = 0.
DELETE GT_SALES_DOC INDEX SY-TABIX.
ENDIF.
GS_FIRST_POD-SAL_ORDER = GS_VBFA-VBELV.
IF LS_VBFA-VBTYP_N EQ 'J'.
get outbound delivery
GS_FIRST_POD-OUT_DEL = LS_VBFA-VBELN.
get delivery doc date
SELECT SINGLE ERDAT INTO GS_FIRST_POD-DEL_DAT FROM LIKP
WHERE VBELN EQ GS_FIRST_POD-OUT_DEL.
get goods issue
SELECT SINGLE VBELN INTO GS_FIRST_POD-GOODS_ISSUE FROM VBFA
WHERE VBELV EQ LS_VBFA-VBELN AND VBTYP_N EQ 'R'.
LV_ERDAT = LS_VBFA-ERDAT.
get billing doc
SELECT SINGLE VBELN INTO GS_FIRST_POD-BILL_DOC FROM VBFA
WHERE VBELV EQ LS_VBFA-VBELN AND VBTYP_N EQ 'M'.
ENDIF.
CLEAR LS_VBFA.
IF NOT GS_FIRST_POD-OUT_DEL IS INITIAL.
get customer
SELECT SINGLE KUNNR INTO (GS_FIRST_POD-CUST_NO) FROM VBAK
WHERE VBELN EQ GS_VBFA-VBELV. "LV_SALES_DOC.
get customer name
SELECT SINGLE NAME1 INTO GS_FIRST_POD-CUST_NAME FROM KNA1
WHERE KUNNR EQ GS_FIRST_POD-CUST_NO.
CONCATENATE GS_FIRST_POD-GOODS_ISSUE LV_ERDAT+0(4) INTO LV_AWKEY .
SELECT SINGLE BELNR INTO GS_FIRST_POD-GI_ACC_DOC
FROM BKPF
WHERE AWKEY = LV_AWKEY.
bill doc for Accounting
SELECT SINGLE BELNR INTO GS_FIRST_POD-BILL_ACC_DOC
FROM BKPF
WHERE AWKEY = GS_FIRST_POD-BILL_DOC.
profit centre
REFRESH LT_PRCTR.
SELECT PRCTR INTO TABLE LT_PRCTR
FROM LIPS "BSEG
WHERE VBELN EQ GS_FIRST_POD-OUT_DEL. "BELNR = GS_FIRST_POD-BILL_ACC_DOC and bukrs eq 'AU01'.
LOOP AT LT_PRCTR INTO LS_PRCTR .
IF NOT LS_PRCTR-PROFIT_CTR IS INITIAL .
GS_FIRST_POD-PROFIT_CNTR = LS_PRCTR-PROFIT_CTR.
ENDIF.
ENDLOOP.
Amount of sale
SELECT WRBTR INTO TABLE LT_WRBTR
FROM BSEG
WHERE BELNR = GS_FIRST_POD-GI_ACC_DOC AND BUKRS EQ 'AU01' AND SHKZG EQ 'S'.
LOOP AT LT_WRBTR INTO LS_WRBTR .
SELECT WRBTR INTO TABLE LT_WRBTR
FROM BSEG
WHERE BELNR = GS_FIRST_POD-GI_ACC_DOC AND BUKRS EQ 'AU01' AND SHKZG EQ 'S'.
LOOP AT LT_WRBTR INTO LS_WRBTR .
GS_FIRST_POD-AMT_SALE = GS_FIRST_POD-AMT_SALE + LS_WRBTR-AMT_WRBTR.
ENDLOOP.
selecting the documents based on selection screen filtering
IF GS_SALES_DOC-SALES_DOC EQ GS_FIRST_POD-OUT_DEL .
APPEND GS_FIRST_POD TO GT_FIRST_POD .
ENDIF.
ENDIF.
CLEAR : GS_FIRST_POD.
ENDLOOP.
ENDLOOP.
‎2010 Aug 16 12:56 PM
‎2010 Aug 16 1:08 PM
This would be a topic for the "ABAP performance" forum, but for plenty of information on how to find out yourself before asking.
Thread locked.
Thomas