<?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 improvement in Application Development and Automation Discussions</title>
    <link>https://community.sap.com/t5/application-development-and-automation-discussions/performance-improvement/m-p/3851614#M925896</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;u have avoidable SELECT-ENDSELECTs(some in Loop too) in ur code. why dont u popualte into to an internal table instead of populating the data into work area and then appending into the table.&lt;/P&gt;&lt;P&gt;say like this:&lt;/P&gt;&lt;P&gt;SELECT * FROM PRPS WHERE PKOKR = P_KOKRS AND PRCTR IN S_PRCTR. &lt;/P&gt;&lt;P&gt;WBS_TAB-INTNO = PRPS-PSPNR. &lt;/P&gt;&lt;P&gt;WBS_TAB-OBJNR = PRPS-OBJNR. &lt;/P&gt;&lt;P&gt;WBS_TAB-PRCTR = PRPS-PRCTR.&lt;/P&gt;&lt;P&gt;WBS_TAB-PSPHI = PRPS-PSPHI.&lt;/P&gt;&lt;P&gt;APPEND WBS_TAB. &lt;/P&gt;&lt;P&gt;ENDSELECT. &lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;directly populate into internal table.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;regards,&lt;/P&gt;&lt;P&gt;madhumitha&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
    <pubDate>Fri, 09 May 2008 09:14:50 GMT</pubDate>
    <dc:creator>Former Member</dc:creator>
    <dc:date>2008-05-09T09:14:50Z</dc:date>
    <item>
      <title>Performance improvement</title>
      <link>https://community.sap.com/t5/application-development-and-automation-discussions/performance-improvement/m-p/3851613#M925895</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi All,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Please check the below main logic code of report and change the code to improve the performance of the report, because its taking too much time to run.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;START-OF-SELECTION.&lt;/P&gt;&lt;P&gt;*******************&lt;/P&gt;&lt;P&gt;  CALL FUNCTION 'Z_PRT_PROTOCOL_REPORT_CALL'.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;DISPLAY SELECTIONS IF REQUESTED&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;-------------------------------&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  PERFORM DISPLAY_SELECTIONS.                               &lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  CALL FUNCTION 'SAPGUI_PROGRESS_INDICATOR'&lt;/P&gt;&lt;P&gt;       EXPORTING&lt;/P&gt;&lt;P&gt;            TEXT   = 'Obtaining WBS Elements'&lt;/P&gt;&lt;P&gt;       EXCEPTIONS&lt;/P&gt;&lt;P&gt;            OTHERS = 1.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  PERFORM GET_CURR_RATE USING TKA01-WAERS SY-DATUM          &lt;/P&gt;&lt;P&gt;                        CHANGING GS_CORATE.                 &lt;/P&gt;&lt;P&gt;  SELECT * FROM TKA02 WHERE KOKRS = P_KOKRS.                &lt;/P&gt;&lt;P&gt;  ENDSELECT.                                                &lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  REFRESH WBS_TAB.&lt;/P&gt;&lt;P&gt;  CLEAR WBS_TAB.&lt;/P&gt;&lt;P&gt;  REFRESH CURR_TAB.                                        &lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Build s_pctr from Profit Center Group.         &lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  IF NOT P_PRCTRH IS INITIAL.                    &lt;/P&gt;&lt;P&gt;    PERFORM BUILD_HIERARCHY.                     &lt;/P&gt;&lt;P&gt;  ENDIF.                                         &lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  IF NOT S_PRCTR-LOW IS INITIAL.                            &lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    IF P_ALL = 'X' OR P_INDIR = 'X'.                        &lt;/P&gt;&lt;P&gt;      SELECT KOSTL PRCTR FROM CSKS INTO TABLE GT_CSKS       &lt;/P&gt;&lt;P&gt;             WHERE PRCTR IN S_PRCTR                                      AND datbi =&amp;gt; sy-datum.                         &lt;/P&gt;&lt;P&gt;    ENDIF.                                                 &lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    SELECT * FROM PRPS WHERE PKOKR = P_KOKRS   AND PRCTR IN S_PRCTR.                     &lt;/P&gt;&lt;P&gt;      WBS_TAB-INTNO = PRPS-PSPNR.                          &lt;/P&gt;&lt;P&gt;      WBS_TAB-OBJNR = PRPS-OBJNR.                          &lt;/P&gt;&lt;P&gt;      WBS_TAB-PRCTR = PRPS-PRCTR.&lt;/P&gt;&lt;P&gt;      WBS_TAB-PSPHI = PRPS-PSPHI.&lt;/P&gt;&lt;P&gt;      APPEND WBS_TAB.                                       &lt;/P&gt;&lt;P&gt;    ENDSELECT.                                              &lt;/P&gt;&lt;P&gt;    SORT WBS_TAB BY INTNO.                                  &lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    IF P_ALL = 'X' OR P_INDIR = 'X'.                        &lt;/P&gt;&lt;P&gt;      SORT GT_CSKS BY KOSTL.                                &lt;/P&gt;&lt;P&gt;      PERFORM PROCESS_MAIN_CC.                              &lt;/P&gt;&lt;P&gt;    ENDIF.&lt;/P&gt;&lt;P&gt;    PERFORM PROCESS_MAIN_WBS.                               &lt;/P&gt;&lt;P&gt;    PERFORM OBTAIN_OTHER_DATA.                              &lt;/P&gt;&lt;P&gt;  ELSEIF NOT S_KOSTL IS INITIAL.&lt;/P&gt;&lt;P&gt;    CLEAR GT_CSKS.                               &lt;/P&gt;&lt;P&gt;    REFRESH GT_CSKS.                             &lt;/P&gt;&lt;P&gt;    SELECT KOSTL PRCTR FROM CSKS INTO TABLE GT_CSKS&lt;/P&gt;&lt;P&gt;           WHERE KOKRS = P_KOKRS                 &lt;/P&gt;&lt;P&gt;           AND KOSTL IN S_KOSTL                  &lt;/P&gt;&lt;P&gt;           AND datbi =&amp;gt; sy-datum.                &lt;/P&gt;&lt;P&gt;    PERFORM PROCESS_MAIN_CC.                     &lt;/P&gt;&lt;P&gt;    PERFORM OBTAIN_OTHER_DATA.&lt;/P&gt;&lt;P&gt;  ELSEIF NOT WBS IS INITIAL.                                &lt;/P&gt;&lt;P&gt;    PERFORM BUILD_WBS_HIERARCHY.&lt;/P&gt;&lt;P&gt;    SORT WBS_TAB BY INTNO.&lt;/P&gt;&lt;P&gt;    PERFORM PROCESS_MAIN_WBS.&lt;/P&gt;&lt;P&gt;    PERFORM OBTAIN_OTHER_DATA.                              &lt;/P&gt;&lt;P&gt;  ELSE.                                                     &lt;/P&gt;&lt;P&gt;    PERFORM PROCESS_MAIN_PO.                                &lt;/P&gt;&lt;P&gt;    PERFORM OBTAIN_OTHER_DATA.                             &lt;/P&gt;&lt;P&gt;  ENDIF.                                                   &lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;FORM PROCESS_MAIN_WBS.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  CALL FUNCTION 'SAPGUI_PROGRESS_INDICATOR'&lt;/P&gt;&lt;P&gt;       EXPORTING&lt;/P&gt;&lt;P&gt;            TEXT   = 'Obtaining PO data'&lt;/P&gt;&lt;P&gt;       EXCEPTIONS&lt;/P&gt;&lt;P&gt;            OTHERS = 1.&lt;/P&gt;&lt;P&gt;  DATA: LC_PSPID LIKE PROJ-PSPID.&lt;/P&gt;&lt;P&gt;  LOOP AT WBS_TAB.&lt;/P&gt;&lt;P&gt;    CLEAR: HOLD_PO_NBR,                                     &lt;/P&gt;&lt;P&gt;           HOLD_PO_LINE.                                    &lt;/P&gt;&lt;P&gt;    SELECT * FROM EKKN&lt;/P&gt;&lt;P&gt;             WHERE PS_PSP_PNR = WBS_TAB-INTNO&lt;/P&gt;&lt;P&gt;             AND EBELN IN S_PO&lt;/P&gt;&lt;P&gt;             AND KOKRS = P_KOKRS.&lt;/P&gt;&lt;P&gt;      CHECK EKKN-LOEKZ &amp;lt;&amp;gt; 'X'.&lt;/P&gt;&lt;P&gt;      CLEAR GC_PROFL.&lt;/P&gt;&lt;P&gt;      WRITE WBS_TAB-PSPHI TO LC_PSPID.&lt;/P&gt;&lt;P&gt;*select direct projects only if p_direct = 'X'.&lt;/P&gt;&lt;P&gt;      IF P_DIRECT = 'X'.                         &lt;/P&gt;&lt;P&gt;        SELECT SINGLE PROFL FROM PROJ INTO GC_PROFL         &lt;/P&gt;&lt;P&gt;               WHERE PSPID = LC_PSPID.           &lt;/P&gt;&lt;P&gt;        IF GC_PROFL+4(3) = '002'                 &lt;/P&gt;&lt;P&gt;        OR GC_PROFL+4(3) = '007'.                &lt;/P&gt;&lt;P&gt;          CONTINUE.                              &lt;/P&gt;&lt;P&gt;        ENDIF.                                   &lt;/P&gt;&lt;P&gt;      ENDIF.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;select indirect projects and cost centers only when p_indir = 'X'.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;      IF P_INDIR = 'X'.                          &lt;/P&gt;&lt;P&gt;        SELECT SINGLE PROFL FROM PROJ INTO GC_PROFL         &lt;/P&gt;&lt;P&gt;               WHERE PSPID = LC_PSPID.           &lt;/P&gt;&lt;P&gt;        IF GC_PROFL+4(3) NE '002'                &lt;/P&gt;&lt;P&gt;        AND GC_PROFL+4(3) NE '007'.              &lt;/P&gt;&lt;P&gt;          CONTINUE.                              &lt;/P&gt;&lt;P&gt;        ENDIF.                                   &lt;/P&gt;&lt;P&gt;      ENDIF.                                     &lt;/P&gt;&lt;P&gt;      CLEAR: GC_EINDT,                           &lt;/P&gt;&lt;P&gt;             GC_PRCTR.                           &lt;/P&gt;&lt;P&gt;      GC_PRCTR = WBS_TAB-PRCTR.                  &lt;/P&gt;&lt;P&gt;      PERFORM PROCESS_MAIN2.&lt;/P&gt;&lt;P&gt;    ENDSELECT.&lt;/P&gt;&lt;P&gt;  ENDLOOP.&lt;/P&gt;&lt;P&gt;ENDFORM.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;      FORM PROCESS_MAIN_PO                                          *&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;STRONG&gt;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;      ........                                                      *&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;STRONG&gt;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;FORM PROCESS_MAIN_PO.                                       &lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  CALL FUNCTION 'SAPGUI_PROGRESS_INDICATOR'&lt;/P&gt;&lt;P&gt;       EXPORTING&lt;/P&gt;&lt;P&gt;            TEXT   = 'Obtaining data via PO nbr'&lt;/P&gt;&lt;P&gt;       EXCEPTIONS&lt;/P&gt;&lt;P&gt;            OTHERS = 1.&lt;/P&gt;&lt;P&gt;  CLEAR: HOLD_PO_NBR, HOLD_PO_LINE.                         &lt;/P&gt;&lt;P&gt;  SELECT * FROM EKKN WHERE EBELN IN S_PO AND KOKRS = P_KOKRS.&lt;/P&gt;&lt;P&gt;    CHECK EKKN-LOEKZ &amp;lt;&amp;gt; 'X'.&lt;/P&gt;&lt;P&gt;    CLEAR: GC_EINDT,                             &lt;/P&gt;&lt;P&gt;           GC_PRCTR.                             &lt;/P&gt;&lt;P&gt;    GC_PRCTR = EKKN-PRCTR.                       &lt;/P&gt;&lt;P&gt;    PERFORM PROCESS_MAIN2.&lt;/P&gt;&lt;P&gt;  ENDSELECT.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;ENDFORM.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;      FORM OBTAIN_OTHER_DATA                                        *&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;STRONG&gt;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;      ........                                                      *&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;STRONG&gt;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;FORM OBTAIN_OTHER_DATA.                                     &lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  CALL FUNCTION 'SAPGUI_PROGRESS_INDICATOR'&lt;/P&gt;&lt;P&gt;       EXPORTING&lt;/P&gt;&lt;P&gt;            TEXT   = 'Obtain GR Transactions'&lt;/P&gt;&lt;P&gt;       EXCEPTIONS&lt;/P&gt;&lt;P&gt;            OTHERS = 1.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  SORT ITAB BY PO_NO LINE ZEKKN.                            &lt;/P&gt;&lt;P&gt;  LOOP AT ITAB.                                             &lt;/P&gt;&lt;P&gt;    ON CHANGE OF ITAB-PO_NO OR                              &lt;/P&gt;&lt;P&gt;                 ITAB-LINE.                                 &lt;/P&gt;&lt;P&gt;      PERFORM GET_GR_AMTS_FOR_PO_LINE.                      &lt;/P&gt;&lt;P&gt;    ENDON.                                                  &lt;/P&gt;&lt;P&gt;  ENDLOOP.                                                  &lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  CALL FUNCTION 'SAPGUI_PROGRESS_INDICATOR'&lt;/P&gt;&lt;P&gt;       EXPORTING&lt;/P&gt;&lt;P&gt;            TEXT   = 'Obtain IR Transactions'&lt;/P&gt;&lt;P&gt;       EXCEPTIONS&lt;/P&gt;&lt;P&gt;            OTHERS = 1.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  SORT GR_TAB BY PO_NO LINE ZEKKN.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  LOOP AT ITAB.                                             &lt;/P&gt;&lt;P&gt;    PERFORM MOVE_GR_AMTS_TO_ITAB.                           &lt;/P&gt;&lt;P&gt;    PERFORM GET_IR_AMTS_FOR_PO_LINE.                        &lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    PERFORM FIGURE_COMMITMENTS_COOI.                        &lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  perform figure_committments.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    MODIFY ITAB.                                            &lt;/P&gt;&lt;P&gt;  ENDLOOP.                                                  &lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  CALL FUNCTION 'SAPGUI_PROGRESS_INDICATOR'&lt;/P&gt;&lt;P&gt;       EXPORTING&lt;/P&gt;&lt;P&gt;            TEXT   = 'Obtaining Other Data'&lt;/P&gt;&lt;P&gt;       EXCEPTIONS&lt;/P&gt;&lt;P&gt;            OTHERS = 1.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  SORT ITAB BY VEND_NO.&lt;/P&gt;&lt;P&gt;  LOOP AT ITAB.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    ON CHANGE OF ITAB-VEND_NO.&lt;/P&gt;&lt;P&gt;      CLEAR LFA1.&lt;/P&gt;&lt;P&gt;      SELECT SINGLE * FROM LFA1 WHERE LIFNR = ITAB-VEND_NO.&lt;/P&gt;&lt;P&gt;    ENDON.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    ITAB-VEND_NAME = LFA1-NAME1.&lt;/P&gt;&lt;P&gt;    MODIFY ITAB.&lt;/P&gt;&lt;P&gt;  ENDLOOP.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  SORT ITAB BY WBS.&lt;/P&gt;&lt;P&gt;  LOOP AT ITAB WHERE NOT WBS IS INITIAL.&lt;/P&gt;&lt;P&gt;    ON CHANGE OF ITAB-WBS.&lt;/P&gt;&lt;P&gt;      CLEAR: PRPS, PROJ.&lt;/P&gt;&lt;P&gt;      SELECT SINGLE * FROM PRPS WHERE PSPNR = ITAB-WBS.&lt;/P&gt;&lt;P&gt;      SELECT SINGLE * FROM PROJ WHERE PSPNR = PRPS-PSPHI.   &lt;/P&gt;&lt;P&gt;    ENDON.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    ITAB-OBJ_TITLE = PRPS-POST1.&lt;/P&gt;&lt;P&gt;    ITAB-COST_OBJ = PRPS-POSID.                             &lt;/P&gt;&lt;P&gt;    ITAB-PROJ_NBR = PROJ-PSPID.                             &lt;/P&gt;&lt;P&gt;    MODIFY ITAB.&lt;/P&gt;&lt;P&gt;  ENDLOOP.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  SORT ITAB BY KOSTL.                                       &lt;/P&gt;&lt;P&gt;  LOOP AT ITAB WHERE NOT KOSTL IS INITIAL.                  &lt;/P&gt;&lt;P&gt;    ON CHANGE OF ITAB-KOSTL.                                &lt;/P&gt;&lt;P&gt;      CLEAR CSKT.                                           &lt;/P&gt;&lt;P&gt;      SELECT * FROM CSKT WHERE KOKRS = P_KOKRS              &lt;/P&gt;&lt;P&gt;                           AND KOSTL = ITAB-KOSTL.          &lt;/P&gt;&lt;P&gt;      ENDSELECT.                                            &lt;/P&gt;&lt;P&gt;    ENDON.                                                  &lt;/P&gt;&lt;P&gt;    ITAB-OBJ_TITLE = CSKT-KTEXT.                            &lt;/P&gt;&lt;P&gt;    WRITE CSKT-KOSTL TO ITAB-COST_OBJ.                      &lt;/P&gt;&lt;P&gt;    MODIFY ITAB.                                            &lt;/P&gt;&lt;P&gt;  ENDLOOP.                                                  &lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  SORT ITAB BY AUFNR.                                       &lt;/P&gt;&lt;P&gt;  LOOP AT ITAB WHERE NOT AUFNR IS INITIAL.                  &lt;/P&gt;&lt;P&gt;    ON CHANGE OF ITAB-AUFNR.                                &lt;/P&gt;&lt;P&gt;      CLEAR COAS.                                           &lt;/P&gt;&lt;P&gt;      SELECT SINGLE * FROM COAS WHERE AUFNR = ITAB-AUFNR.   &lt;/P&gt;&lt;P&gt;    ENDON.                                                  &lt;/P&gt;&lt;P&gt;    ITAB-OBJ_TITLE = COAS-KTEXT.                            &lt;/P&gt;&lt;P&gt;    WRITE COAS-AUFNR TO ITAB-COST_OBJ.                      &lt;/P&gt;&lt;P&gt;    MODIFY ITAB.                                            &lt;/P&gt;&lt;P&gt;  ENDLOOP.                                                  &lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  SORT ITAB BY ANLN1.                                       &lt;/P&gt;&lt;P&gt;  LOOP AT ITAB WHERE NOT ANLN1 IS INITIAL.                  &lt;/P&gt;&lt;P&gt;    ON CHANGE OF ITAB-ANLN1.                                &lt;/P&gt;&lt;P&gt;      CLEAR ANLA.                                           &lt;/P&gt;&lt;P&gt;      SELECT * FROM ANLA WHERE BUKRS = TKA02-BUKRS          &lt;/P&gt;&lt;P&gt;                              AND ANLN1 = ITAB-ANLN1.       &lt;/P&gt;&lt;P&gt;      ENDSELECT.                                            &lt;/P&gt;&lt;P&gt;    ENDON.                                                  &lt;/P&gt;&lt;P&gt;    ITAB-OBJ_TITLE = ANLA-TXT50.                            &lt;/P&gt;&lt;P&gt;    WRITE ANLA-ANLN1 TO ITAB-COST_OBJ.                      &lt;/P&gt;&lt;P&gt;    MODIFY ITAB.                                            &lt;/P&gt;&lt;P&gt;  ENDLOOP.                                                  &lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  LOOP AT ITAB.&lt;/P&gt;&lt;P&gt;    MOVE-CORRESPONDING ITAB TO SUM_TAB.&lt;/P&gt;&lt;P&gt;    COLLECT SUM_TAB.&lt;/P&gt;&lt;P&gt;  ENDLOOP.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;ENDFORM.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;************************************************************************&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;FUNCTION:  PROCESS_MAIN2                                             *&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;DESCRIPTION:                                                         *&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;************************************************************************&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;FORM PROCESS_MAIN2.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  SELECT SINGLE * FROM EKKO WHERE EBELN = EKKN-EBELN.&lt;/P&gt;&lt;P&gt;  CHECK EKKO-LIFNR IN VEND_NO.&lt;/P&gt;&lt;P&gt;  CHECK EKKO-AEDAT IN S_POCDAT.                             &lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  SELECT SINGLE * FROM EKPO WHERE EBELN = EKKN-EBELN AND&lt;/P&gt;&lt;P&gt;                                  EBELP = EKKN-EBELP.&lt;/P&gt;&lt;P&gt;  CHECK EKPO-LOEKZ &amp;lt;&amp;gt; 'L' AND&lt;/P&gt;&lt;P&gt;        EKPO-LOEKZ &amp;lt;&amp;gt; 'S'.                                  &lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  SELECT SINGLE EINDT FROM EKET INTO GC_EINDT    &lt;/P&gt;&lt;P&gt;    WHERE EBELN = EKPO-EBELN                     &lt;/P&gt;&lt;P&gt;    AND EBELP   = EKPO-EBELP                     &lt;/P&gt;&lt;P&gt;    AND EINDT IN S_EINDT.                        &lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  IF NOT S_EINDT IS INITIAL.                     &lt;/P&gt;&lt;P&gt;    CHECK GC_EINDT IN S_EINDT.                   &lt;/P&gt;&lt;P&gt;  ENDIF.                                         &lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  CLEAR ITAB.&lt;/P&gt;&lt;P&gt;  ITAB-PO_CREATE = EKKO-AEDAT.                              &lt;/P&gt;&lt;P&gt;  ITAB-DEL_DAT   = GC_EINDT.                     &lt;/P&gt;&lt;P&gt;  ITAB-PO_NO     = EKKO-EBELN.&lt;/P&gt;&lt;P&gt;  ITAB-CURR_PO   = EKKO-WAERS.&lt;/P&gt;&lt;P&gt;  ITAB-CURR_CO   = TKA01-WAERS.&lt;/P&gt;&lt;P&gt;  ITAB-LINE      = EKPO-EBELP.&lt;/P&gt;&lt;P&gt;  ITAB-GR_SW     = EKPO-WEPOS.&lt;/P&gt;&lt;P&gt;  ITAB-GR_NON_VAL_SW = EKPO-WEUNB.&lt;/P&gt;&lt;P&gt;  IF EKPO-WEUNB = 'X'.                 "Goods Receipt, Non-Value&lt;/P&gt;&lt;P&gt;    ITAB-GR_SW = ''.        "switch evaluation of commitment to IR&lt;/P&gt;&lt;P&gt;  ENDIF.&lt;/P&gt;&lt;P&gt;  ITAB-TEXT       = EKPO-TXZ01.&lt;/P&gt;&lt;P&gt;  ITAB-QTY_ORD    = EKPO-MENGE.&lt;/P&gt;&lt;P&gt;  ITAB-UOM        = EKPO-MEINS.&lt;/P&gt;&lt;P&gt;  ITAB-AMOUNT_DOC = EKPO-EFFWR.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  ITAB-WBS = EKKN-PS_PSP_PNR.&lt;/P&gt;&lt;P&gt;  ITAB-COST_ELEM = EKKN-SAKTO.                              &lt;/P&gt;&lt;P&gt;  ITAB-KOSTL = EKKN-KOSTL.                                  &lt;/P&gt;&lt;P&gt;  ITAB-PRCTR = GC_PRCTR.&lt;/P&gt;&lt;P&gt;  ITAB-ANLN1 = EKKN-ANLN1.                                  &lt;/P&gt;&lt;P&gt;  ITAB-AUFNR = EKKN-AUFNR.                                  &lt;/P&gt;&lt;P&gt;  ITAB-ZEKKN = EKKN-ZEKKN.                                  &lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  IF EKKN-VPROZ &amp;lt;&amp;gt; 0.&lt;/P&gt;&lt;P&gt;    PERCENT = EKKN-MENGE / EKPO-MENGE.&lt;/P&gt;&lt;P&gt;    ITAB-AMOUNT_DOC = ITAB-AMOUNT_DOC * PERCENT .&lt;/P&gt;&lt;P&gt;    ITAB-QTY_ORD = ITAB-QTY_ORD * PERCENT .&lt;/P&gt;&lt;P&gt;  ENDIF.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  IF ITAB-CURR_CO NE ITAB-CURR_PO.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  itab-amount_co = itab-amount_doc * ekko-wkurs.&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;       Convert from PO curr to CO currency&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;    GS_CONV_AMT = ITAB-AMOUNT_DOC / GS_CORATE.&lt;/P&gt;&lt;P&gt;    PERFORM GET_CURR_RATE USING ITAB-CURR_PO EKKO-AEDAT&lt;/P&gt;&lt;P&gt;                          CHANGING GS_RATE.&lt;/P&gt;&lt;P&gt;    ITAB-AMOUNT_CO =  GS_CONV_AMT * GS_RATE.&lt;/P&gt;&lt;P&gt;  ELSE.&lt;/P&gt;&lt;P&gt;    ITAB-AMOUNT_CO = ITAB-AMOUNT_DOC.&lt;/P&gt;&lt;P&gt;  ENDIF.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;       Convert from PO curr to CO Code currency&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  CLEAR: ITAB-CURR_LOC, GS_RATE.&lt;/P&gt;&lt;P&gt;  PERFORM GET_COCD_RATE USING EKKO-BUKRS&lt;/P&gt;&lt;P&gt;                        CHANGING ITAB-CURR_LOC GS_RATE.&lt;/P&gt;&lt;P&gt;  IF ITAB-CURR_LOC NE ITAB-CURR_PO.&lt;/P&gt;&lt;UL&gt;&lt;UL&gt;&lt;UL&gt;&lt;LI level="3" type="ul"&gt;&lt;P&gt;                Get company code/local currency and rate.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;/UL&gt;&lt;/UL&gt;&lt;P&gt;    GS_CONV_AMT = ITAB-AMOUNT_DOC / GS_RATE.&lt;/P&gt;&lt;P&gt;    PERFORM GET_CURR_RATE USING ITAB-CURR_PO ITAB-PO_CREATE&lt;/P&gt;&lt;P&gt;                          CHANGING GS_RATE.&lt;/P&gt;&lt;P&gt;    ITAB-AMOUNT_LOC =  GS_CONV_AMT * GS_RATE.&lt;/P&gt;&lt;P&gt;  ELSE.&lt;/P&gt;&lt;P&gt;    ITAB-AMOUNT_LOC = ITAB-AMOUNT_DOC.&lt;/P&gt;&lt;P&gt;  ENDIF.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  ITAB-VEND_NO   = EKKO-LIFNR.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt; if itab-amount_doc &amp;lt;&amp;gt; 0.                               &lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  APPEND ITAB.&lt;/P&gt;&lt;P&gt;  CLEAR ITAB.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt; endif.                                                  &lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt; clear itab.                                           &lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;ENDFORM.&lt;/P&gt;&lt;P&gt;FORM PROCESS_MAIN_CC.&lt;/P&gt;&lt;P&gt;  CALL FUNCTION 'SAPGUI_PROGRESS_INDICATOR'&lt;/P&gt;&lt;P&gt;       EXPORTING&lt;/P&gt;&lt;P&gt;            TEXT   = 'Obtaining PO data'&lt;/P&gt;&lt;P&gt;       EXCEPTIONS&lt;/P&gt;&lt;P&gt;            OTHERS = 1.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  LOOP AT GT_CSKS.&lt;/P&gt;&lt;P&gt;    SELECT * FROM EKKN&lt;/P&gt;&lt;P&gt;             WHERE KOSTL = GT_CSKS-KOSTL&lt;/P&gt;&lt;P&gt;             AND EBELN IN S_PO&lt;/P&gt;&lt;P&gt;             AND KOKRS = P_KOKRS.&lt;/P&gt;&lt;P&gt;      CHECK EKKN-LOEKZ &amp;lt;&amp;gt; 'X'.&lt;/P&gt;&lt;P&gt;      CLEAR: GC_EINDT,&lt;/P&gt;&lt;P&gt;             GC_PRCTR.&lt;/P&gt;&lt;P&gt;      GC_PRCTR = GT_CSKS-PRCTR.&lt;/P&gt;&lt;P&gt;      PERFORM PROCESS_MAIN2.&lt;/P&gt;&lt;P&gt;    ENDSELECT.&lt;/P&gt;&lt;P&gt;  ENDLOOP.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;ENDFORM.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Edited by: Subramanyam Sesetty on May 9, 2008 11:13 AM&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Fri, 09 May 2008 09:05:52 GMT</pubDate>
      <guid>https://community.sap.com/t5/application-development-and-automation-discussions/performance-improvement/m-p/3851613#M925895</guid>
      <dc:creator>Former Member</dc:creator>
      <dc:date>2008-05-09T09:05:52Z</dc:date>
    </item>
    <item>
      <title>Re: Performance improvement</title>
      <link>https://community.sap.com/t5/application-development-and-automation-discussions/performance-improvement/m-p/3851614#M925896</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;u have avoidable SELECT-ENDSELECTs(some in Loop too) in ur code. why dont u popualte into to an internal table instead of populating the data into work area and then appending into the table.&lt;/P&gt;&lt;P&gt;say like this:&lt;/P&gt;&lt;P&gt;SELECT * FROM PRPS WHERE PKOKR = P_KOKRS AND PRCTR IN S_PRCTR. &lt;/P&gt;&lt;P&gt;WBS_TAB-INTNO = PRPS-PSPNR. &lt;/P&gt;&lt;P&gt;WBS_TAB-OBJNR = PRPS-OBJNR. &lt;/P&gt;&lt;P&gt;WBS_TAB-PRCTR = PRPS-PRCTR.&lt;/P&gt;&lt;P&gt;WBS_TAB-PSPHI = PRPS-PSPHI.&lt;/P&gt;&lt;P&gt;APPEND WBS_TAB. &lt;/P&gt;&lt;P&gt;ENDSELECT. &lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;directly populate into internal table.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;regards,&lt;/P&gt;&lt;P&gt;madhumitha&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Fri, 09 May 2008 09:14:50 GMT</pubDate>
      <guid>https://community.sap.com/t5/application-development-and-automation-discussions/performance-improvement/m-p/3851614#M925896</guid>
      <dc:creator>Former Member</dc:creator>
      <dc:date>2008-05-09T09:14:50Z</dc:date>
    </item>
    <item>
      <title>Re: Performance improvement</title>
      <link>https://community.sap.com/t5/application-development-and-automation-discussions/performance-improvement/m-p/3851615#M925897</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Yes i did that, is there any other things....&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Fri, 09 May 2008 09:17:42 GMT</pubDate>
      <guid>https://community.sap.com/t5/application-development-and-automation-discussions/performance-improvement/m-p/3851615#M925897</guid>
      <dc:creator>Former Member</dc:creator>
      <dc:date>2008-05-09T09:17:42Z</dc:date>
    </item>
    <item>
      <title>Re: Performance improvement</title>
      <link>https://community.sap.com/t5/application-development-and-automation-discussions/performance-improvement/m-p/3851616#M925898</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;i think u can avoid select * statement also instead of that use &lt;/P&gt;&lt;P&gt;select F1 F2 F3 &lt;/P&gt;&lt;P&gt;         from xxxx&lt;/P&gt;&lt;P&gt;         into itab&lt;/P&gt;&lt;P&gt;         where.......&lt;/P&gt;&lt;P&gt;        ...........&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;If u have to get 70% of the fields from a table then only u should use select* . if u have to retrieve only 5 to 6 fields from table then specify only those fields.&lt;/P&gt;&lt;P&gt;hope it will help u.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Regards,&lt;/P&gt;&lt;P&gt;kk.&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Fri, 09 May 2008 09:30:32 GMT</pubDate>
      <guid>https://community.sap.com/t5/application-development-and-automation-discussions/performance-improvement/m-p/3851616#M925898</guid>
      <dc:creator>Former Member</dc:creator>
      <dc:date>2008-05-09T09:30:32Z</dc:date>
    </item>
    <item>
      <title>Re: Performance improvement</title>
      <link>https://community.sap.com/t5/application-development-and-automation-discussions/performance-improvement/m-p/3851617#M925899</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;Have u removed the selects from the loop? u can instead read the table inside the LOOP. As  kusuma said, u can avoid select *.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;In the code below, u can actually populate the sum_tab in the first loop itself. try to combine the subsequent loops, if possible.&lt;/P&gt;&lt;P&gt;Ex: &lt;/P&gt;&lt;PRE&gt;&lt;CODE&gt;LOOP AT ITAB WHERE NOT ANLN1 IS INITIAL. 
ON CHANGE OF ITAB-ANLN1. 
CLEAR ANLA. 
SELECT * FROM ANLA WHERE BUKRS = TKA02-BUKRS 
AND ANLN1 = ITAB-ANLN1. 
ENDSELECT. 
ENDON. 
ITAB-OBJ_TITLE = ANLA-TXT50. 
WRITE ANLA-ANLN1 TO ITAB-COST_OBJ. 
MODIFY ITAB. 
ENDLOOP. 

LOOP AT ITAB.
MOVE-CORRESPONDING ITAB TO SUM_TAB.
COLLECT SUM_TAB.
ENDLOOP.&lt;/CODE&gt;&lt;/PRE&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;regards,&lt;/P&gt;&lt;P&gt;madhumitha&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Fri, 09 May 2008 09:49:27 GMT</pubDate>
      <guid>https://community.sap.com/t5/application-development-and-automation-discussions/performance-improvement/m-p/3851617#M925899</guid>
      <dc:creator>Former Member</dc:creator>
      <dc:date>2008-05-09T09:49:27Z</dc:date>
    </item>
    <item>
      <title>Re: Performance improvement</title>
      <link>https://community.sap.com/t5/application-development-and-automation-discussions/performance-improvement/m-p/3851618#M925900</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi&lt;/P&gt;&lt;P&gt;Avoid select-endselect.&lt;/P&gt;&lt;P&gt;selects widin loops&lt;/P&gt;&lt;P&gt;try using select single *.....&lt;/P&gt;&lt;P&gt;slect all entries..&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;for more info refer the following links if will get good performance tuning hwlp especially for select queries&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;A href="http://www.erpgenie.com/abap/performance.htm" target="test_blank"&gt;http://www.erpgenie.com/abap/performance.htm&lt;/A&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;kindly reward points if helpful.&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Sat, 10 May 2008 02:06:53 GMT</pubDate>
      <guid>https://community.sap.com/t5/application-development-and-automation-discussions/performance-improvement/m-p/3851618#M925900</guid>
      <dc:creator>Former Member</dc:creator>
      <dc:date>2008-05-10T02:06:53Z</dc:date>
    </item>
  </channel>
</rss>

