<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:taxo="http://purl.org/rss/1.0/modules/taxonomy/" version="2.0">
  <channel>
    <title>topic Re: Performance tuning in Application Development and Automation Discussions</title>
    <link>https://community.sap.com/t5/application-development-and-automation-discussions/performance-tuning/m-p/3055392#M723558</link>
    <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Then this should take care of it:&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;PRE&gt;&lt;CODE&gt;IF NOT xstpox[] IS INITIAL.
  SELECT *
    FROM stko
    INTO TABLE t_stko
     FOR ALL ENTRIES IN xstpox
   WHERE stlty IN ('D', 'E', 'K', 'M', 'S', 'T', 'P')   "&amp;lt;=== added
     AND stlnr = xstpox-stlnr.
ENDIF.&lt;/CODE&gt;&lt;/PRE&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Rob&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
    <pubDate>Tue, 20 Nov 2007 17:13:02 GMT</pubDate>
    <dc:creator>Former Member</dc:creator>
    <dc:date>2007-11-20T17:13:02Z</dc:date>
    <item>
      <title>Performance tuning</title>
      <link>https://community.sap.com/t5/application-development-and-automation-discussions/performance-tuning/m-p/3055382#M723548</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hello Friends,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;I have developed a report to display Routing , Component Allocation Verification Report.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;It is taking hours to run this report. &lt;/P&gt;&lt;P&gt;Please suggest changes to be made to make it more efficient.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;This program does not include any custom Tables.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Thanks,&lt;/P&gt;&lt;P&gt;Ster.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;PRE&gt;&lt;CODE&gt;*&amp;amp;---------------------------------------------------------------------*
*&amp;amp; Report  ZCP0A128                                                        *
*&amp;amp;                                                                     *
*&amp;amp;---------------------------------------------------------------------*
*&amp;amp;                                                                     *
*&amp;amp;                                                                     *
*&amp;amp;---------------------------------------------------------------------*

REPORT  ZCP0A128  NO STANDARD PAGE HEADING
                  LINE-SIZE  80
                  LINE-COUNT 65(0)
                  MESSAGE-ID ZZ.

*Tables declaration
************************************************************************
TABLES : MARC, "	Plant Data for Material
         MKAL,
         MARA. "	Material Descriptions

TYPE-POOLS: KKBLO,
            SLIS.

DATA:       DISVARIANT   LIKE DISVARIANT,
            EVENTCAT     TYPE SLIS_T_EVENT,
            EVENTCAT_LN  LIKE LINE OF EVENTCAT,
            FIELDCAT     TYPE SLIS_T_FIELDCAT_ALV,
            FIELDCAT_KKB TYPE KKBLO_T_FIELDCAT,
            FIELDCAT_LN  LIKE LINE OF FIELDCAT,
            KEYINFO      TYPE SLIS_KEYINFO_ALV,
            LAYOUT       TYPE SLIS_LAYOUT_ALV,
            LAYOUT_KKB   TYPE KKBLO_LAYOUT,
            PGM          LIKE SY-REPID,
            PRINTCAT     TYPE SLIS_PRINT_ALV,
            SORTCAT      TYPE SLIS_T_SORTINFO_ALV,
            SORTCAT_LN   LIKE LINE OF SORTCAT,

            BEGIN OF COLTAB OCCURS 50,
              FIELDNAME LIKE FIELDCAT_LN-FIELDNAME,
            END OF COLTAB.

**************************************************************************
*Types Declaration
**************************************************************************
TYPES :

 BEGIN OF S_MARC_MKAL,
     MATNR LIKE MARC-MATNR,
     WERKS LIKE MARC-WERKS,
     DISPO LIKE MARC-DISPO,
     ADATU LIKE MKAL-ADATU,
     BDATU LIKE MKAL-BDATU,
     PLNTY LIKE MKAL-PLNTY,
 END OF S_MARC_MKAL,

 BEGIN OF S_BOM,
     MATNR_PRIM LIKE MARA-MATNR,
     MATNR_BOM  LIKE MARA-MATNR,
     STLNR      LIKE STPO-STLNR,
     PLNTY      LIKE MKAL-PLNTY,
 END OF S_BOM,

 BEGIN OF S_PLPO,
   PLNTY LIKE PLPO-PLNTY,
   PLNNR LIKE PLPO-PLNNR,
   PLNKN LIKE PLPO-PLNKN,
   ZAEHL LIKE PLPO-ZAEHL,
   DATUV LIKE PLPO-DATUV,
   AENNR LIKE PLPO-AENNR,
   LOEKZ LIKE PLPO-LOEKZ,
   PARKZ LIKE PLPO-PARKZ,
   SUMNR LIKE PLPO-SUMNR,
   VORNR LIKE PLPO-VORNR,
   STEUS LIKE PLPO-STEUS,
   ARBID LIKE PLPO-ARBID,
   OBJTY LIKE PLPO-OBJTY,
   WERKS LIKE PLPO-WERKS,
END OF S_PLPO,

 BEGIN OF S_PLKO,
   PLNTY LIKE PLKO-PLNTY,
   PLNNR LIKE PLKO-PLNNR,
   PLNAL LIKE PLKO-PLNAL,
   ZAEHL LIKE PLKO-ZAEHL,
   AENNR LIKE PLKO-AENNR,
   LOEKZ LIKE PLKO-LOEKZ,
   PARKZ LIKE PLKO-PARKZ,
   VERWE LIKE PLKO-VERWE,
   WERKS LIKE PLKO-WERKS,
END OF S_PLKO,

BEGIN OF S_MAKT,
   MATNR LIKE MAKT-MATNR,
   MAKTX LIKE MAKT-MAKTX,
END OF S_MAKT.

DATA : BEGIN OF S_MAPL.
        INCLUDE STRUCTURE MAPL.
DATA : END OF S_MAPL.

**************************************************************************
*Internal table declaration
**************************************************************************
DATA :

   BEGIN OF T_OUTPUT OCCURS 0,
     WERKS     LIKE MARC-WERKS,	
     MATNR     LIKE MARC-MATNR,
     PLNNR     LIKE PLPO-PLNNR,
     MATNR_COM LIKE MARC-MATNR,
     MAKTX_COM LIKE MAKT-MAKTX,
     VORNR     LIKE PLPO-VORNR,
     PLNAL     LIKE PLKO-PLNAL,
     PLNTY     LIKE MKAL-PLNTY,
     STLNR     LIKE STPOX-STLNR,
     STLAL     LIKE STPOX-STLAL,
   END OF T_OUTPUT.

DATA : T_MARC_MKAL   TYPE TABLE OF S_MARC_MKAL,
       T_BOM         TYPE TABLE OF S_BOM,
       T_PLPO        TYPE TABLE OF S_PLPO,
       T_PLKO        TYPE TABLE OF S_PLKO,
       T_MAKT        TYPE TABLE OF S_MAKT,
       T_MAPL        LIKE S_MAPL OCCURS 0.

DATA BEGIN OF T_PLMZ OCCURS 0.
        INCLUDE STRUCTURE PLMZ.
DATA END OF T_PLMZ.

DATA BEGIN OF T_STKO OCCURS 0.
        INCLUDE STRUCTURE STKO.
DATA END OF T_STKO.

DATA : T_STPOV TYPE STANDARD TABLE OF STPOV.


***************************************************************************
**Work Area Declaration
***************************************************************************
DATA : W_MARC_MKAL LIKE LINE OF T_MARC_MKAL,
       W_BOM       LIKE LINE OF T_BOM,
       W_PLPO      LIKE LINE OF T_PLPO,
       W_PLKO      LIKE LINE OF T_PLKO,
       W_MAKT      LIKE LINE OF T_MAKT,
       W_MAPL      LIKE LINE OF T_MAPL.

DATA : W_STPOV     LIKE LINE OF T_STPOV.

**************************************************************************
*Variable Declaration
**************************************************************************
DATA: V_DATUV LIKE SY-DATUM,
      V_DATUB LIKE SY-DATUM VALUE '99990101',
      V_REPID TYPE SYREPID,
      V_TABIX LIKE SY-TABIX,
      V_FLG(1),
      V_STLAL TYPE STKO-STLAL.
*************************************************************************
*     CSTMAT: structure for BOM material display
DATA: BEGIN OF XTOPMAT.
        INCLUDE STRUCTURE CSTMAT.
DATA: END OF XTOPMAT.

*     STPOX: structure for BOM item extended
DATA: BEGIN OF XSTPOX OCCURS 0.
        INCLUDE STRUCTURE STPOX.
DATA: END OF XSTPOX.

DATA : T_XSTPOX LIKE XSTPOX OCCURS 0 WITH HEADER LINE.

*     CSCMAT: structure for BOM Explosion Materials
DATA: BEGIN OF XMATCAT OCCURS 0.
        INCLUDE STRUCTURE  CSCMAT.
DATA: END OF XMATCAT.

DATA : XFELD      LIKE CSDATA-XFELD.

**************************************************************************
*SELECTION-SCREEN
**************************************************************************
SELECTION-SCREEN : BEGIN OF BLOCK 1 WITH FRAME TITLE TEXT-001.
SELECT-OPTIONS : P_WERKS FOR MARC-WERKS NO INTERVALS OBLIGATORY,
                 S_DISPO FOR MARC-DISPO OBLIGATORY,
                 S_MATNR FOR MARC-MATNR,
                 S_MTART FOR MARA-MTART,
                 P_ADATU FOR MKAL-ADATU NO INTERVALS OBLIGATORY
                                                     DEFAULT SY-DATUM,
                 P_BDATU FOR MKAL-BDATU NO INTERVALS OBLIGATORY
                                                     DEFAULT '99991231'.
PARAMETER: P_CAPID LIKE TC04-CAPID OBLIGATORY
                                   DEFAULT 'PP01'."Application identifier
SELECTION-SCREEN : END OF BLOCK 1.

* Parameter for list viewer display variant
*
PARAMETERS:    VARIANT  LIKE DISVARIANT-VARIANT.

DATA: PRINT          TYPE SLIS_PRINT_ALV.
**********************************************************************************

INITIALIZATION.
  V_REPID = SY-REPID.
  V_DATUV = SY-DATUM.
*----------------------------------------------------------------------*
* Set up constants and selection criteria                              *
*----------------------------------------------------------------------*
AT SELECTION-SCREEN ON VARIANT.
  CHECK NOT VARIANT IS INITIAL.
  PERFORM CHECK_VARIANT_EXISTENCE USING VARIANT 'U'.
*
AT SELECTION-SCREEN ON VALUE-REQUEST FOR VARIANT.
  PERFORM F4_DISPLAY_VARIANT USING VARIANT 'U'.

START-OF-SELECTION.

  PERFORM EXTRACT_EXTRACT_DATA.
  PERFORM DATA_PROCESSING.

**************************************************************************
*END-OF-SELECTION
**************************************************************************
END-OF-SELECTION.
  IF NOT T_OUTPUT[] IS INITIAL.
    PERFORM OUTPUT_SCREEN1.
  ELSE.
    MESSAGE I999 WITH 'No Records Selected'.
  ENDIF.








*&amp;amp;---------------------------------------------------------------------*
*&amp;amp;      Form  EXTRACT_EXTRACT_DATA
*&amp;amp;---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
FORM EXTRACT_EXTRACT_DATA .
  SELECT MARC~MATNR
         MARC~WERKS
         MARC~DISPO
         MKAL~ADATU
         MKAL~BDATU
         MKAL~PLNTY
    INTO TABLE T_MARC_MKAL
    FROM MARC
   INNER JOIN MKAL
      ON MARC~MATNR = MKAL~MATNR
   INNER JOIN MARA
      ON MARC~MATNR = MARA~MATNR
   WHERE MARC~MATNR IN S_MATNR
     AND MARC~WERKS IN P_WERKS
     AND MARC~DISPO IN S_DISPO
     AND MARC~MMSTA &amp;lt;&amp;gt; 'OB'
     AND MARA~MTART IN S_MTART.

  SORT T_MARC_MKAL BY MATNR WERKS.
  DELETE ADJACENT DUPLICATES FROM T_MARC_MKAL COMPARING MATNR WERKS.

  LOOP AT T_MARC_MKAL INTO W_MARC_MKAL.
    T_STKO-STLAL = '01'.
    PERFORM BOM_USAGE.
    LOOP AT XSTPOX WHERE SANFE = 'X'.
      W_BOM-MATNR_PRIM = W_MARC_MKAL-MATNR.
      W_BOM-MATNR_BOM  = XSTPOX-IDNRK.
      W_BOM-STLNR      = XSTPOX-STLNR.
      W_BOM-PLNTY      = W_MARC_MKAL-PLNTY.
      APPEND W_BOM TO T_BOM.
      APPEND XSTPOX TO T_XSTPOX.
    ENDLOOP.
    V_STLAL = XSTPOX-STLAL.

    IF NOT XSTPOX[] IS INITIAL.
      SELECT *
        FROM STKO
        INTO TABLE T_STKO
         FOR ALL ENTRIES IN XSTPOX
       WHERE STLNR = XSTPOX-STLNR.
    ENDIF.

    LOOP AT T_STKO WHERE STLAL &amp;lt;&amp;gt; V_STLAL
                     AND STLAL &amp;lt;&amp;gt; '01'.
      PERFORM BOM_USAGE.
      DELETE XSTPOX WHERE STLAL &amp;lt;&amp;gt; T_STKO-STLAL.

      LOOP AT XSTPOX WHERE SANFE = 'X'.
        W_BOM-MATNR_PRIM = W_MARC_MKAL-MATNR.
        W_BOM-MATNR_BOM  = XSTPOX-IDNRK.
        W_BOM-STLNR      = XSTPOX-STLNR.
        W_BOM-PLNTY      = W_MARC_MKAL-PLNTY.
        APPEND W_BOM TO T_BOM.
        APPEND XSTPOX TO T_XSTPOX.
      ENDLOOP.
    ENDLOOP.
  ENDLOOP.

  IF NOT T_XSTPOX[] IS INITIAL.

    SELECT MATNR MAKTX
       FROM MAKT
       INTO TABLE T_MAKT
        FOR ALL ENTRIES IN T_BOM
      WHERE MATNR = T_BOM-MATNR_BOM.

    IF NOT T_MARC_MKAL[] IS INITIAL.

      SELECT *
        INTO TABLE T_MAPL
        FROM MAPL
         FOR ALL ENTRIES IN T_MARC_MKAL
       WHERE MATNR = T_MARC_MKAL-MATNR
         AND WERKS IN P_WERKS
         AND LOEKZ NE 'X'.

      IF NOT T_MAPL[] IS INITIAL.

        SELECT *
          INTO TABLE T_PLMZ
          FROM PLMZ
           FOR ALL ENTRIES IN T_MAPL
         WHERE PLNTY EQ T_MAPL-PLNTY
           AND PLNNR EQ T_MAPL-PLNNR
           AND PLNAL EQ T_MAPL-PLNAL
           AND DATUV LE SY-DATUM
           AND LOEKZ NE 'X'.

        SELECT PLNTY  PLNNR  PLNKN  ZAEHL
               DATUV  AENNR  LOEKZ  PARKZ  SUMNR
               VORNR  STEUS  ARBID  OBJTY  WERKS
          INTO TABLE T_PLPO
          FROM PLPO
           FOR ALL ENTRIES IN T_MAPL
         WHERE PLNTY = T_MAPL-PLNTY
           AND PLNNR = T_MAPL-PLNNR
           AND LOEKZ NE 'X'.

        SELECT PLNTY PLNNR PLNAL
               ZAEHL AENNR LOEKZ PARKZ
               VERWE WERKS
          INTO TABLE T_PLKO
          FROM PLKO
                 FOR ALL ENTRIES IN T_MAPL
               WHERE PLNTY = T_MAPL-PLNTY
                 AND PLNNR = T_MAPL-PLNNR
                 AND LOEKZ NE 'X'.

      ENDIF.
    ENDIF.
  ENDIF.
ENDFORM.                    " EXTRACT_EXTRACT_DATA

*&amp;amp;---------------------------------------------------------------------*
*&amp;amp;      Form  DATA_PROCESSING
*&amp;amp;---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
FORM DATA_PROCESSING .

  SORT T_BOM BY MATNR_BOM STLNR.
  SORT T_MAKT BY MATNR.
  SORT T_MAPL BY  MATNR WERKS.
  SORT T_PLMZ BY PLNTY PLNNR PLNAL STLNR STLKN.
  SORT T_PLPO BY PLNTY PLNNR PLNKN.

  LOOP AT T_XSTPOX.

    READ TABLE T_BOM INTO W_BOM WITH KEY MATNR_BOM = T_XSTPOX-IDNRK
                                             STLNR = T_XSTPOX-STLNR
                                                      BINARY SEARCH.

    T_OUTPUT-MATNR     = W_BOM-MATNR_PRIM.
    T_OUTPUT-PLNTY     = W_BOM-PLNTY.
    T_OUTPUT-MATNR_COM = W_BOM-MATNR_BOM.
    T_OUTPUT-WERKS     = P_WERKS-LOW.
    T_OUTPUT-STLNR     = T_XSTPOX-STLNR.
    T_OUTPUT-STLAL     = T_XSTPOX-STLAL.

    READ TABLE T_MAKT INTO W_MAKT WITH KEY MATNR = W_BOM-MATNR_BOM
                                           BINARY SEARCH.
    T_OUTPUT-MAKTX_COM = W_MAKT-MAKTX.

    LOOP AT T_MAPL INTO W_MAPL WHERE MATNR = W_BOM-MATNR_PRIM
                                 AND WERKS = P_WERKS-LOW.

      T_OUTPUT-PLNNR = W_MAPL-PLNNR.

      READ TABLE T_PLMZ WITH KEY PLNTY = W_MAPL-PLNTY
                                 PLNNR = W_MAPL-PLNNR
                                 PLNAL = W_MAPL-PLNAL
                                 STLNR = T_XSTPOX-STLNR
                                 STLKN = T_XSTPOX-STLKN
                                 BINARY SEARCH.

      READ TABLE T_PLPO INTO W_PLPO WITH KEY  PLNTY = W_MAPL-PLNTY
                                              PLNNR = W_MAPL-PLNNR
                                              PLNKN = T_PLMZ-PLNKN
                                              BINARY SEARCH.
      T_OUTPUT-VORNR = W_PLPO-VORNR.
      T_OUTPUT-PLNAL = W_MAPL-PLNAL.

      APPEND T_OUTPUT.
    ENDLOOP.
    CLEAR : T_OUTPUT, W_MAKT, W_MAPL, W_PLPO, T_PLMZ.

  ENDLOOP.
  .
ENDFORM.                    " DATA_PROCESSING
*&amp;amp;---------------------------------------------------------------------*
*&amp;amp;      Form  BOM_USAGE
*&amp;amp;---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
FORM BOM_USAGE .

  CALL FUNCTION 'CS_BOM_EXPL_MAT_V2'
    EXPORTING
      FTREL                 = ' '
      ALTVO                 = ' '
      AUFSW                 = ' '
      AUSKZ                 = ' '
      BAGRP                 = ' '
      BEIKZ                 = ' '
      BESSL                 = ' '
      BGIXO                 = ' '
      BREMS                 = ' '
      CAPID                 = P_CAPID
      DATUV                 = V_DATUV
      EMENG                 = ' '
      ERSKZ                 = ' '
      ERSSL                 = ' '
      MBWLS                 = ' '
      MTNRV                 = W_MARC_MKAL-MATNR
      MDMPS                 = ' '
      MEHRS                 = ' '
      MMORY                 = ' '
      POSTP                 = ' '
      SANKO                 = ' '
      SANFR                 = ' '
      SANKA                 = ' '
      SANIN                 = ' '
      SANVS                 = ' '
      RNDKZ                 = ' '
      RVREL                 = ' '
      SCHGT                 = ' '
      STKKZ                 = ' '
      STLAL                 = T_STKO-STLAL
      STLAN                 = '1'
      WERKS                 = P_WERKS-LOW
    IMPORTING
      TOPMAT                = XTOPMAT
      DSTST                 = XFELD
    TABLES
      STB                   = XSTPOX
      MATCAT                = XMATCAT
    EXCEPTIONS
      ALT_NOT_FOUND         = 1
      CALL_INVALID          = 2
      MATERIAL_NOT_FOUND    = 3
      MISSING_AUTHORIZATION = 4
      NO_BOM_FOUND          = 5
      NO_PLANT_DATA         = 6
      NO_SUITABLE_BOM_FOUND = 7
      OTHERS                = 8.

ENDFORM.                    " BOM_USAGE
*&amp;amp;---------------------------------------------------------------------*
*&amp;amp;      Form  OUTPUT_SCREEN1
*&amp;amp;---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
FORM OUTPUT_SCREEN1 .

  PERFORM CALL_LIST_VIEWER.

ENDFORM.                    " OUTPUT_SCREEN1

*&amp;amp;---------------------------------------------------------------------*
*&amp;amp;      Form  CALL_LIST_VIEWER
*&amp;amp;---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*

FORM CALL_LIST_VIEWER .

  CLEAR: T_OUTPUT.

  PERFORM BUILD_FIELDCAT USING:
         'WERKS' 'T_OUTPUT'
          TEXT-001 'CHAR'       5 ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ',
         'MATNR' 'T_OUTPUT'
          TEXT-002 'CHAR'      18 ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ',
         'PLNTY' 'T_OUTPUT'
          TEXT-008 'CHAR'       4 ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ',
         'PLNNR' 'T_OUTPUT'
          TEXT-003 'CHAR'      10 ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ',
         'PLNAL' 'T_OUTPUT'
          TEXT-007 'CHAR'       5 ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ',
         'STLNR' 'T_OUTPUT'
          TEXT-009 'CHAR'      10 ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ',
         'STLAL' 'T_OUTPUT'
          TEXT-010 'CHAR'       7 ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ',
         'MATNR_COM' 'T_OUTPUT'
          TEXT-004 'CHAR'      18 ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ',
         'MAKTX_COM' 'T_OUTPUT'
          TEXT-005 'CHAR'      40 ' ' 'X' ' ' ' ' ' ' ' ' ' ' ' ',
         'VORNR' 'T_OUTPUT'
          TEXT-006 'CHAR'      10 ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' '.


  PERFORM BUILD_EVENTCAT USING: 'TOP_OF_LIST',
                                'TOP_OF_PAGE',
                                'USER_COMMAND'.
  SORT T_OUTPUT BY
       WERKS MATNR PLNTY PLNNR PLNAL STLNR STLAL.

  PERFORM LIST_DISPLAY TABLES T_OUTPUT.

ENDFORM.                    "call_list_viewer

*----------------------------------------------------------------------*
* build field catalog entry                                            *
*----------------------------------------------------------------------*
FORM BUILD_FIELDCAT USING A_FIELDNAME
                          A_TABNAME
                          A_HEADING
                          A_DATATYPE
                          A_OUTPUTLEN
                          A_KEY
                          A_NO_OUT
                          A_NO_SUM
                          A_DO_SUM
                          A_NO_ZERO
                          A_INPUT
                          A_SUM
                          A_CHECKBOX.

  CLEAR FIELDCAT_LN.
  FIELDCAT_LN-FIELDNAME = A_FIELDNAME.
  FIELDCAT_LN-TABNAME  = A_TABNAME.
  FIELDCAT_LN-OUTPUTLEN = A_OUTPUTLEN.
  FIELDCAT_LN-DATATYPE = A_DATATYPE.
  FIELDCAT_LN-REPTEXT_DDIC = A_HEADING.
  FIELDCAT_LN-KEY = A_KEY.
  FIELDCAT_LN-NO_OUT = A_NO_OUT.
  FIELDCAT_LN-NO_SUM = A_NO_SUM.
  FIELDCAT_LN-DO_SUM = A_DO_SUM.
  FIELDCAT_LN-NO_ZERO = A_NO_ZERO.
  FIELDCAT_LN-INPUT = A_INPUT.
  FIELDCAT_LN-DO_SUM = A_SUM.
  FIELDCAT_LN-CHECKBOX = A_CHECKBOX.
  APPEND FIELDCAT_LN TO FIELDCAT.

ENDFORM.                    "BUILD_FIELDCAT
*----------------------------------------------------------------------*
*       FORM BUILD_EVENTCAT
*----------------------------------------------------------------------*
FORM BUILD_EVENTCAT USING A_EVENT.

  EVENTCAT_LN-NAME = EVENTCAT_LN-FORM = A_EVENT.
  APPEND EVENTCAT_LN TO EVENTCAT.

ENDFORM.                    "BUILD_EVENTCAT
*----------------------------------------------------------------------*
* call the ABAP list viewer                                            *
*----------------------------------------------------------------------*
FORM LIST_DISPLAY TABLES A_OUTPUT.

  PGM = DISVARIANT-REPORT = SY-REPID.
  DISVARIANT-VARIANT = VARIANT.
* call list viewer
  CALL FUNCTION 'REUSE_ALV_LIST_DISPLAY'
    EXPORTING
      I_CALLBACK_PROGRAM       = PGM
*      I_CALLBACK_PF_STATUS_SET = 'SET_PF_STATUS'
      IT_FIELDCAT              = FIELDCAT
      IS_VARIANT               = DISVARIANT
      IS_LAYOUT                = LAYOUT
      IS_PRINT                 = PRINT
      I_SAVE                   = 'A'
      IT_EVENTS                = EVENTCAT
      IT_SORT                  = SORTCAT
      I_CALLBACK_USER_COMMAND  = 'USER_COMMAND'
    TABLES
      T_OUTTAB                 = A_OUTPUT
    EXCEPTIONS
      PROGRAM_ERROR            = 1
      OTHERS                   = 2.

ENDFORM.                    "LIST_DISPLAY

*----------------------------------------------------------------------*
*       FORM CHECK_VARIANT_EXISTENCE
*----------------------------------------------------------------------*
*       Verify that a variant on the selection screen exists
*----------------------------------------------------------------------*
FORM CHECK_VARIANT_EXISTENCE USING VARNAME LIKE DISVARIANT-VARIANT
                                   SAVE   TYPE C.

  DATA: XDISVAR LIKE DISVARIANT.

  XDISVAR-REPORT  = SY-REPID.
  XDISVAR-VARIANT = VARNAME.

  CALL FUNCTION 'REUSE_ALV_VARIANT_EXISTENCE'
    EXPORTING
      I_SAVE        = SAVE
    CHANGING
      CS_VARIANT    = XDISVAR
    EXCEPTIONS
      WRONG_INPUT   = 1
      NOT_FOUND     = 2
      PROGRAM_ERROR = 3
      OTHERS        = 4.

  IF SY-SUBRC &amp;lt;&amp;gt; 0.
    MESSAGE E256(56) WITH VARNAME.
*   Anzeigevariante &amp;amp;1 nicht gefunden
  ENDIF.

  DISVARIANT-REPORT  = SY-REPID.
  DISVARIANT-VARIANT = VARNAME.

ENDFORM.                    "check_variant_existence
*----------------------------------------------------------------------*
*       Form  F4_DISPLAY_VARIANT
*----------------------------------------------------------------------*
*       F4 help to find a display variant
*       varname = name of the dynpro field for which f4 is requested
*       save    = type of list variant saving
*                 ' ' = no saving allowed
*                 'A' = standard &amp;amp; user specific variants can be saved
*                 'U' = only user specific variants can be saved
*                 'X' = only standard variants can be saved
*----------------------------------------------------------------------*
FORM F4_DISPLAY_VARIANT USING VARNAME LIKE DISVARIANT-VARIANT
                              SAVE    TYPE C.

  DISVARIANT-REPORT = SY-REPID.

  CALL FUNCTION 'REUSE_ALV_VARIANT_F4'
    EXPORTING
      IS_VARIANT    = DISVARIANT
      I_SAVE        = SAVE
    IMPORTING
      ES_VARIANT    = DISVARIANT
    EXCEPTIONS
      NOT_FOUND     = 1
      PROGRAM_ERROR = 2
      OTHERS        = 3.

  IF SY-SUBRC = 0.
    VARNAME = DISVARIANT-VARIANT.
  ELSE.
    MESSAGE S245(56).
*   Keine Anzeigevariante(n) vorhanden
  ENDIF.
ENDFORM.                               " F4_DISPLAY_VARIANT&lt;/CODE&gt;&lt;/PRE&gt;&lt;P&gt;&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Tue, 20 Nov 2007 16:17:29 GMT</pubDate>
      <guid>https://community.sap.com/t5/application-development-and-automation-discussions/performance-tuning/m-p/3055382#M723548</guid>
      <dc:creator>Former Member</dc:creator>
      <dc:date>2007-11-20T16:17:29Z</dc:date>
    </item>
    <item>
      <title>Re: Performance tuning</title>
      <link>https://community.sap.com/t5/application-development-and-automation-discussions/performance-tuning/m-p/3055383#M723549</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi Ster,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt; You have used &amp;lt;&amp;gt; at so many places in the where clauses first avoid that&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt; there are 2 instances you had used Loop...indide loop... avoid that.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt; Avoid Select Queries inside the loops. Select data outside the loop and use read statements inside the loop.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Regards,&lt;/P&gt;&lt;P&gt;Satish&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Tue, 20 Nov 2007 16:22:47 GMT</pubDate>
      <guid>https://community.sap.com/t5/application-development-and-automation-discussions/performance-tuning/m-p/3055383#M723549</guid>
      <dc:creator>Former Member</dc:creator>
      <dc:date>2007-11-20T16:22:47Z</dc:date>
    </item>
    <item>
      <title>Re: Performance tuning</title>
      <link>https://community.sap.com/t5/application-development-and-automation-discussions/performance-tuning/m-p/3055384#M723550</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;For starters, I think you've got a cartesian product on your MARC-MKAL join, you need to be joining on WERKS as well.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Run a SQL trace using ST05 and use the output to pinpoint further issues&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Tue, 20 Nov 2007 16:25:53 GMT</pubDate>
      <guid>https://community.sap.com/t5/application-development-and-automation-discussions/performance-tuning/m-p/3055384#M723550</guid>
      <dc:creator>Former Member</dc:creator>
      <dc:date>2007-11-20T16:25:53Z</dc:date>
    </item>
    <item>
      <title>Re: Performance tuning</title>
      <link>https://community.sap.com/t5/application-development-and-automation-discussions/performance-tuning/m-p/3055385#M723551</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Thanks Satish.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;I always try to avoid select within a loop.&lt;/P&gt;&lt;P&gt;But in this case I am not able to avoid it.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Do you think it can be acheived by any alternative way?&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Ster.&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Tue, 20 Nov 2007 16:26:36 GMT</pubDate>
      <guid>https://community.sap.com/t5/application-development-and-automation-discussions/performance-tuning/m-p/3055385#M723551</guid>
      <dc:creator>Former Member</dc:creator>
      <dc:date>2007-11-20T16:26:36Z</dc:date>
    </item>
    <item>
      <title>Re: Performance tuning</title>
      <link>https://community.sap.com/t5/application-development-and-automation-discussions/performance-tuning/m-p/3055386#M723552</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi Ster,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;1) Select data using View V_LI_PA rather than Join condition on MARA, MKAL and MARC tables.&lt;/P&gt;&lt;P&gt;2) Remove Select statements from inside the loops. Rather use select for all entries.&lt;/P&gt;&lt;P&gt;3) Use View M_MAT1R for selecting on tables MAKT and MAPL.&lt;/P&gt;&lt;P&gt;4) Use View M_PLKSC for selecting on tables MAPL and PLKO.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Hope it helps.&lt;/P&gt;&lt;P&gt;Lokesh&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Tue, 20 Nov 2007 16:28:21 GMT</pubDate>
      <guid>https://community.sap.com/t5/application-development-and-automation-discussions/performance-tuning/m-p/3055386#M723552</guid>
      <dc:creator>Former Member</dc:creator>
      <dc:date>2007-11-20T16:28:21Z</dc:date>
    </item>
    <item>
      <title>Re: Performance tuning</title>
      <link>https://community.sap.com/t5/application-development-and-automation-discussions/performance-tuning/m-p/3055387#M723553</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Please try this.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;PRE&gt;&lt;CODE&gt;
...

SELECT MARC~MATNR
         MARC~WERKS
         MARC~DISPO
         MKAL~ADATU
         MKAL~BDATU
         MKAL~PLNTY
    INTO TABLE T_MARC_MKAL
    FROM MARC
   INNER JOIN MKAL
      ON MARC~MATNR = MKAL~MATNR AND
         MARC~WERKS = MKAL~WERKS                "Add here
   INNER JOIN MARA
      ON MARC~MATNR = MARA~MATNR
   WHERE MARC~MATNR IN S_MATNR
     AND MARC~WERKS IN P_WERKS
     AND MARC~DISPO IN S_DISPO
     AND MARC~MMSTA &amp;lt;&amp;gt; 'OB'
     AND MARA~MTART IN S_MTART.

...
&lt;/CODE&gt;&lt;/PRE&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Regards,&lt;/P&gt;&lt;P&gt;Ferry Lianto&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Tue, 20 Nov 2007 16:28:56 GMT</pubDate>
      <guid>https://community.sap.com/t5/application-development-and-automation-discussions/performance-tuning/m-p/3055387#M723553</guid>
      <dc:creator>ferry_lianto</dc:creator>
      <dc:date>2007-11-20T16:28:56Z</dc:date>
    </item>
    <item>
      <title>Re: Performance tuning</title>
      <link>https://community.sap.com/t5/application-development-and-automation-discussions/performance-tuning/m-p/3055388#M723554</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Thanks Chris.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;I will look at it.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Ster&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Tue, 20 Nov 2007 16:30:59 GMT</pubDate>
      <guid>https://community.sap.com/t5/application-development-and-automation-discussions/performance-tuning/m-p/3055388#M723554</guid>
      <dc:creator>Former Member</dc:creator>
      <dc:date>2007-11-20T16:30:59Z</dc:date>
    </item>
    <item>
      <title>Re: Performance tuning</title>
      <link>https://community.sap.com/t5/application-development-and-automation-discussions/performance-tuning/m-p/3055389#M723555</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Thanks Everyone.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;I have done an SQL Trace and looks like it is taking time to fetch data from STKO table.&lt;/P&gt;&lt;P&gt;ANyone has better suggestions to get from stko.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Ster&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Tue, 20 Nov 2007 16:32:41 GMT</pubDate>
      <guid>https://community.sap.com/t5/application-development-and-automation-discussions/performance-tuning/m-p/3055389#M723555</guid>
      <dc:creator>Former Member</dc:creator>
      <dc:date>2007-11-20T16:32:41Z</dc:date>
    </item>
    <item>
      <title>Re: Performance tuning</title>
      <link>https://community.sap.com/t5/application-development-and-automation-discussions/performance-tuning/m-p/3055390#M723556</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Avoid * in select Query and fetch data for required fields. Also try to use all the key fields in the where clause at least by passing blank ranges.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Regards,&lt;/P&gt;&lt;P&gt;Satish&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Tue, 20 Nov 2007 16:36:33 GMT</pubDate>
      <guid>https://community.sap.com/t5/application-development-and-automation-discussions/performance-tuning/m-p/3055390#M723556</guid>
      <dc:creator>Former Member</dc:creator>
      <dc:date>2007-11-20T16:36:33Z</dc:date>
    </item>
    <item>
      <title>Re: Performance tuning</title>
      <link>https://community.sap.com/t5/application-development-and-automation-discussions/performance-tuning/m-p/3055391#M723557</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;You can read table MAST to get all key fields for STKO instead of PERFORM BOM_USAGE. &lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Perhaps you can add another join table MAST as part of populating internal table T_MARC_MKAL by adding fields STLAN, STLNR, STLAL.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Try something like this.&lt;/P&gt;&lt;PRE&gt;&lt;CODE&gt;
...

SELECT MARC~MATNR
       MARC~WERKS
       MARC~DISPO
       MKAL~ADATU
       MKAL~BDATU
       MKAL~PLNTY
       MAST~STLAN
       MAST~STLNR
       MAST~STLAL
INTO TABLE T_MARC_MKAL
FROM MARC
INNER JOIN MKAL
   ON MARC~MATNR = MKAL~MATNR AND
      MARC~WERKS = MKAL~WERKS                
INNER JOIN MARA
   ON MARC~MATNR = MARA~MATNR
INNER JOIN MAST
   ON MARC~MATNR = MAST~MATNR
      MARC~WERKS = MAST~WERKS
WHERE MARC~MATNR IN S_MATNR
  AND MARC~WERKS IN P_WERKS
  AND MARC~DISPO IN S_DISPO
  AND MARC~MMSTA &amp;lt;&amp;gt; 'OB'
  AND MARA~MTART IN S_MTART.

LOOP AT T_MARC_MKAL INTO W_MARC_MKAL.
  
     SELECT *
     FROM STKO
     INTO TABLE T_STKO
     WHERE STLTY =  W_MARC_MKAL-STLAN
       AND STLNR =  W_MARC_MKAL-STLNR 
       AND STLAL =  W_MARC_MKAL-STLAL.
...
&lt;/CODE&gt;&lt;/PRE&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Regards,&lt;/P&gt;&lt;P&gt;Ferry Lianto&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Tue, 20 Nov 2007 16:59:41 GMT</pubDate>
      <guid>https://community.sap.com/t5/application-development-and-automation-discussions/performance-tuning/m-p/3055391#M723557</guid>
      <dc:creator>ferry_lianto</dc:creator>
      <dc:date>2007-11-20T16:59:41Z</dc:date>
    </item>
    <item>
      <title>Re: Performance tuning</title>
      <link>https://community.sap.com/t5/application-development-and-automation-discussions/performance-tuning/m-p/3055392#M723558</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Then this should take care of it:&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;PRE&gt;&lt;CODE&gt;IF NOT xstpox[] IS INITIAL.
  SELECT *
    FROM stko
    INTO TABLE t_stko
     FOR ALL ENTRIES IN xstpox
   WHERE stlty IN ('D', 'E', 'K', 'M', 'S', 'T', 'P')   "&amp;lt;=== added
     AND stlnr = xstpox-stlnr.
ENDIF.&lt;/CODE&gt;&lt;/PRE&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Rob&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Tue, 20 Nov 2007 17:13:02 GMT</pubDate>
      <guid>https://community.sap.com/t5/application-development-and-automation-discussions/performance-tuning/m-p/3055392#M723558</guid>
      <dc:creator>Former Member</dc:creator>
      <dc:date>2007-11-20T17:13:02Z</dc:date>
    </item>
    <item>
      <title>Re: Performance tuning</title>
      <link>https://community.sap.com/t5/application-development-and-automation-discussions/performance-tuning/m-p/3055393#M723559</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Thanks Ferry and ROb,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;I guess this should solve the problem.&lt;/P&gt;&lt;P&gt;I will try out and will get back.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Rob,&lt;/P&gt;&lt;P&gt;Can you explain why did u add this statement and have hardcoded this values.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Ster.&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Tue, 20 Nov 2007 17:39:33 GMT</pubDate>
      <guid>https://community.sap.com/t5/application-development-and-automation-discussions/performance-tuning/m-p/3055393#M723559</guid>
      <dc:creator>Former Member</dc:creator>
      <dc:date>2007-11-20T17:39:33Z</dc:date>
    </item>
    <item>
      <title>Re: Performance tuning</title>
      <link>https://community.sap.com/t5/application-development-and-automation-discussions/performance-tuning/m-p/3055394#M723560</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;I agree it seems a bit odd at first, but when you are missing one index field from a SELECT, putting that field in with all possible values (from the domain here) can get the SELECT to use the index.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Please see:&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;lt;a href="/people/rob.burbank/blog/2006/09/13/using-an-index-when-you-dont-have-all-of-the-fields"&amp;gt;Using an Index When You Don't Have all of the Fields&amp;lt;/a&amp;gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Rob&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Tue, 20 Nov 2007 18:15:35 GMT</pubDate>
      <guid>https://community.sap.com/t5/application-development-and-automation-discussions/performance-tuning/m-p/3055394#M723560</guid>
      <dc:creator>Former Member</dc:creator>
      <dc:date>2007-11-20T18:15:35Z</dc:date>
    </item>
    <item>
      <title>Re: Performance tuning</title>
      <link>https://community.sap.com/t5/application-development-and-automation-discussions/performance-tuning/m-p/3055395#M723561</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Thanks Ferry,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;By using MAST table the run time has reduced a lot. Thanks for the help.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Ster..&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Tue, 20 Nov 2007 19:42:14 GMT</pubDate>
      <guid>https://community.sap.com/t5/application-development-and-automation-discussions/performance-tuning/m-p/3055395#M723561</guid>
      <dc:creator>Former Member</dc:creator>
      <dc:date>2007-11-20T19:42:14Z</dc:date>
    </item>
  </channel>
</rss>

