Application Development and Automation Discussions
Join the discussions or start your own on all things application development, including tools and APIs, programming models, and keeping your skills sharp.
cancel
Showing results for 
Search instead for 
Did you mean: 
Read only

Performance Issue

Former Member
0 Likes
871

Hi,

My report has taken too long time....

when i check in ST05 (Performance Analysis), it display few lines in RED mark...

but i m unable to read that code..

Plz help...

7 REPLIES 7
Read only

Former Member
0 Likes
850

Hi,

post the code so that someone can analyse it

tc

saji

Read only

0 Likes
850

Hi Dear...

Plz check my code....

***********************************


REPORT  ZSALES_REPORT LINE-SIZE 250 MESSAGE-ID ZPU .

TABLES : VBAK, VBRP, VBRK, KNA1, T001, LIKP, VBPA, TVKBT, TVGRT, KONV, VBKD, VBFA, T052, BSAD.

TYPE-POOLS: SLIS.

DATA: BEGIN OF ITAB OCCURS 0,
      VKBUR   LIKE VBAK-VKBUR ,              "  Sales Office
      BEZEI   LIKE TVKBT-BEZEI,              "  Description
      KUNNR   LIKE VBAK-KUNNR ,              "  Sold to party
      BSTNK   LIKE VBAK-BSTNK ,              "  Customer PO No.
      NAME1   LIKE KNA1-NAME1 ,              "  CUSTOMER NAME
      VBELN   LIKE VBAK-VBELN ,              "  Sale Order Number
      AUDAT   LIKE VBAK-AUDAT ,              "  SALES DOC. DATE
      NETWR   LIKE VBAK-NETWR ,              "  SALES DOC VALUE
      VBELN1  LIKE VBRP-VBELN ,              "  BILLING DOCUMENT NO.
      FKDAT   LIKE VBRK-FKDAT ,              "  BILLING DATE
      NETWR1  LIKE VBRK-NETWR ,              "  BILLING DOCUMENT VALUE
      MWSBK   LIKE VBRK-MWSBK ,              "  TAX AMOUNT
      CD_AMT  TYPE P DECIMALS 2 ,            "  CD AMOUNT
      AMT_DUE TYPE P DECIMALS 2 ,            "  AMOUNT DUE
      FKART   LIKE VBRK-FKART ,              "  BILLING TYPE
      BLART   LIKE BSID-BLART ,              "  DOC TYPE
      DAYS    LIKE T052-ZTAG1 ,              "  Number of days
      DUE_DT  LIKE SY-DATUM   ,              "  Due Date
      ZTERM   LIKE VBKD-ZTERM ,              "  PAYMENT TERM
      KNUMV   LIKE VBRK-KNUMV ,              "  VBRK DOCUMENT CONDITION
      BELNR   LIKE BSAD-BELNR ,              "  DOC. NO.
      AUGBL   LIKE BSAD-AUGBL ,              "  CLEARING DOC.
      END OF ITAB .

DATA: BEGIN OF ITAB1 OCCURS 0,
      KNUMV LIKE KONV-KNUMV ,                "  DOCUMENT CONDITION
      KSCHL LIKE KONV-KSCHL ,
      KAWRT LIKE KONV-KAWRT ,
      KBETR LIKE KONV-KBETR ,
      KWERT LIKE KONV-KWERT ,                "  Condition Value
      END OF ITAB1 .

DATA : WA1 LIKE ITAB1.

DATA: BEGIN OF ITAB2 OCCURS 0,
      KNUMV LIKE KONV-KNUMV ,                "  DOCUMENT CONDITION
      KSCHL LIKE KONV-KSCHL ,
      KAWRT LIKE KONV-KAWRT ,
      KBETR LIKE KONV-KBETR ,
      KWERT LIKE KONV-KWERT ,                "  Condition Value
      END OF ITAB2 .

DATA : BEGIN OF ITAB3 OCCURS 0.
        INCLUDE STRUCTURE ITAB.
DATA : END OF ITAB3.

DATA : X TYPE I.
*************************************************************************************
DATA : W_CONTAINER TYPE SCRFNAME VALUE 'CL_GRID',
       W_CPROG TYPE LVC_S_LAYO,
       G_REPID LIKE SY-REPID,
       W_SAVE TYPE C,
       W_EXIT TYPE C,
       CL_GRID TYPE REF TO CL_GUI_ALV_GRID,
       CL_CUSTOM_CONTAINER TYPE REF TO CL_GUI_CUSTOM_CONTAINER,
       IT_FLD_CATALOG TYPE SLIS_T_FIELDCAT_ALV,
       WA_FLD_CATALOG TYPE SLIS_T_FIELDCAT_ALV WITH HEADER LINE ,
       LAYOUT TYPE SLIS_LAYOUT_ALV,
       COL_POS  LIKE SY-CUCOL ,
       ALVFC TYPE SLIS_T_FIELDCAT_ALV,
       IT_SORT TYPE SLIS_T_SORTINFO_ALV.

***------------------------------------ SELECTION SCREEN -----------------

SELECTION-SCREEN BEGIN OF BLOCK A WITH FRAME.
SELECT-OPTIONS: VKBUR FOR VBAK-VKBUR,  " Sales Office
                KUNNR FOR VBAK-KUNNR,  " Sold to party
                FKDAT FOR VBRK-FKDAT, " OBLIGATORY .  " Created on
                FKART FOR VBRK-FKART,  " Billing Type
                DUE_DT FOR SY-DATUM.   " Due Date
SELECTION-SCREEN END OF BLOCK A.

SELECTION-SCREEN BEGIN OF BLOCK B WITH FRAME.
PARAMETERS: NORMAL RADIOBUTTON GROUP GR1,
            FULL RADIOBUTTON GROUP GR1.
SELECTION-SCREEN END OF BLOCK B.

*************************************************************************************
IF FULL = 'X'.

  PERFORM FILL_CATALOG1 USING:

*  'VKBUR'    'ITAB'    'SALES OFFICE',
  'BEZEI'    'ITAB'    'BRANCH NAME',
  'KUNNR'    'ITAB'    'CUST CODE',
  'NAME1'    'ITAB'    'NAME' ,
  'BSTNK'    'ITAB'    'CUST PO NO.' ,
  'VBELN'    'ITAB'    'SALES DOC NO.',
  'AUDAT'    'ITAB'    'SALES DOC DATE',
  'VBELN1'   'ITAB'    'BILLING DOC NO.' ,
  'FKDAT'    'ITAB'    'BILLING DATE',
  'NETWR1'   'ITAB'    'NET VALUE'  ,
  'MWSBK'    'ITAB'    'TAX AMOUNT' ,
  'CD_AMT'   'ITAB'    'CD AMOUNT' ,
  'AMT_DUE'  'ITAB'    'AMOUNT DUE' ,
  'FKART'    'ITAB'    'BILL TYPE' ,
  'BLART'    'ITAB'    'DOC TYPE' ,
  'AUGBL'    'ITAB'    'CLEARING DOC.' ,
  'DUE_DT'   'ITAB'    'DUE DATE',
  'ZTERM'    'ITAB'    'PAYMENT TERMS'.

ELSE.

  PERFORM FILL_CATALOG1 USING:

*  'VKBUR'    'ITAB'    'SALES OFFICE',
  'BEZEI'    'ITAB'    'BRANCH NAME',
  'KUNNR'    'ITAB'    'CUST CODE',
  'NAME1'    'ITAB'    'NAME' ,
  'BSTNK'    'ITAB'    'CUST PO NO.' ,
  'VBELN'    'ITAB'    'SALES DOC NO.',
  'AUDAT'    'ITAB'    'SALES DOC DATE',
  'VBELN1'   'ITAB'    'BILLING DOC NO.' ,
  'FKDAT'    'ITAB'    'BILLING DATE',
  'NETWR1'   'ITAB'    'NET VALUE'  ,
  'MWSBK'    'ITAB'    'TAX AMOUNT' ,
  'CD_AMT'   'ITAB'    'CD AMOUNT' ,
  'AMT_DUE'  'ITAB'    'AMOUNT DUE' ,
  'FKART'    'ITAB'    'BILL TYPE' ,
  'DUE_DT'   'ITAB'    'DUE DATE',
  'ZTERM'    'ITAB'    'PAYMENT TERMS'.

ENDIF.
*****

*******************************
IF SY-UNAME = 'BRANCH-KOL'.

SELECT DISTINCT A~VKBUR A~KUNNR A~VBELN A~AUDAT A~NETWR A~BSTNK B~VBELN C~BEZEI
                INTO (ITAB-VKBUR, ITAB-KUNNR, ITAB-VBELN, ITAB-AUDAT, ITAB-NETWR, ITAB-BSTNK, ITAB-VBELN1, ITAB-BEZEI)
                FROM VBAK AS A INNER JOIN VBRP AS B ON A~VBELN = B~AUBEL
                               INNER JOIN TVKBT AS C ON A~VKBUR = C~VKBUR
                               WHERE A~VKBUR IN ('E001','E003')
                               AND A~KUNNR IN KUNNR
                               AND C~SPRAS = 'EN'.
  APPEND ITAB.
ENDSELECT.

ELSEIF SY-UNAME = 'BRANCH-JAM'.

SELECT DISTINCT A~VKBUR A~KUNNR A~VBELN A~AUDAT A~NETWR A~BSTNK B~VBELN C~BEZEI
                INTO (ITAB-VKBUR, ITAB-KUNNR, ITAB-VBELN, ITAB-AUDAT, ITAB-NETWR, ITAB-BSTNK, ITAB-VBELN1, ITAB-BEZEI)
                FROM VBAK AS A INNER JOIN VBRP AS B ON A~VBELN = B~AUBEL
                               INNER JOIN TVKBT AS C ON A~VKBUR = C~VKBUR
                               WHERE A~VKBUR IN ('E002','E004')
                               AND A~KUNNR IN KUNNR
                               AND C~SPRAS = 'EN'.
  APPEND ITAB.
ENDSELECT.

ELSEIF SY-UNAME = 'BRANCH-DEL'.

SELECT DISTINCT A~VKBUR A~KUNNR A~VBELN A~AUDAT A~NETWR A~BSTNK B~VBELN C~BEZEI
                INTO (ITAB-VKBUR, ITAB-KUNNR, ITAB-VBELN, ITAB-AUDAT, ITAB-NETWR, ITAB-BSTNK, ITAB-VBELN1, ITAB-BEZEI)
                FROM VBAK AS A INNER JOIN VBRP AS B ON A~VBELN = B~AUBEL
                               INNER JOIN TVKBT AS C ON A~VKBUR = C~VKBUR
                               WHERE A~VKBUR IN ('N001','N005','N008','N009','N010')
                               AND A~KUNNR IN KUNNR
                               AND C~SPRAS = 'EN'.
  APPEND ITAB.
ENDSELECT.

ELSEIF SY-UNAME = 'BRANCH-MRT'.

SELECT DISTINCT A~VKBUR A~KUNNR A~VBELN A~AUDAT A~NETWR A~BSTNK B~VBELN C~BEZEI
                INTO (ITAB-VKBUR, ITAB-KUNNR, ITAB-VBELN, ITAB-AUDAT, ITAB-NETWR, ITAB-BSTNK, ITAB-VBELN1, ITAB-BEZEI)
                FROM VBAK AS A INNER JOIN VBRP AS B ON A~VBELN = B~AUBEL
                               INNER JOIN TVKBT AS C ON A~VKBUR = C~VKBUR
                               WHERE A~VKBUR IN ('N008')
                               AND A~KUNNR IN KUNNR
                               AND C~SPRAS = 'EN'.
  APPEND ITAB.
ENDSELECT.

ELSEIF SY-UNAME = 'BRANCH-LCK'.

SELECT DISTINCT A~VKBUR A~KUNNR A~VBELN A~AUDAT A~NETWR A~BSTNK B~VBELN C~BEZEI
                INTO (ITAB-VKBUR, ITAB-KUNNR, ITAB-VBELN, ITAB-AUDAT, ITAB-NETWR, ITAB-BSTNK, ITAB-VBELN1, ITAB-BEZEI)
                FROM VBAK AS A INNER JOIN VBRP AS B ON A~VBELN = B~AUBEL
                               INNER JOIN TVKBT AS C ON A~VKBUR = C~VKBUR
                               WHERE A~VKBUR IN ('N005')
                               AND A~KUNNR IN KUNNR
                               AND C~SPRAS = 'EN'.
  APPEND ITAB.
ENDSELECT.

ELSEIF SY-UNAME = 'BRANCH-BHO'.

SELECT DISTINCT A~VKBUR A~KUNNR A~VBELN A~AUDAT A~NETWR A~BSTNK B~VBELN C~BEZEI
                INTO (ITAB-VKBUR, ITAB-KUNNR, ITAB-VBELN, ITAB-AUDAT, ITAB-NETWR, ITAB-BSTNK, ITAB-VBELN1, ITAB-BEZEI)
                FROM VBAK AS A INNER JOIN VBRP AS B ON A~VBELN = B~AUBEL
                               INNER JOIN TVKBT AS C ON A~VKBUR = C~VKBUR
                               WHERE A~VKBUR IN ('N004','W004','N006','W006')
                               AND A~KUNNR IN KUNNR
                               AND C~SPRAS = 'EN'.
  APPEND ITAB.
ENDSELECT.

ELSEIF SY-UNAME = 'BRANCH-LDN'.

SELECT DISTINCT A~VKBUR A~KUNNR A~VBELN A~AUDAT A~NETWR A~BSTNK B~VBELN C~BEZEI
                INTO (ITAB-VKBUR, ITAB-KUNNR, ITAB-VBELN, ITAB-AUDAT, ITAB-NETWR, ITAB-BSTNK, ITAB-VBELN1, ITAB-BEZEI)
                FROM VBAK AS A INNER JOIN VBRP AS B ON A~VBELN = B~AUBEL
                               INNER JOIN TVKBT AS C ON A~VKBUR = C~VKBUR
                               WHERE A~VKBUR IN ('N002')
                               AND A~KUNNR IN KUNNR
                               AND C~SPRAS = 'EN'.
  APPEND ITAB.
ENDSELECT.

ELSEIF SY-UNAME = 'BRANCH-CHG'.

SELECT DISTINCT A~VKBUR A~KUNNR A~VBELN A~AUDAT A~NETWR A~BSTNK B~VBELN C~BEZEI
                INTO (ITAB-VKBUR, ITAB-KUNNR, ITAB-VBELN, ITAB-AUDAT, ITAB-NETWR, ITAB-BSTNK, ITAB-VBELN1, ITAB-BEZEI)
                FROM VBAK AS A INNER JOIN VBRP AS B ON A~VBELN = B~AUBEL
                               INNER JOIN TVKBT AS C ON A~VKBUR = C~VKBUR
                               WHERE A~VKBUR IN ('N007')
                               AND A~KUNNR IN KUNNR
                               AND C~SPRAS = 'EN'.
  APPEND ITAB.
ENDSELECT.

ELSEIF SY-UNAME = 'BRANCH-JPR'.

SELECT DISTINCT A~VKBUR A~KUNNR A~VBELN A~AUDAT A~NETWR A~BSTNK B~VBELN C~BEZEI
                INTO (ITAB-VKBUR, ITAB-KUNNR, ITAB-VBELN, ITAB-AUDAT, ITAB-NETWR, ITAB-BSTNK, ITAB-VBELN1, ITAB-BEZEI)
                FROM VBAK AS A INNER JOIN VBRP AS B ON A~VBELN = B~AUBEL
                               INNER JOIN TVKBT AS C ON A~VKBUR = C~VKBUR
                               WHERE A~VKBUR IN ('N003')
                               AND A~KUNNR IN KUNNR
                               AND C~SPRAS = 'EN'.
  APPEND ITAB.
ENDSELECT.

ELSEIF SY-UNAME = 'BRANCH-CHN'.

SELECT DISTINCT A~VKBUR A~KUNNR A~VBELN A~AUDAT A~NETWR A~BSTNK B~VBELN C~BEZEI
                INTO (ITAB-VKBUR, ITAB-KUNNR, ITAB-VBELN, ITAB-AUDAT, ITAB-NETWR, ITAB-BSTNK, ITAB-VBELN1, ITAB-BEZEI)
                FROM VBAK AS A INNER JOIN VBRP AS B ON A~VBELN = B~AUBEL
                               INNER JOIN TVKBT AS C ON A~VKBUR = C~VKBUR
                               WHERE A~VKBUR IN ('S001','S007')
                               AND A~KUNNR IN KUNNR
                               AND C~SPRAS = 'EN'.
  APPEND ITAB.
ENDSELECT.

ELSEIF SY-UNAME = 'BRANCH-COM'.

SELECT DISTINCT A~VKBUR A~KUNNR A~VBELN A~AUDAT A~NETWR A~BSTNK B~VBELN C~BEZEI
                INTO (ITAB-VKBUR, ITAB-KUNNR, ITAB-VBELN, ITAB-AUDAT, ITAB-NETWR, ITAB-BSTNK, ITAB-VBELN1, ITAB-BEZEI)
                FROM VBAK AS A INNER JOIN VBRP AS B ON A~VBELN = B~AUBEL
                               INNER JOIN TVKBT AS C ON A~VKBUR = C~VKBUR
                               WHERE A~VKBUR IN ('S002', 'S008')
                               AND A~KUNNR IN KUNNR
                               AND C~SPRAS = 'EN'.
  APPEND ITAB.
ENDSELECT.

ELSEIF SY-UNAME = 'BRANCH-BNG'.

SELECT DISTINCT A~VKBUR A~KUNNR A~VBELN A~AUDAT A~NETWR A~BSTNK B~VBELN C~BEZEI
                INTO (ITAB-VKBUR, ITAB-KUNNR, ITAB-VBELN, ITAB-AUDAT, ITAB-NETWR, ITAB-BSTNK, ITAB-VBELN1, ITAB-BEZEI)
                FROM VBAK AS A INNER JOIN VBRP AS B ON A~VBELN = B~AUBEL
                               INNER JOIN TVKBT AS C ON A~VKBUR = C~VKBUR
                               WHERE A~VKBUR IN ('S003', 'S009', 'S010')
                               AND A~KUNNR IN KUNNR
                               AND C~SPRAS = 'EN'.
  APPEND ITAB.
ENDSELECT.

ELSEIF SY-UNAME = 'BRANCH-HYD'.

SELECT DISTINCT A~VKBUR A~KUNNR A~VBELN A~AUDAT A~NETWR A~BSTNK B~VBELN C~BEZEI
                INTO (ITAB-VKBUR, ITAB-KUNNR, ITAB-VBELN, ITAB-AUDAT, ITAB-NETWR, ITAB-BSTNK, ITAB-VBELN1, ITAB-BEZEI)
                FROM VBAK AS A INNER JOIN VBRP AS B ON A~VBELN = B~AUBEL
                               INNER JOIN TVKBT AS C ON A~VKBUR = C~VKBUR
                               WHERE A~VKBUR IN ('S004','S006')
                               AND A~KUNNR IN KUNNR
                               AND C~SPRAS = 'EN'.
  APPEND ITAB.
ENDSELECT.

ELSEIF SY-UNAME = 'BRANCH-KOCH'.

SELECT DISTINCT A~VKBUR A~KUNNR A~VBELN A~AUDAT A~NETWR A~BSTNK B~VBELN C~BEZEI
                INTO (ITAB-VKBUR, ITAB-KUNNR, ITAB-VBELN, ITAB-AUDAT, ITAB-NETWR, ITAB-BSTNK, ITAB-VBELN1, ITAB-BEZEI)
                FROM VBAK AS A INNER JOIN VBRP AS B ON A~VBELN = B~AUBEL
                               INNER JOIN TVKBT AS C ON A~VKBUR = C~VKBUR
                               WHERE A~VKBUR IN ('S005')
                               AND A~KUNNR IN KUNNR
                               AND C~SPRAS = 'EN'.
  APPEND ITAB.
ENDSELECT.

ELSEIF SY-UNAME = 'BRANCH-MUM'.

SELECT DISTINCT A~VKBUR A~KUNNR A~VBELN A~AUDAT A~NETWR A~BSTNK B~VBELN C~BEZEI
                INTO (ITAB-VKBUR, ITAB-KUNNR, ITAB-VBELN, ITAB-AUDAT, ITAB-NETWR, ITAB-BSTNK, ITAB-VBELN1, ITAB-BEZEI)
                FROM VBAK AS A INNER JOIN VBRP AS B ON A~VBELN = B~AUBEL
                               INNER JOIN TVKBT AS C ON A~VKBUR = C~VKBUR
                               WHERE A~VKBUR IN ('W001')
                               AND A~KUNNR IN KUNNR
                               AND C~SPRAS = 'EN'.
  APPEND ITAB.
ENDSELECT.

ELSEIF SY-UNAME = 'BRANCH-PUN'.

SELECT DISTINCT A~VKBUR A~KUNNR A~VBELN A~AUDAT A~NETWR A~BSTNK B~VBELN C~BEZEI
                INTO (ITAB-VKBUR, ITAB-KUNNR, ITAB-VBELN, ITAB-AUDAT, ITAB-NETWR, ITAB-BSTNK, ITAB-VBELN1, ITAB-BEZEI)
                FROM VBAK AS A INNER JOIN VBRP AS B ON A~VBELN = B~AUBEL
                               INNER JOIN TVKBT AS C ON A~VKBUR = C~VKBUR
                               WHERE A~VKBUR IN ('W002')
                               AND A~KUNNR IN KUNNR
                               AND C~SPRAS = 'EN'.
  APPEND ITAB.
ENDSELECT.

ELSEIF SY-UNAME = 'BRANCH-AHM'.

SELECT DISTINCT A~VKBUR A~KUNNR A~VBELN A~AUDAT A~NETWR A~BSTNK B~VBELN C~BEZEI
                INTO (ITAB-VKBUR, ITAB-KUNNR, ITAB-VBELN, ITAB-AUDAT, ITAB-NETWR, ITAB-BSTNK, ITAB-VBELN1, ITAB-BEZEI)
                FROM VBAK AS A INNER JOIN VBRP AS B ON A~VBELN = B~AUBEL
                               INNER JOIN TVKBT AS C ON A~VKBUR = C~VKBUR
                               WHERE A~VKBUR IN ('W003','W005','N006','W007')
                               AND A~KUNNR IN KUNNR
                               AND C~SPRAS = 'EN'.
  APPEND ITAB.
ENDSELECT.

ELSE.
SELECT DISTINCT A~VKBUR A~KUNNR A~VBELN A~AUDAT A~NETWR A~BSTNK B~VBELN C~BEZEI
                INTO (ITAB-VKBUR, ITAB-KUNNR, ITAB-VBELN, ITAB-AUDAT, ITAB-NETWR, ITAB-BSTNK, ITAB-VBELN1, ITAB-BEZEI)
                FROM VBAK AS A INNER JOIN VBRP AS B ON A~VBELN = B~AUBEL
                               INNER JOIN TVKBT AS C ON A~VKBUR = C~VKBUR
                               WHERE A~VKBUR IN VKBUR
                               AND A~KUNNR IN KUNNR
                               AND C~SPRAS = 'EN'.
  APPEND ITAB.
ENDSELECT.
ENDIF.

SORT ITAB BY VBELN.
*************************************************************************************
LOOP AT ITAB.
  SELECT SINGLE FKDAT NETWR MWSBK KNUMV FKART FROM VBRK INTO (ITAB-FKDAT, ITAB-NETWR1, ITAB-MWSBK, ITAB-KNUMV, ITAB-FKART)
  WHERE VBELN = ITAB-VBELN1
  AND FKDAT IN FKDAT.

  IF SY-SUBRC NE 0.
    DELETE ITAB.
    CONTINUE.
  ENDIF.

  MODIFY ITAB INDEX SY-TABIX TRANSPORTING FKDAT NETWR1 MWSBK KNUMV FKART.
*************************************************************************************
  SELECT NAME1 FROM KNA1 INTO ITAB-NAME1 WHERE KUNNR = ITAB-KUNNR .
    MODIFY ITAB INDEX SY-TABIX TRANSPORTING NAME1 .
  ENDSELECT .
*************************************************************************************
  SELECT AUGBL BLART FROM BSAD INTO (ITAB-AUGBL, ITAB-BLART) WHERE BELNR = ITAB-VBELN1.
    MODIFY ITAB INDEX SY-TABIX TRANSPORTING AUGBL BLART.
  ENDSELECT .
*************************************************************************************
  SELECT ZTERM FROM VBKD INTO ITAB-ZTERM WHERE VBELN = ITAB-VBELN .
    MODIFY ITAB INDEX SY-TABIX TRANSPORTING ZTERM .
  ENDSELECT.
*************************************************************************************
  SELECT KNUMV KAWRT KBETR KSCHL INTO CORRESPONDING FIELDS OF TABLE ITAB1 FROM KONV
*  FOR ALL ENTRIES IN ITAB
               WHERE KNUMV = ITAB-KNUMV AND KSCHL IN ('SKTO') .
  X = 0.
  LOOP AT ITAB1 INTO WA1.
    ON CHANGE OF WA1-KNUMV.
      ITAB2[] = ITAB1[].
      DELETE ITAB2 WHERE KNUMV NE WA1-KNUMV.
    ENDON.
  ENDLOOP.

*************************************************************************************

  IF SY-SUBRC <> 0.
    IF FULL <> 'X'.
      DELETE ITAB.
      CONTINUE.
    ENDIF.
  ELSE.
*************************************************************************************
    LOOP AT ITAB2.
      X = X + ITAB2-KAWRT * ITAB2-KBETR / 1000 .
    ENDLOOP .

    ITAB-CD_AMT = X.
    MODIFY ITAB.
    REFRESH ITAB1.
    REFRESH ITAB2.
  ENDIF.
ENDLOOP .

*************************************************************************************
LOOP AT ITAB .
  ITAB-AMT_DUE = ITAB-NETWR1 + ITAB-MWSBK + ITAB-CD_AMT .
  MODIFY ITAB INDEX SY-TABIX TRANSPORTING AMT_DUE .
ENDLOOP .

*************************************************************************************
LOOP AT ITAB.
  SELECT SINGLE ZTAG1 INTO ITAB-DAYS FROM T052 WHERE ZTERM = ITAB-ZTERM.
  ITAB-DUE_DT = ITAB-FKDAT + ITAB-DAYS.

*******
  IF DUE_DT-LOW <> 0 OR DUE_DT-HIGH <> 0.
    IF DUE_DT-LOW = 0.
      DUE_DT-LOW = DUE_DT-HIGH.
    ENDIF.

    IF DUE_DT-HIGH = 0.
      DUE_DT-HIGH = DUE_DT-LOW.
    ENDIF.

    IF ITAB-DUE_DT LT DUE_DT-LOW OR ITAB-DUE_DT GT DUE_DT-HIGH.
      DELETE ITAB.
      CLEAR ITAB.
      CONTINUE.
    ENDIF.
  ENDIF.
*******

  MODIFY ITAB INDEX SY-TABIX TRANSPORTING DUE_DT .
ENDLOOP.
*************************************************************************************
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
  EXPORTING
    I_CALLBACK_PROGRAM = 'ZSALES_REPORT'
    IS_LAYOUT          = LAYOUT
    IT_FIELDCAT        = IT_FLD_CATALOG
    IT_SORT            = IT_SORT
    I_DEFAULT          = 'X'
    I_SAVE             = 'A'
  TABLES
    T_OUTTAB           = ITAB
  EXCEPTIONS
    PROGRAM_ERROR      = 1
    OTHERS             = 2.
IF SY-SUBRC <> 0.
* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
*         WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.

*&---------------------------------------------------------------------*
*&      Form  FILL_CATALOG1
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*      -->P_FIELDNAME  text
*      -->P_REF_TABLE  text
*      -->P_SCRTEXT    text
*----------------------------------------------------------------------*
FORM FILL_CATALOG1  USING   P_FIELDNAME TYPE ANY
                            P_REF_TABLE TYPE ANY
                            P_SCRTEXT   TYPE ANY.
  CLEAR : WA_FLD_CATALOG.
  WA_FLD_CATALOG-FIELDNAME  = P_FIELDNAME.
  WA_FLD_CATALOG-TABNAME    = P_REF_TABLE.
  WA_FLD_CATALOG-SELTEXT_S  = P_SCRTEXT.
  WA_FLD_CATALOG-SELTEXT_M  = P_SCRTEXT.
  WA_FLD_CATALOG-SELTEXT_L  = P_SCRTEXT.
  APPEND WA_FLD_CATALOG TO IT_FLD_CATALOG.

ENDFORM.                    " fill_catalog1

*******************************
********************************

Thanks...!!!!!!

Edited by: Alvaro Tejada Galindo on Jan 11, 2008 5:38 PM

Read only

0 Likes
850

Hi Prince-

There are a lot of changes need to be done in ur code:

First, DO NOT use SELECT-ENDSELECT. Always use SELECT into TABLE ITAB..

Secondly, you have used SELECT-ENDSELECT, SELECT SINGLE inside of a LOOP. Avoid using SELECT inside LOOP. Instead use READ statement inside LOOP.

the above two are the main reasons why ur program is very very slow. Make changes as told above and u will get ur problem resolved.

Best of luck!

Shakir

Read only

0 Likes
850

Hi Prince,

I hope your coding is paid by line. Thats what we use to call spaghetti code - use a fork to roll it up

To enhance the program, do not repeat the nearly identical SELECT statement a couple of times. The difference I can see is that you restrict do different sales offices depending on user.

Create a range for sales offices


data:
  lt_vkur type range of vbak-vkbur.

and fill it fifferently for users:


case sy-uname.
  when 'BRANCH-KOL'.
    perform insert_range using 'IEQ':
      'E001' '' changing lt_vkur,
      'E003' '' changing lt_vkur.
  when 'BRANCH-JAM.
* ...

endcase.

Then first select the order data using ... where vkbur in lt_vkbur...INNER JOIN TVKBT .. INTO corresponding fields of TABLE itab.

After that do a SELECT ... FOR ALL ENTRIES IN itab FROM VBRP - the where condition must have AUBELN and AUPOS.

Then put them together.

Sorry, luch time!

Regards,

Clemens

Read only

0 Likes
850

A couple of things:

Your SELECTS against VBAK don't use any key.

Further along, you LOOP AT itab, and within that loop, you do a SELECT FOR ALL ENTRIES IN itab.

Rob

Read only

0 Likes
850

Hi,

If u don't mind, Plz. Tell me where can i change in my code...for better performance...

Plz bold that code, where i need to change....

Thanks....

Read only

Former Member
0 Likes
850

Hi Prince,

To analyze the commands in red, place a cursor on the OPEN command of the query and click on the "explain query" button on application toolbar to get explanation on the query. It tells you whether the query is using any index or not, if not, then ensure the WHERE clause is structured to use an index either secondary and preferably primary,

Also, the button on application toolbar next to Explain, will take you to the query in the ABAP program (this will help you read the query).

Regards,

Aditya