12-14-2006 3:26 PM
Dear All.
Plz find the below report. But when I am running the following report its taking a lot of time to get executed. Can anybody suggest how the performance of the following report can be improved. Please find the report below:
REPORT ZFI_OPEN_ORDER_QTY NO STANDARD PAGE HEADING LINE-SIZE 500 .
TYPE-POOLS: SLIS.
*****TABLES USED
TABLES: VBAK, "Sales Document: Header Data
VBAP, "Sales Document: Item Data
MARA, "General Material Data
VBBE, "Sales Requirements: Individual Records
MAKT, "Material Descriptions
MCHB. "Batch Stocks
ALV DECLARATIONS
DATA: FIELDLAYOUT TYPE SLIS_LAYOUT_ALV,
L_FCAT TYPE SLIS_FIELDCAT_ALV,
T_FCAT TYPE SLIS_T_FIELDCAT_ALV,
L_REPID LIKE SY-REPID.
DATA: BEGIN OF I_VBAK OCCURS 0,
VKORG LIKE VBAK-VKORG,
VTWEG LIKE VBAK-VTWEG,
AUART LIKE VBAK-AUART,
VDATU LIKE VBAK-VDATU,
VBELN LIKE VBAK-VBELN,
KUNNR LIKE VBAK-KUNNR,
LIFSK LIKE VBAK-LIFSK,
FLAG(1),
END OF I_VBAK.
DATA: BEGIN OF I_VBAP OCCURS 0,
VBELN LIKE VBAP-VBELN,
POSNR LIKE VBAP-POSNR,
MATNR LIKE VBAP-MATNR,
FLAG(1),
END OF I_VBAP.
DATA: I_VBAP1 LIKE I_VBAP OCCURS 0 WITH HEADER LINE,
I_VBAP2 LIKE I_VBAP OCCURS 0 WITH HEADER LINE.
DATA: BEGIN OF I_VBBE OCCURS 0,
VBELN LIKE VBBE-VBELN,
POSNR LIKE VBBE-POSNR,
MATNR LIKE VBBE-MATNR,
OMENG LIKE VBBE-OMENG,
END OF I_VBBE.
DATA: I_VBBE1 LIKE I_VBBE OCCURS 0 WITH HEADER LINE,
I_VBBE2 LIKE I_VBBE OCCURS 0 WITH HEADER LINE.
DATA: BEGIN OF I_VBBE_M OCCURS 0,
MATNR LIKE VBBE-MATNR,
OMENG LIKE VBBE-OMENG,
END OF I_VBBE_M.
DATA: I_VBBE1_M LIKE I_VBBE_M OCCURS 0 WITH HEADER LINE,
I_VBBE2_M LIKE I_VBBE_M OCCURS 0 WITH HEADER LINE,
I_VBBEDEL1 LIKE I_VBBE OCCURS 0 WITH HEADER LINE,
I_VBBEDEL2 LIKE I_VBBE_M OCCURS 0 WITH HEADER LINE.
DATA: BEGIN OF I_LIKP OCCURS 0,
VBELN LIKE LIKP-VBELN,
LFART LIKE LIKP-LFART,
ERDAT LIKE LIKP-ERDAT,
VKORG LIKE LIKP-VKORG,
END OF I_LIKP.
DATA: BEGIN OF I_MATNR OCCURS 0,
MATNR LIKE VBAP-MATNR,
END OF I_MATNR.
DATA: BEGIN OF I_MCHB OCCURS 0,
MATNR LIKE MCHB-MATNR,
CLABS LIKE MCHB-CLABS,
CINSM LIKE MCHB-CINSM,
END OF I_MCHB.
DATA: BEGIN OF I_MCHB1 OCCURS 0,
MATNR LIKE MCHB-MATNR,
CLABS LIKE MCHB-CLABS,
END OF I_MCHB1.
DATA: BEGIN OF I_MCHB2 OCCURS 0,
MATNR LIKE MCHB-MATNR,
CINSM LIKE MCHB-CINSM,
END OF I_MCHB2.
DATA: BEGIN OF I_FINAL OCCURS 0,
MATNR LIKE VBAP-MATNR,
MAKTX LIKE MAKT-MAKTX,
OMENG1 LIKE VBBE-OMENG,
OMENG3 LIKE VBBE-OMENG,
CLABS LIKE MCHB-CLABS,
BCK_ORD LIKE VBBE-OMENG,
CINSM LIKE MCHB-CINSM,
OMENG2 LIKE VBBE-OMENG,
SHRT_SUPP LIKE VBBE-OMENG,
END OF I_FINAL.
DATA: I_FDCT LIKE I_FINAL OCCURS 0 WITH HEADER LINE.
RANGES: R_VDATU FOR VBAK-VDATU,
R_ERDAT FOR LIKP-ERDAT,
R_VMSTA FOR MVKE-VMSTA.
***********************************************************************
*****Selection Screen *
***********************************************************************
SELECTION-SCREEN BEGIN OF BLOCK B1 WITH FRAME TITLE TEXT-001.
SELECT-OPTIONS:
S_VKORG FOR VBAK-VKORG OBLIGATORY, "Sales Org
S_VTWEG FOR VBAK-VTWEG, "Dist Channel
S_AUART FOR VBAK-AUART, "Sales Doc Type
S_VDATU1 FOR VBAK-VDATU OBLIGATORY NO-EXTENSION,
"Open Order Period 1
S_VDATU2 FOR VBAK-VDATU OBLIGATORY NO-EXTENSION,
"Open Order Period 2
S_VBELN FOR VBAK-VBELN, "Sales Order Number
S_MATNR FOR VBAP-MATNR NO INTERVALS, "Material
S_BISMT FOR MARA-BISMT, "Old Material Number
S_KUNNR FOR VBAK-KUNNR, "Sold to Party
S_LIFSK FOR VBAK-LIFSK, "Delivery Block
S_ABGRU FOR VBAP-ABGRU, "Reason or Rejection
S_WERKS FOR VBAP-WERKS, "Plant
S_LGORT FOR VBAP-LGORT. "Storage Location
SELECTION-SCREEN END OF BLOCK B1.
AT SELECTION-SCREEN.
IF NOT S_VDATU1-HIGH IS INITIAL.
IF S_VDATU1-LOW > S_VDATU1-HIGH.
MESSAGE E650(DB).
ENDIF.
IF S_VDATU2-LOW < S_VDATU1-HIGH.
MESSAGE E001(EBPPLOG) WITH
'period 1 should be less than period 2'.
ENDIF.
ELSE.
IF S_VDATU2-LOW < S_VDATU1-LOW.
MESSAGE E001(EBPPLOG) WITH
'period 1 should be less than period 2'.
ENDIF.
ENDIF.
IF NOT S_VDATU2-HIGH IS INITIAL.
IF S_VDATU2-LOW > S_VDATU2-HIGH.
MESSAGE E650(DB).
ENDIF.
ENDIF.
START-OF-SELECTION.
IF S_MATNR-LOW IS INITIAL.
PERFORM GET_MATERIAL.
ENDIF.
PERFORM GET_VBAK.
PERFORM ACCUMULATE_DATA.
PERFORM DISPLAY.
&----
*& Form get_vbak
&----
text
----
--> p1 text
<-- p2 text
----
FORM GET_VBAK.
CLEAR R_ERDAT.
R_ERDAT-SIGN = 'I'.
R_ERDAT-OPTION = 'BT'.
R_ERDAT-LOW = SY-DATUM - 61.
R_ERDAT-HIGH = SY-DATUM + 1.
APPEND R_ERDAT.
CLEAR R_VDATU.
R_VDATU-SIGN = 'I'.
R_VDATU-OPTION = 'BT'.
R_VDATU-LOW = S_VDATU1-LOW.
R_VDATU-HIGH = S_VDATU1-HIGH.
APPEND R_VDATU.
CLEAR R_VDATU.
R_VDATU-SIGN = 'I'.
R_VDATU-OPTION = 'BT'.
R_VDATU-LOW = S_VDATU2-LOW.
R_VDATU-HIGH = S_VDATU2-HIGH.
APPEND R_VDATU.
CLEAR R_VDATU.
SELECT VKORG VTWEG AUART VDATU VBELN KUNNR LIFSK FROM VBAK INTO TABLE
I_VBAK WHERE VKORG IN S_VKORG AND
VTWEG IN S_VTWEG AND
AUART IN S_AUART AND
VDATU IN R_VDATU AND
VBELN IN S_VBELN AND
KUNNR IN S_KUNNR AND
LIFSK IN S_LIFSK.
LOOP AT I_VBAK WHERE VDATU IN S_VDATU1.
I_VBAK-FLAG = 'X'.
MODIFY I_VBAK index sy-tabix.
ENDLOOP.
LOOP AT I_VBAK WHERE VDATU IN S_VDATU2.
I_VBAK-FLAG = 'Y'.
MODIFY I_VBAK index sy-tabix.
ENDLOOP.
IF NOT I_VBAK[] IS INITIAL.
SELECT VBELN POSNR MATNR FROM VBAP INTO CORRESPONDING FIELDS OF TABLE
I_VBAP FOR ALL ENTRIES IN I_VBAK
WHERE VBELN = I_VBAK-VBELN
AND MATNR IN S_MATNR.
ENDIF.
LOOP AT I_VBAP.
READ TABLE I_VBAK WITH KEY VBELN = I_VBAP-VBELN.
IF SY-SUBRC EQ 0.
I_VBAP-FLAG = I_VBAK-FLAG.
MODIFY I_VBAP.
IF I_VBAP-FLAG = 'X'.
MOVE-CORRESPONDING I_VBAP TO I_VBAP1.
APPEND I_VBAP1.
ELSE.
MOVE-CORRESPONDING I_VBAP TO I_VBAP2.
APPEND I_VBAP2.
ENDIF.
ENDIF.
ENDLOOP.
*1.for open order quantity1
IF NOT I_VBAP1[] IS INITIAL.
SELECT VBELN POSNR MATNR OMENG FROM VBBE INTO TABLE I_VBBE1 FOR ALL
ENTRIES IN I_VBAP1 WHERE VBELN = I_VBAP1-VBELN
AND POSNR = I_VBAP1-POSNR
AND MATNR = I_VBAP1-MATNR.
ENDIF.
LOOP AT I_VBBE1.
I_VBBE1_M-MATNR = I_VBBE1-MATNR.
I_VBBE1_M-OMENG = I_VBBE1-OMENG.
COLLECT I_VBBE1_M.
ENDLOOP.
*2.for open order quantity2
IF NOT I_VBAP2[] IS INITIAL.
SELECT VBELN POSNR MATNR OMENG FROM VBBE INTO TABLE I_VBBE2 FOR ALL
ENTRIES IN I_VBAP2 WHERE VBELN = I_VBAP2-VBELN
AND POSNR = I_VBAP2-POSNR
AND MATNR = I_VBAP2-MATNR.
ENDIF.
LOOP AT I_VBBE2.
I_VBBE2_M-MATNR = I_VBBE2-MATNR.
I_VBBE2_M-OMENG = I_VBBE2-OMENG.
COLLECT I_VBBE2_M.
ENDLOOP.
*3.for open delivery quantity
SELECT VBELN LFART ERDAT VKORG FROM LIKP INTO CORRESPONDING FIELDS OF
TABLE I_LIKP WHERE LFART = 'ZULF'
AND ERDAT IN R_ERDAT
AND VKORG IN S_VKORG.
IF NOT I_LIKP[] IS INITIAL.
SELECT VBELN POSNR MATNR OMENG FROM VBBE INTO CORRESPONDING FIELDS
OF TABLE I_VBBEDEL1 FOR ALL ENTRIES IN I_LIKP
WHERE VBELN = I_LIKP-VBELN
AND MATNR IN S_MATNR.
ENDIF.
LOOP AT I_VBBEDEL1.
I_VBBEDEL2-MATNR = I_VBBEDEL1-MATNR.
I_VBBEDEL2-OMENG = I_VBBEDEL1-OMENG.
COLLECT I_VBBEDEL2.
CLEAR I_VBBEDEL2.
ENDLOOP.
*4.for material stocks
SELECT MATNR CLABS CINSM FROM MCHB INTO CORRESPONDING FIELDS OF
TABLE I_MCHB WHERE MATNR IN S_MATNR
AND WERKS IN S_WERKS
AND LGORT IN S_LGORT.
LOOP AT I_MCHB.
I_MCHB1-MATNR = I_MCHB-MATNR.
I_MCHB1-CLABS = I_MCHB-CLABS.
COLLECT I_MCHB1.
CLEAR I_MCHB1.
ENDLOOP.
*5.for inspection quantity.
LOOP AT I_MCHB.
I_MCHB2-MATNR = I_MCHB-MATNR.
I_MCHB2-CINSM = I_MCHB-CINSM.
COLLECT I_MCHB2.
CLEAR I_MCHB2.
ENDLOOP.
ENDFORM. " get_vbak
&----
*& Form GET_MATERIAL
&----
text
----
--> p1 text
<-- p2 text
----
FORM GET_MATERIAL.
CLEAR R_VMSTA.
R_VMSTA-SIGN = 'I'.
R_VMSTA-OPTION = 'EQ'.
R_VMSTA-LOW = '05'.
APPEND R_VMSTA.
CLEAR R_VMSTA.
R_VMSTA-SIGN = 'I'.
R_VMSTA-OPTION = 'EQ'.
R_VMSTA-LOW = '11'.
APPEND R_VMSTA.
CLEAR R_VMSTA.
R_VMSTA-SIGN = 'I'.
R_VMSTA-OPTION = 'EQ'.
R_VMSTA-LOW = '91'.
APPEND R_VMSTA.
CLEAR R_VMSTA.
R_VMSTA-SIGN = 'I'.
R_VMSTA-OPTION = 'EQ'.
R_VMSTA-LOW = '92'.
APPEND R_VMSTA.
CLEAR R_VMSTA.
CLEAR: I_MATNR,I_MATNR[].
SELECT C~MATNR INTO TABLE I_MATNR FROM MVKE AS A
JOIN MARC AS B
ON AMATNR = BMATNR
JOIN MARA AS C
ON BMATNR = CMATNR
WHERE A~VKORG IN S_VKORG
AND A~VTWEG IN S_VTWEG
AND A~VMSTA IN R_VMSTA
AND A~LVORM = ' '
AND B~WERKS IN S_WERKS
AND B~LVORM = ' '
AND C~BISMT IN S_BISMT
AND C~LVORM = ' '
AND C~ENTAR = ' ' .
SORT I_MATNR.
DELETE ADJACENT DUPLICATES FROM I_MATNR.
LOOP AT I_MATNR.
CLEAR S_MATNR.
S_MATNR-SIGN = 'I'.
S_MATNR-OPTION = 'EQ'.
S_MATNR-LOW = I_MATNR-MATNR.
APPEND S_MATNR.
CLEAR S_MATNR.
ENDLOOP.
ENDFORM. " GET_MATERIAL
&----
*& Form ACCUMULATE_DATA
&----
text
----
--> p1 text
<-- p2 text
----
FORM ACCUMULATE_DATA.
LOOP AT S_MATNR.
*1 for material
I_FINAL-MATNR = S_MATNR-LOW.
*2 for material description
SELECT SINGLE MAKTX FROM MAKT INTO I_FINAL-MAKTX
WHERE MATNR = S_MATNR-LOW
AND SPRAS = SY-LANGU.
*3 for open order quantity1
READ TABLE I_VBBE1_M WITH KEY MATNR = S_MATNR-LOW.
IF SY-SUBRC EQ 0.
I_FINAL-OMENG1 = I_VBBE1_M-OMENG.
ENDIF.
*4.for open delivery quantity
READ TABLE I_VBBEDEL2 WITH KEY MATNR = S_MATNR-LOW.
IF SY-SUBRC EQ 0.
I_FINAL-OMENG3 = I_VBBEDEL2-OMENG.
ENDIF .
*5.for material stocks
READ TABLE I_MCHB1 WITH KEY MATNR = S_MATNR-LOW.
IF SY-SUBRC EQ 0.
I_FINAL-CLABS = I_MCHB1-CLABS.
ENDIF .
*6.for Back Order
I_FINAL-BCK_ORD =
I_FINAL-OMENG1 + I_FINAL-OMENG3 - I_FINAL-CLABS.
IF I_FINAL-BCK_ORD LT 0.
I_FINAL-BCK_ORD = 0.
ENDIF.
*7.for inspection quantity
READ TABLE I_MCHB2 WITH KEY MATNR = S_MATNR-LOW.
IF SY-SUBRC EQ 0.
I_FINAL-CINSM = I_MCHB2-CINSM.
ENDIF .
*8.for open order quantity2
READ TABLE I_VBBE2_M WITH KEY MATNR = S_MATNR-LOW.
IF SY-SUBRC EQ 0.
I_FINAL-OMENG2 = I_VBBE2_M-OMENG.
ENDIF .
*9.for Short Supply
I_FINAL-SHRT_SUPP = ( I_FINAL-OMENG1 + I_FINAL-OMENG3 +
I_FINAL-OMENG2 ) - ( I_FINAL-CLABS + I_FINAL-CINSM ).
IF I_FINAL-SHRT_SUPP LT 0.
I_FINAL-SHRT_SUPP = 0.
ENDIF.
APPEND I_FINAL.
CLEAR I_FINAL.
ENDLOOP.
ENDFORM. " ACCUMULATE_DATA
&----
*& Form DISPLAY
&----
text
----
--> p1 text
<-- p2 text
----
FORM DISPLAY.
L_REPID = SY-REPID.
PERFORM GET_FIELDCAT.
FIELDLAYOUT-WINDOW_TITLEBAR = 'Open order quantity'.
FIELDLAYOUT-ZEBRA = 'X'.
FIELDLAYOUT-COLWIDTH_OPTIMIZE = 'X'.
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
I_CALLBACK_PROGRAM = L_REPID
IT_FIELDCAT = T_FCAT
IS_LAYOUT = FIELDLAYOUT
I_SAVE = 'A'
TABLES
T_OUTTAB = I_FINAL
EXCEPTIONS
PROGRAM_ERROR = 1
OTHERS = 2.
ENDFORM. " DISPLAY
&----
*& Form GET_FIELDCAT
&----
text
----
--> p1 text
<-- p2 text
----
FORM GET_FIELDCAT.
DATA: OPEN1(50),
OPEN2(50).
IF S_VDATU1-HIGH IS INITIAL.
CONCATENATE 'Open Order Qty on' S_VDATU1-LOW INTO OPEN1
SEPARATED BY SPACE.
ELSE.
CONCATENATE'Open Order Qty b/w' S_VDATU1-LOW 'to'
S_VDATU1-HIGH INTO OPEN1 SEPARATED BY SPACE.
ENDIF.
IF S_VDATU2-HIGH IS INITIAL.
CONCATENATE 'Open Order Qty on' S_VDATU2-LOW INTO OPEN2
SEPARATED BY SPACE.
ELSE.
CONCATENATE'Open Order Qty b/w' S_VDATU2-LOW 'to'
S_VDATU2-HIGH INTO OPEN2 SEPARATED BY SPACE.
ENDIF.
PERFORM WRITE_FIELDCAT USING 'MATNR' 'I_FINAL'
'Material' '1' 'L' ' '.
PERFORM WRITE_FIELDCAT USING 'MAKTX' 'I_FINAL'
'Material Description' '2' 'L' ' '.
PERFORM WRITE_FIELDCAT USING 'OMENG1' 'I_FINAL'
OPEN1 '3' 'L' 'X'.
PERFORM WRITE_FIELDCAT USING 'OMENG3' 'I_FINAL'
'Open Delivery Qty' '4' 'L' 'X'.
PERFORM WRITE_FIELDCAT USING 'CLABS' 'I_FINAL'
'Material Stock' '5' 'L' 'X'.
PERFORM WRITE_FIELDCAT USING 'BCK_ORD' 'I_FINAL'
'Back Order' '6' 'L' 'X'.
PERFORM WRITE_FIELDCAT USING 'CINSM' 'I_FINAL'
'Q.I.Quantity' '7' 'L' 'X'.
PERFORM WRITE_FIELDCAT USING 'OMENG2' 'I_FINAL'
OPEN2 '8' 'L' 'X'.
PERFORM WRITE_FIELDCAT USING 'SHRT_SUPP' 'I_FINAL'
'Short Supply' '9' 'L' 'X'.
IF NOT S_MWERKS-LOW IS INITIAL.
IF NOT S_MLGORT-LOW IS INITIAL.
PERFORM WRITE_FIELDCAT USING 'CLABS1' 'I_FINAL'
'MFG plant Unrest Qty.' '10' 'L' 'X'.
PERFORM WRITE_FIELDCAT USING 'CINSM1' 'I_FINAL'
'MFG plant Q.I Qty.' '11' 'L' 'X'.
ENDIF.
ENDIF.
ENDFORM. " GET_FIELDCAT
&----
*& FORM WRITE_FIELDCAT
&----
TEXT
----
--> P1 TEXT
<-- P2 TEXT
----
FORM WRITE_FIELDCAT USING NAME TAB TXT NUM JUST SUM.
L_FCAT-FIELDNAME = NAME.
L_FCAT-TABNAME = TAB.
L_FCAT-DDICTXT = 'L'.
L_FCAT-SELTEXT_L = TXT.
L_FCAT-SELTEXT_M = TXT.
L_FCAT-SELTEXT_S = TXT.
L_FCAT-COL_POS = NUM.
L_FCAT-JUST = JUST.
L_FCAT-DO_SUM = SUM.
APPEND L_FCAT TO T_FCAT.
CLEAR L_FCAT.
ENDFORM. " WRITE_FIELDCAT
**********************************************************************************************
Thanks in advance,
Nishu
12-14-2006 3:31 PM
Simple recommendation.....Replace this...
LOOP AT I_VBAK WHERE VDATU IN S_VDATU1.
I_VBAK-FLAG = 'X'.
MODIFY I_VBAK index sy-tabix.
ENDLOOP.
LOOP AT I_VBAK WHERE VDATU IN S_VDATU2.
I_VBAK-FLAG = 'Y'.
MODIFY I_VBAK index sy-tabix.
ENDLOOP.
With this...
LOOP AT I_VBAK.
IF VDATU IN S_VDATU1.
I_VBAK-FLAG = 'X'.
ELSEIF VDATU IN S_VDATU2 .
I_VBAK-FLAG = 'Y'.
ENDIF.
MODIFY I_VBAK index sy-tabix.
ENDLOOP.
Greetings,
Blag.
12-14-2006 3:29 PM
12-14-2006 3:34 PM
Also - ensure that s_vbeln is not empty before doing a select on VBAK. (It is the only key field you are using in this select.)
Rob
12-14-2006 3:38 PM
And also make the changes indicated.:
SORT i_vbak BY vbeln. "<=========
LOOP AT i_vbap.
READ TABLE i_vbak WITH KEY vbeln = i_vbap-vbeln
BINARY SEARCH. "<=========
IF sy-subrc EQ 0.
i_vbap-flag = i_vbak-flag.
MODIFY i_vbap.
IF i_vbap-flag = 'X'.
MOVE-CORRESPONDING i_vbap TO i_vbap1.
APPEND i_vbap1.
ELSE.
MOVE-CORRESPONDING i_vbap TO i_vbap2.
APPEND i_vbap2.
ENDIF.
ENDIF.
ENDLOOP.
Rob
12-14-2006 3:31 PM
Simple recommendation.....Replace this...
LOOP AT I_VBAK WHERE VDATU IN S_VDATU1.
I_VBAK-FLAG = 'X'.
MODIFY I_VBAK index sy-tabix.
ENDLOOP.
LOOP AT I_VBAK WHERE VDATU IN S_VDATU2.
I_VBAK-FLAG = 'Y'.
MODIFY I_VBAK index sy-tabix.
ENDLOOP.
With this...
LOOP AT I_VBAK.
IF VDATU IN S_VDATU1.
I_VBAK-FLAG = 'X'.
ELSEIF VDATU IN S_VDATU2 .
I_VBAK-FLAG = 'Y'.
ENDIF.
MODIFY I_VBAK index sy-tabix.
ENDLOOP.
Greetings,
Blag.
12-14-2006 3:53 PM
Sort I_VBAK BY VBELN is missing.
Sort I_VBAP BY VBELN is missing.
LOOP AT I_VBAP.
READ TABLE I_VBAK WITH KEY VBELN = I_VBAP-VBELN.
IF SY-SUBRC EQ 0.
I_VBAP-FLAG = I_VBAK-FLAG.
MODIFY I_VBAP.
IF I_VBAP-FLAG = 'X'.
MOVE-CORRESPONDING I_VBAP TO I_VBAP1.
APPEND I_VBAP1.
ELSE.
MOVE-CORRESPONDING I_VBAP TO I_VBAP2.
APPEND I_VBAP2.
ENDIF.
ENDIF.
ENDLOOP.
This is very imp as u r using READ.
CH 1.
SELECT VKORG VTWEG AUART VDATU VBELN KUNNR LIFSK FROM VBAK INTO TABLE
I_VBAK WHERE
VBELN IN S_VBELN AND
VKORG IN S_VKORG AND
VTWEG IN S_VTWEG AND
AUART IN S_AUART AND
VDATU IN R_VDATU AND
KUNNR IN S_KUNNR AND
LIFSK IN S_LIFSK.
CH2
*3.for open delivery quantity
SELECT VBELN LFART ERDAT VKORG FROM LIKP INTO CORRESPONDING FIELDS OF
TABLE I_LIKP WHERE LFART = 'ZULF'
AND ERDAT IN R_ERDAT
AND VKORG IN S_VKORG.
This has no vbeln this will consume a lot of time.
Also if possible give LIKP-VSTEL shipping point as hardcoded value if u have the option.
run ST05 and see the trace .
this will give u idea.
also use of secondary indexes if possible.
regards,
vijay
12-15-2006 10:55 AM
Dear All,
Thanx for ur valuable replies. But still report is taking around 7 min to get executed.
Plz help in optimising the performance.
Warm Regards,
Nishu
12-15-2006 2:15 PM
It would help if you would do the performance trace and let us know where the bottleneck is.
Rob
12-15-2006 2:25 PM
HI,
see first thing u r looping on 3 big tables MARA,MARC & MVKE insted of that go for FOR ALL ENTRIES. this will reduce lot of time.
Thanks
Vikranth Khimavath