<?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: Bad Performance - Exceed time limit in Application Development and Automation Discussions</title>
    <link>https://community.sap.com/t5/application-development-and-automation-discussions/bad-performance-exceed-time-limit/m-p/2873620#M674299</link>
    <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hey Mark,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Did any of us solve your problem. If yes please reward points and close the thread or else please let us know what went wrong.&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
    <pubDate>Tue, 09 Oct 2007 16:48:52 GMT</pubDate>
    <dc:creator>Former Member</dc:creator>
    <dc:date>2007-10-09T16:48:52Z</dc:date>
    <item>
      <title>Bad Performance - Exceed time limit</title>
      <link>https://community.sap.com/t5/application-development-and-automation-discussions/bad-performance-exceed-time-limit/m-p/2873613#M674292</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi Friends,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;I have written a program to generate a report using the table EKBE, EKKO.  The purpose of the report is to find the pending IR against the GR for a given period and vendor.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Whenever I execute this report, the sytem throws Run-time error for Maximum time limit exceed.  &lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;The code written is as follows :&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*************************************************************************&lt;/P&gt;&lt;UL&gt;&lt;UL&gt;&lt;LI level="2" type="ul"&gt;&lt;P&gt; START OF SELECTION.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;/UL&gt;&lt;P&gt;************************************************************************&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;                       * GR PART UPDATION *                           *&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;SELECT * FROM EKBE&lt;/P&gt;&lt;P&gt;    INTO  CORRESPONDING FIELDS OF TABLE I_PO_ITEM_GR&lt;/P&gt;&lt;P&gt;    WHERE GJAHR EQ P_GJAHR AND&lt;/P&gt;&lt;P&gt;          BEWTP = 'E' AND&lt;/P&gt;&lt;P&gt;          BUDAT IN GRDAT AND&lt;/P&gt;&lt;P&gt;          MATNR IN SMATL.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;SORT I_PO_ITEM_GR BY BELNR.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;LOOP AT I_PO_ITEM_GR.&lt;/P&gt;&lt;P&gt;  IF I_PO_ITEM_GR-BWART = '101'.&lt;/P&gt;&lt;P&gt;    I_PO_ITEM_GR-MENGE   = I_PO_ITEM_GR-MENGE * 1.&lt;/P&gt;&lt;P&gt;    I_PO_ITEM_GR-DMBTR = I_PO_ITEM_GR-DMBTR * 1.&lt;/P&gt;&lt;P&gt;  ELSEIF I_PO_ITEM_GR-BWART = '102'.&lt;/P&gt;&lt;P&gt;    I_PO_ITEM_GR-MENGE   = I_PO_ITEM_GR-MENGE * -1.&lt;/P&gt;&lt;P&gt;    I_PO_ITEM_GR-DMBTR = I_PO_ITEM_GR-DMBTR * -1.&lt;/P&gt;&lt;P&gt;    MODIFY I_PO_ITEM_GR INDEX SY-TABIX.&lt;/P&gt;&lt;P&gt;  ENDIF.&lt;/P&gt;&lt;P&gt;ENDLOOP.&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;                       * IR PART UPDATION *                           *&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;LOOP AT I_PO_ITEM_GR.&lt;/P&gt;&lt;P&gt;  SELECT * FROM EKBE&lt;/P&gt;&lt;P&gt;      INTO  CORRESPONDING FIELDS OF TABLE I_PO_ITEM_IR_TEMP&lt;/P&gt;&lt;P&gt;      WHERE GJAHR EQ P_GJAHR AND&lt;/P&gt;&lt;P&gt;            BEWTP = 'Q' AND&lt;/P&gt;&lt;P&gt;            EBELP = I_PO_ITEM_GR-EBELP AND&lt;/P&gt;&lt;P&gt;            LFBNR = I_PO_ITEM_GR-BELNR.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  APPEND LINES OF I_PO_ITEM_IR_TEMP TO I_PO_ITEM_IR.&lt;/P&gt;&lt;P&gt;ENDLOOP.&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;                    * GR UPDATION WITH PO DETAILS  *                  *&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;LOOP AT I_PO_ITEM_GR.&lt;/P&gt;&lt;P&gt;  CTRL = SY-TABIX.&lt;/P&gt;&lt;P&gt;  READ TABLE I_PO_ITEM_IR WITH KEY LFBNR = I_PO_ITEM_GR-BELNR&lt;/P&gt;&lt;P&gt;                                    EBELP = I_PO_ITEM_GR-EBELP.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  IF SY-SUBRC = 0.&lt;/P&gt;&lt;P&gt;    MOVE :&lt;/P&gt;&lt;P&gt;    I_PO_ITEM_IR-BELNR  TO I_PO_ITEM_GR-IRNUM,&lt;/P&gt;&lt;P&gt;    I_PO_ITEM_IR-BUDAT  TO I_PO_ITEM_GR-IRDAT,&lt;/P&gt;&lt;P&gt;    I_PO_ITEM_IR-MENGE  TO I_PO_ITEM_GR-MENGE_IR,&lt;/P&gt;&lt;P&gt;    I_PO_ITEM_IR-DMBTR  TO I_PO_ITEM_GR-DMBTR_IR.&lt;/P&gt;&lt;P&gt;    MODIFY I_PO_ITEM_GR INDEX CTRL.&lt;/P&gt;&lt;P&gt;  ENDIF.&lt;/P&gt;&lt;P&gt;  CLEAR CTRL.&lt;/P&gt;&lt;P&gt;ENDLOOP.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;UL&gt;&lt;UL&gt;&lt;UL&gt;&lt;LI level="4" type="ul"&gt;&lt;P&gt;PO details updation*********************************&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;/UL&gt;&lt;/UL&gt;&lt;/UL&gt;&lt;P&gt;LOOP AT I_PO_ITEM_GR.&lt;/P&gt;&lt;P&gt;  CTRL1 = SY-TABIX.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  SELECT SINGLE LIFNR BUKRS BSART BEDAT&lt;/P&gt;&lt;P&gt;  INTO (WA_VENDOR, WA_BUKRS, WA_BSART, WA_BEDAT)&lt;/P&gt;&lt;P&gt;  FROM EKKO&lt;/P&gt;&lt;P&gt;  WHERE EBELN = I_PO_ITEM_GR-EBELN.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  MOVE :&lt;/P&gt;&lt;P&gt;      WA_VENDOR TO I_PO_ITEM_GR-LIFNR,&lt;/P&gt;&lt;P&gt;      WA_BUKRS  TO I_PO_ITEM_GR-BUKRS,&lt;/P&gt;&lt;P&gt;      WA_BSART  TO I_PO_ITEM_GR-BSART,&lt;/P&gt;&lt;P&gt;      WA_BEDAT  TO I_PO_ITEM_GR-BEDAT.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  MODIFY I_PO_ITEM_GR INDEX CTRL1.&lt;/P&gt;&lt;P&gt;  CLEAR : WA_VENDOR, WA_BUKRS, WA_BSART, WA_BEDAT.&lt;/P&gt;&lt;P&gt;ENDLOOP.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;***********************************************************&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Kindly look into this, and guide me the solution to improve the performace.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;TIA.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Regards,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Mark K&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Fri, 05 Oct 2007 06:42:02 GMT</pubDate>
      <guid>https://community.sap.com/t5/application-development-and-automation-discussions/bad-performance-exceed-time-limit/m-p/2873613#M674292</guid>
      <dc:creator>Former Member</dc:creator>
      <dc:date>2007-10-05T06:42:02Z</dc:date>
    </item>
    <item>
      <title>Re: Bad Performance - Exceed time limit</title>
      <link>https://community.sap.com/t5/application-development-and-automation-discussions/bad-performance-exceed-time-limit/m-p/2873614#M674293</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;&lt;/P&gt;&lt;P&gt;YOUR PUTING select STATEMENT IN THE loop THATS WHY ITS TAKING MORE TIME &lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;TRY TO AVOID THAT AND USE READ STATEMENT &lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;YOUR USEING SELECT STSTEMENT IN LOOP 2 TIMES &lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;AND DON'T USE CORRESPONDING FIELDS OF BECAUSE IT MAY ALSO PERFORMANCE ISSUE FOR THIS YOU NEED TO PUT THE INTERNAL TABLE FIELDS IN THE ORDER OF SELECT STSEMENT &lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;REWARD IF USEFULL&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*************************************************************************&lt;/P&gt;&lt;UL&gt;&lt;UL&gt;&lt;LI level="2" type="ul"&gt;&lt;P&gt;START OF SELECTION.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;/UL&gt;&lt;P&gt;************************************************************************&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;* GR PART UPDATION * *&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;SELECT * FROM EKBE&lt;/P&gt;&lt;P&gt;INTO CORRESPONDING FIELDS OF TABLE I_PO_ITEM_GR&lt;/P&gt;&lt;P&gt;WHERE GJAHR EQ P_GJAHR AND&lt;/P&gt;&lt;P&gt;BEWTP = 'E' AND&lt;/P&gt;&lt;P&gt;BUDAT IN GRDAT AND&lt;/P&gt;&lt;P&gt;MATNR IN SMATL.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;SORT I_PO_ITEM_GR BY BELNR.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;LOOP AT I_PO_ITEM_GR.&lt;/P&gt;&lt;P&gt;IF I_PO_ITEM_GR-BWART = '101'.&lt;/P&gt;&lt;P&gt;I_PO_ITEM_GR-MENGE = I_PO_ITEM_GR-MENGE * 1.&lt;/P&gt;&lt;P&gt;I_PO_ITEM_GR-DMBTR = I_PO_ITEM_GR-DMBTR * 1.&lt;/P&gt;&lt;P&gt;ELSEIF I_PO_ITEM_GR-BWART = '102'.&lt;/P&gt;&lt;P&gt;I_PO_ITEM_GR-MENGE = I_PO_ITEM_GR-MENGE * -1.&lt;/P&gt;&lt;P&gt;I_PO_ITEM_GR-DMBTR = I_PO_ITEM_GR-DMBTR * -1.&lt;/P&gt;&lt;P&gt;MODIFY I_PO_ITEM_GR INDEX SY-TABIX.&lt;/P&gt;&lt;P&gt;ENDIF.&lt;/P&gt;&lt;P&gt;ENDLOOP.&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;* IR PART UPDATION * *&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;LOOP AT I_PO_ITEM_GR.&lt;/P&gt;&lt;P&gt;&amp;lt;b&amp;gt;SELECT * FROM EKBE&lt;/P&gt;&lt;P&gt;INTO CORRESPONDING FIELDS OF TABLE I_PO_ITEM_IR_TEMP&lt;/P&gt;&lt;P&gt;WHERE GJAHR EQ P_GJAHR AND&lt;/P&gt;&lt;P&gt;BEWTP = 'Q' AND&lt;/P&gt;&lt;P&gt;EBELP = I_PO_ITEM_GR-EBELP AND&lt;/P&gt;&lt;P&gt;LFBNR = I_PO_ITEM_GR-BELNR.&amp;lt;/b&amp;gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;APPEND LINES OF I_PO_ITEM_IR_TEMP TO I_PO_ITEM_IR.&lt;/P&gt;&lt;P&gt;ENDLOOP.&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;* GR UPDATION WITH PO DETAILS * *&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;LOOP AT I_PO_ITEM_GR.&lt;/P&gt;&lt;P&gt;CTRL = SY-TABIX.&lt;/P&gt;&lt;P&gt;READ TABLE I_PO_ITEM_IR WITH KEY LFBNR = I_PO_ITEM_GR-BELNR&lt;/P&gt;&lt;P&gt;EBELP = I_PO_ITEM_GR-EBELP.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;IF SY-SUBRC = 0.&lt;/P&gt;&lt;P&gt;MOVE :&lt;/P&gt;&lt;P&gt;I_PO_ITEM_IR-BELNR TO I_PO_ITEM_GR-IRNUM,&lt;/P&gt;&lt;P&gt;I_PO_ITEM_IR-BUDAT TO I_PO_ITEM_GR-IRDAT,&lt;/P&gt;&lt;P&gt;I_PO_ITEM_IR-MENGE TO I_PO_ITEM_GR-MENGE_IR,&lt;/P&gt;&lt;P&gt;I_PO_ITEM_IR-DMBTR TO I_PO_ITEM_GR-DMBTR_IR.&lt;/P&gt;&lt;P&gt;MODIFY I_PO_ITEM_GR INDEX CTRL.&lt;/P&gt;&lt;P&gt;ENDIF.&lt;/P&gt;&lt;P&gt;CLEAR CTRL.&lt;/P&gt;&lt;P&gt;ENDLOOP.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;UL&gt;&lt;UL&gt;&lt;UL&gt;&lt;LI level="4" type="ul"&gt;&lt;P&gt;PO details updation*********************************&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;/UL&gt;&lt;/UL&gt;&lt;/UL&gt;&lt;P&gt;LOOP AT I_PO_ITEM_GR.&lt;/P&gt;&lt;P&gt;CTRL1 = SY-TABIX.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;lt;b&amp;gt;SELECT SINGLE LIFNR BUKRS BSART BEDAT&lt;/P&gt;&lt;P&gt;INTO (WA_VENDOR, WA_BUKRS, WA_BSART, WA_BEDAT)&lt;/P&gt;&lt;P&gt;FROM EKKO&lt;/P&gt;&lt;P&gt;WHERE EBELN = I_PO_ITEM_GR-EBELN.&amp;lt;/b&amp;gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;MOVE :&lt;/P&gt;&lt;P&gt;WA_VENDOR TO I_PO_ITEM_GR-LIFNR,&lt;/P&gt;&lt;P&gt;WA_BUKRS TO I_PO_ITEM_GR-BUKRS,&lt;/P&gt;&lt;P&gt;WA_BSART TO I_PO_ITEM_GR-BSART,&lt;/P&gt;&lt;P&gt;WA_BEDAT TO I_PO_ITEM_GR-BEDAT.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;MODIFY I_PO_ITEM_GR INDEX CTRL1.&lt;/P&gt;&lt;P&gt;CLEAR : WA_VENDOR, WA_BUKRS, WA_BSART, WA_BEDAT.&lt;/P&gt;&lt;P&gt;ENDLOOP.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;UL&gt;&lt;UL&gt;&lt;UL&gt;&lt;UL&gt;&lt;UL&gt;&lt;UL&gt;&lt;UL&gt;&lt;UL&gt;&lt;UL&gt;&lt;UL&gt;&lt;UL&gt;&lt;UL&gt;&lt;UL&gt;&lt;UL&gt;&lt;UL&gt;&lt;UL&gt;&lt;UL&gt;&lt;UL&gt;&lt;UL&gt;&lt;UL&gt;&lt;UL&gt;&lt;UL&gt;&lt;UL&gt;&lt;UL&gt;&lt;UL&gt;&lt;UL&gt;&lt;UL&gt;&lt;UL&gt;&lt;UL&gt;&lt;UL&gt;&lt;UL&gt;&lt;UL&gt;&lt;UL&gt;&lt;UL&gt;&lt;UL&gt;&lt;UL&gt;&lt;UL&gt;&lt;UL&gt;&lt;UL&gt;&lt;UL&gt;&lt;UL&gt;&lt;UL&gt;&lt;UL&gt;&lt;UL&gt;&lt;UL&gt;&lt;UL&gt;&lt;UL&gt;&lt;UL&gt;&lt;UL&gt;&lt;UL&gt;&lt;UL&gt;&lt;UL&gt;&lt;UL&gt;&lt;UL&gt;&lt;UL&gt;&lt;UL&gt;&lt;UL&gt;&lt;UL&gt;&lt;LI level="59" type="ul"&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;/UL&gt;&lt;/UL&gt;&lt;/UL&gt;&lt;/UL&gt;&lt;/UL&gt;&lt;/UL&gt;&lt;/UL&gt;&lt;/UL&gt;&lt;/UL&gt;&lt;/UL&gt;&lt;/UL&gt;&lt;/UL&gt;&lt;/UL&gt;&lt;/UL&gt;&lt;/UL&gt;&lt;/UL&gt;&lt;/UL&gt;&lt;/UL&gt;&lt;/UL&gt;&lt;/UL&gt;&lt;/UL&gt;&lt;/UL&gt;&lt;/UL&gt;&lt;/UL&gt;&lt;/UL&gt;&lt;/UL&gt;&lt;/UL&gt;&lt;/UL&gt;&lt;/UL&gt;&lt;/UL&gt;&lt;/UL&gt;&lt;/UL&gt;&lt;/UL&gt;&lt;/UL&gt;&lt;/UL&gt;&lt;/UL&gt;&lt;/UL&gt;&lt;/UL&gt;&lt;/UL&gt;&lt;/UL&gt;&lt;/UL&gt;&lt;/UL&gt;&lt;/UL&gt;&lt;/UL&gt;&lt;/UL&gt;&lt;/UL&gt;&lt;/UL&gt;&lt;/UL&gt;&lt;/UL&gt;&lt;/UL&gt;&lt;/UL&gt;&lt;/UL&gt;&lt;/UL&gt;&lt;/UL&gt;&lt;/UL&gt;&lt;/UL&gt;&lt;/UL&gt;&lt;/UL&gt;&lt;P&gt;&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Fri, 05 Oct 2007 07:36:26 GMT</pubDate>
      <guid>https://community.sap.com/t5/application-development-and-automation-discussions/bad-performance-exceed-time-limit/m-p/2873614#M674293</guid>
      <dc:creator>Former Member</dc:creator>
      <dc:date>2007-10-05T07:36:26Z</dc:date>
    </item>
    <item>
      <title>Re: Bad Performance - Exceed time limit</title>
      <link>https://community.sap.com/t5/application-development-and-automation-discussions/bad-performance-exceed-time-limit/m-p/2873615#M674294</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Try trx MB5S.. I think it does the same thing which u r trying to do.... in addition it has more powerfull drill down feature...&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Fri, 05 Oct 2007 09:41:06 GMT</pubDate>
      <guid>https://community.sap.com/t5/application-development-and-automation-discussions/bad-performance-exceed-time-limit/m-p/2873615#M674294</guid>
      <dc:creator>Former Member</dc:creator>
      <dc:date>2007-10-05T09:41:06Z</dc:date>
    </item>
    <item>
      <title>Re: Bad Performance - Exceed time limit</title>
      <link>https://community.sap.com/t5/application-development-and-automation-discussions/bad-performance-exceed-time-limit/m-p/2873616#M674295</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;In your first query GR PART UPDATION you have used EKBE table&lt;/P&gt;&lt;P&gt;and selection parameter which you are using is niether a primary key&lt;/P&gt;&lt;P&gt;nor a secondary key. So it will take lot of time to execute the same&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;You can use another table MKPF &amp;amp; MSEG.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;i can give you the sample query which you can modify as per your requirement&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  select mseg~mblnr&lt;/P&gt;&lt;P&gt;         mseg~mjahr&lt;/P&gt;&lt;P&gt;         mseg~zeile&lt;/P&gt;&lt;P&gt;         mseg~lfbja&lt;/P&gt;&lt;P&gt;         mseg~lfbnr&lt;/P&gt;&lt;P&gt;         mseg~lfpos&lt;/P&gt;&lt;P&gt;         mseg~werks&lt;/P&gt;&lt;P&gt;         mseg~bwart&lt;/P&gt;&lt;P&gt;         mkpf~budat&lt;/P&gt;&lt;P&gt;         mseg~matnr&lt;/P&gt;&lt;P&gt;         mseg~menge&lt;/P&gt;&lt;P&gt;         mseg~dmbtr&lt;/P&gt;&lt;P&gt;         mseg~shkzg&lt;/P&gt;&lt;P&gt;         mseg~ebeln&lt;/P&gt;&lt;P&gt;         mseg~ebelp&lt;/P&gt;&lt;P&gt;         mkpf~xblnr&lt;/P&gt;&lt;P&gt;         mseg~lifnr&lt;/P&gt;&lt;P&gt;         into corresponding fields of table i_mseg&lt;/P&gt;&lt;P&gt;         from ( mkpf inner join mseg on mkpf&lt;SUB&gt;mblnr = mseg&lt;/SUB&gt;mblnr and&lt;/P&gt;&lt;P&gt;                                        mkpf&lt;SUB&gt;mjahr = mseg&lt;/SUB&gt;mjahr )&lt;/P&gt;&lt;P&gt;         where mkpf~budat in grdat&lt;/P&gt;&lt;P&gt;           and mkpf~vgart eq 'WE'&lt;/P&gt;&lt;P&gt;           and mkpf~blart eq 'WE'&lt;/P&gt;&lt;P&gt;           and ( mseg~bwart eq '101' or&lt;/P&gt;&lt;P&gt;                   mseg~bwart eq '102' ).&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;I think rest of the code has no problem since all queries are using proper index key&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Please reward if helpful.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Regards&lt;/P&gt;&lt;P&gt;Harish&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*************************************************************************&lt;/P&gt;&lt;UL&gt;&lt;UL&gt;&lt;LI level="2" type="ul"&gt;&lt;P&gt;START OF SELECTION.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;/UL&gt;&lt;P&gt;************************************************************************&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;* GR PART UPDATION * *&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;SELECT * FROM EKBE&lt;/P&gt;&lt;P&gt;INTO CORRESPONDING FIELDS OF TABLE I_PO_ITEM_GR&lt;/P&gt;&lt;P&gt;WHERE GJAHR EQ P_GJAHR AND&lt;/P&gt;&lt;P&gt;BEWTP = 'E' AND&lt;/P&gt;&lt;P&gt;BUDAT IN GRDAT AND&lt;/P&gt;&lt;P&gt;MATNR IN SMATL.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;SORT I_PO_ITEM_GR BY BELNR&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Fri, 05 Oct 2007 10:11:30 GMT</pubDate>
      <guid>https://community.sap.com/t5/application-development-and-automation-discussions/bad-performance-exceed-time-limit/m-p/2873616#M674295</guid>
      <dc:creator>Former Member</dc:creator>
      <dc:date>2007-10-05T10:11:30Z</dc:date>
    </item>
    <item>
      <title>Re: Bad Performance - Exceed time limit</title>
      <link>https://community.sap.com/t5/application-development-and-automation-discussions/bad-performance-exceed-time-limit/m-p/2873617#M674296</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi Mark,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;A quick glance through your code will tell you the following.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;1) You seem to be retrieving all the fields of table EKBE ( SELECT * ) and don't seem to be using all the data. Preferably create a field list and include only those fields that you need. This will free up some memory.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;2) You seem to be using INTO CORRESPONDING FIELDS OF TABLE. This will slow down your select because SAP will try to match field names in your internal table with those from the database before it decides what data goes to which field in your internal table. This is an unnecessary overhead. Use INTO TABLE instead and pre-arrange your field list to match with the sequence of fields in your internal table.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;3) When BWART = '101' you are multiplying MENGE and DMBTR with 1. Why????? &lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;4) You seem to be using select statements within a LOOP statement. This is bad from the performance point of view. When you execute a SELECT statement SAP established contact with the database across the 3 tier architecture. When you do this in a within a LOOP for each time you execute the SELECT statement SAP will establish contact with the database across the 3 tier architecture (unless your table is fully buffered). This means that the greater the number of records in the internal table you are looping into the greater the number of times SAP contacts the database. This causes performance degradation.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;5) Finally try to optimize the usage of LOOPs. In your code you have looped through internal table 'i_po_item_gr' 4 times. I believe that you can achieve the same results by looping at this table just once. Please take a look at my code below where I have tried to duplicate what you are doing using just one loop.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;PRE&gt;&lt;CODE&gt;TABLES: ekbe.

PARAMETER: p_gjahr TYPE ekbe-gjahr.

SELECT-OPTIONS: grdat FOR ekbe-budat,
                smatl FOR ekbe-matnr.

TYPES: BEGIN OF ty_ekbe,
         ebeln    TYPE ekbe-ebeln,
         ebelp    TYPE ekbe-ebelp,
         zekkn    TYPE ekbe-zekkn,
         vgabe    TYPE ekbe-vgabe,
         gjahr    TYPE ekbe-gjahr,
         belnr    TYPE ekbe-belnr,
         buzei    TYPE ekbe-buzei,
         menge    TYPE ekbe-menge,
         dmbtr    TYPE ekbe-dmbtr,
         bwart    TYPE ekbe-bwart,
         lfbnr    TYPE ekbe-lfbnr,
         budat    TYPE ekbe-budat,
         bewtp    TYPE ekbe-bewtp,
         irnum    TYPE ekbe-belnr,
         irdat    TYPE ekbe-budat,
         menge_ir TYPE ekbe-menge,
         dmbtr_ir TYPE ekbe-dmbtr,
         lifnr    TYPE ekko-lifnr,
         bukrs    TYPE ekko-bukrs,
         bsart    TYPE ekko-bsart,
         bedat    TYPE ekko-bedat,
       END OF ty_ekbe,

       BEGIN OF ty_ekko,
         ebeln TYPE ekko-ebeln,
         lifnr TYPE ekko-lifnr,
         bukrs TYPE ekko-bukrs,
         bsart TYPE ekko-bsart,
         bedat TYPE ekko-bedat,
       END OF ty_ekko.


DATA: w_index       TYPE                 sy-tabix,
      t_ekbe        TYPE        TABLE OF ty_ekbe ,
      w_ekbe_gr     TYPE                 ty_ekbe ,
      t_ekbe_gr     TYPE        TABLE OF ty_ekbe ,
      t_ekbe_gr_tmp TYPE        TABLE OF ty_ekbe ,
      w_ekbe_ir     TYPE                 ty_ekbe ,
      t_ekbe_ir     TYPE SORTED TABLE OF ty_ekbe
        WITH NON-UNIQUE KEY lfbnr ebelp          ,
      w_ekko        TYPE                 ty_ekko ,
      t_ekko        TYPE HASHED TABLE OF ty_ekko
        WITH UNIQUE KEY ebeln                    .


SELECT ebeln
       ebelp
       zekkn
       vgabe
       gjahr
       belnr
       buzei
       menge
       dmbtr
       bwart
       lfbnr
       budat
       bewtp
  FROM ekbe
  INTO TABLE t_ekbe
  WHERE gjahr EQ p_gjahr
  AND   bewtp IN ('E', 'Q')
  AND   budat IN grdat
  AND   matnr IN smatl.

IF sy-subrc EQ 0.

  t_ekbe_gr[] = t_ekbe[].
  DELETE t_ekbe_gr WHERE bewtp EQ 'Q'.

  INSERT LINES OF t_ekbe INTO TABLE t_ekbe_ir.
  DELETE t_ekbe_ir WHERE bewtp EQ 'E'.

  IF NOT t_ekbe_gr[] IS INITIAL.

    t_ekbe_gr_tmp[] = t_ekbe_gr[].

    SORT t_ekbe_gr_tmp BY ebeln.

    DELETE ADJACENT DUPLICATES FROM t_ekbe_gr_tmp COMPARING ebeln.

    SELECT ebeln
           lifnr
           bukrs
           bsart
           bedat
      FROM ekko
      INTO TABLE t_ekko
      FOR ALL ENTRIES IN t_ekbe_gr_tmp
      WHERE ebeln EQ t_ekbe_gr_tmp-ebeln.

  ENDIF.

  LOOP AT t_ekbe_gr INTO w_ekbe_gr.

    w_index = sy-tabix.

    CASE w_ekbe_gr-bwart.
      WHEN '102'.
        MULTIPLY: w_ekbe_gr-menge BY -1,
                  w_ekbe_gr-dmbtr BY -1.
    ENDCASE.

    READ TABLE t_ekbe_ir INTO w_ekbe_ir
      WITH KEY lfbnr = w_ekbe_gr-belnr
               ebelp = w_ekbe_gr-ebelp
               TRANSPORTING
                 belnr
                 budat
                 menge
                 dmbtr.

    IF sy-subrc EQ 0.
      w_ekbe_gr-irnum    = w_ekbe_ir-belnr.
      w_ekbe_gr-irdat    = w_ekbe_ir-budat.
      w_ekbe_gr-menge_ir = w_ekbe_ir-menge.
      w_ekbe_gr-dmbtr_ir = w_ekbe_ir-dmbtr.
    ENDIF.

    READ TABLE t_ekko INTO w_ekko
      WITH KEY ebeln = w_ekbe_gr-ebeln
               TRANSPORTING
                 lifnr
                 bukrs
                 bsart
                 bedat.
    IF sy-subrc EQ 0.
      w_ekbe_gr-lifnr = w_ekko-lifnr.
      w_ekbe_gr-bukrs = w_ekko-bukrs.
      w_ekbe_gr-bsart = w_ekko-bsart.
      w_ekbe_gr-bedat = w_ekko-bedat.
    ENDIF.

    MODIFY t_ekbe_gr FROM w_ekbe_gr INDEX w_index
      TRANSPORTING
        menge
        dmbtr
        irnum
        irdat
        menge_ir
        dmbtr_ir
        lifnr
        bukrs
        bsart
        bedat.

  ENDLOOP.

ENDIF.&lt;/CODE&gt;&lt;/PRE&gt;&lt;P&gt;&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Fri, 05 Oct 2007 14:58:28 GMT</pubDate>
      <guid>https://community.sap.com/t5/application-development-and-automation-discussions/bad-performance-exceed-time-limit/m-p/2873617#M674296</guid>
      <dc:creator>Former Member</dc:creator>
      <dc:date>2007-10-05T14:58:28Z</dc:date>
    </item>
    <item>
      <title>Re: Bad Performance - Exceed time limit</title>
      <link>https://community.sap.com/t5/application-development-and-automation-discussions/bad-performance-exceed-time-limit/m-p/2873618#M674297</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi Mark,&lt;/P&gt;&lt;P&gt;Please take a note of the points given below.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;1- if all the fields in ekbe is not required then &lt;/P&gt;&lt;P&gt;	please declare an internal tabl with only the necessary fields and write  the select  including only those fields rather than select * &lt;/P&gt;&lt;P&gt;	which will improve the performance to some extend.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;2.If possible try to include more key fields of the table in the where condition which will make the database access faster Or if you can include &lt;/P&gt;&lt;P&gt;only those fields which form the table index also the access will be faster.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;3 &amp;gt; Never ever use select statement inside loop. Use "for all entries' instead.&lt;/P&gt;&lt;P&gt;   But while using for all entries we need to first check &lt;/P&gt;&lt;P&gt;   if I_PO_ITEM_GR is initial&lt;/P&gt;&lt;P&gt;only if it is not initial we need to go for 'for all entries'.&lt;/P&gt;&lt;P&gt;  then using adjacent duplicates from I_PO_ITEM_GR comapring key fieldsif included&lt;/P&gt;&lt;P&gt; before the "for all entries' statement will improve the performance.&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Sat, 06 Oct 2007 12:37:41 GMT</pubDate>
      <guid>https://community.sap.com/t5/application-development-and-automation-discussions/bad-performance-exceed-time-limit/m-p/2873618#M674297</guid>
      <dc:creator>Former Member</dc:creator>
      <dc:date>2007-10-06T12:37:41Z</dc:date>
    </item>
    <item>
      <title>Re: Bad Performance - Exceed time limit</title>
      <link>https://community.sap.com/t5/application-development-and-automation-discussions/bad-performance-exceed-time-limit/m-p/2873619#M674298</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi,&lt;/P&gt;&lt;P&gt;Dont use select statement with in loop and also INTO CORRSPONDING fileds statement.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*************************************************************************&lt;/P&gt;&lt;UL&gt;&lt;UL&gt;&lt;LI level="2" type="ul"&gt;&lt;P&gt;START OF SELECTION.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;/UL&gt;&lt;P&gt;************************************************************************&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;* GR PART UPDATION * *&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;SELECT &amp;lt;b&amp;gt;field1 field2&amp;lt;/b&amp;gt;..... FROM EKBE&lt;/P&gt;&lt;P&gt;INTO TABLE I_PO_ITEM_GR " use fileds names which you declared in internal table I_PO_ITEM_GR  instead of &amp;lt;b&amp;gt;' * '&amp;lt;/b&amp;gt;&lt;/P&gt;&lt;P&gt;WHERE GJAHR EQ P_GJAHR AND&lt;/P&gt;&lt;P&gt;BEWTP = 'E' AND&lt;/P&gt;&lt;P&gt;BUDAT IN GRDAT AND&lt;/P&gt;&lt;P&gt;MATNR IN SMATL.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;SORT I_PO_ITEM_GR BY BELNR.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;LOOP AT I_PO_ITEM_GR.&lt;/P&gt;&lt;P&gt;IF I_PO_ITEM_GR-BWART = '101'.&lt;/P&gt;&lt;P&gt;I_PO_ITEM_GR-MENGE = I_PO_ITEM_GR-MENGE * 1.&lt;/P&gt;&lt;P&gt;I_PO_ITEM_GR-DMBTR = I_PO_ITEM_GR-DMBTR * 1.&lt;/P&gt;&lt;P&gt;ELSEIF I_PO_ITEM_GR-BWART = '102'.&lt;/P&gt;&lt;P&gt;I_PO_ITEM_GR-MENGE = I_PO_ITEM_GR-MENGE * -1.&lt;/P&gt;&lt;P&gt;I_PO_ITEM_GR-DMBTR = I_PO_ITEM_GR-DMBTR * -1.&lt;/P&gt;&lt;P&gt;MODIFY I_PO_ITEM_GR INDEX SY-TABIX.&lt;/P&gt;&lt;P&gt;ENDIF.&lt;/P&gt;&lt;P&gt;ENDLOOP.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;if not I_PO_ITEM_GR [] is initial.&lt;/P&gt;&lt;P&gt;SELECT &amp;lt;b&amp;gt;field1 field2&amp;lt;/b&amp;gt;.....  FROM EKBE&lt;/P&gt;&lt;P&gt;INTO TABLE I_PO_ITEM_IR&lt;/P&gt;&lt;P&gt;FOR ALL INTRIES IN I_PO_ITEM_GR &lt;/P&gt;&lt;P&gt;WHERE GJAHR EQ P_GJAHR AND&lt;/P&gt;&lt;P&gt;BEWTP = 'Q' AND&lt;/P&gt;&lt;P&gt;EBELP = I_PO_ITEM_GR-EBELP AND&lt;/P&gt;&lt;P&gt;LFBNR = I_PO_ITEM_GR-BELNR.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;IF sy-subrc = 0.&lt;/P&gt;&lt;P&gt;sort I_PO_ITEM_IR by belnr ebelp.&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;SELECT SINGLE LIFNR BUKRS BSART BEDAT&lt;/P&gt;&lt;P&gt;INTO (WA_VENDOR, WA_BUKRS, WA_BSART, WA_BEDAT)&lt;/P&gt;&lt;P&gt;FROM EKKO&lt;/P&gt;&lt;P&gt;WHERE EBELN = I_PO_ITEM_GR-EBELN.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;"INSTEAD of the above code &lt;/P&gt;&lt;P&gt;SELECT  LIFNR BUKRS BSART BEDAT&lt;/P&gt;&lt;P&gt;INTO table tbl_ekko&lt;/P&gt;&lt;P&gt;FROM EKKO&lt;/P&gt;&lt;P&gt;FOR ALL ENTRIES IN I_PO_ITEM_GR&lt;/P&gt;&lt;P&gt;WHERE EBELN = I_PO_ITEM_GR-EBELN.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;SORT tbl_ekko by BELNR EBLEN.&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;LOOP AT I_PO_ITEM_GR.&lt;/P&gt;&lt;P&gt;CTRL = SY-TABIX.&lt;/P&gt;&lt;P&gt;READ TABLE I_PO_ITEM_IR WITH KEY LFBNR = I_PO_ITEM_GR-BELNR&lt;/P&gt;&lt;P&gt;EBELP = I_PO_ITEM_GR-EBELP &amp;lt;b&amp;gt;BINARY SEARCH&amp;lt;/b&amp;gt;.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;IF SY-SUBRC = 0.&lt;/P&gt;&lt;P&gt;MOVE :&lt;/P&gt;&lt;P&gt;I_PO_ITEM_IR-BELNR TO I_PO_ITEM_GR-IRNUM,&lt;/P&gt;&lt;P&gt;I_PO_ITEM_IR-BUDAT TO I_PO_ITEM_GR-IRDAT,&lt;/P&gt;&lt;P&gt;I_PO_ITEM_IR-MENGE TO I_PO_ITEM_GR-MENGE_IR,&lt;/P&gt;&lt;P&gt;I_PO_ITEM_IR-DMBTR TO I_PO_ITEM_GR-DMBTR_IR.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;ENDIF.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;READ TABLE TBL_EKKO WITH KEY LFBNR = I_PO_ITEM_GR-BELNR&lt;/P&gt;&lt;P&gt;EBELN = I_PO_ITEM_GR-EBELN BINARY SEARCH.&lt;/P&gt;&lt;P&gt;IF SY-SUBRC = 0 .&lt;/P&gt;&lt;P&gt;MOVE :&lt;/P&gt;&lt;P&gt;WA_VENDOR TO I_PO_ITEM_GR-LIFNR,&lt;/P&gt;&lt;P&gt;WA_BUKRS TO I_PO_ITEM_GR-BUKRS,&lt;/P&gt;&lt;P&gt;WA_BSART TO I_PO_ITEM_GR-BSART,&lt;/P&gt;&lt;P&gt;WA_BEDAT TO I_PO_ITEM_GR-BEDAT&lt;/P&gt;&lt;P&gt;ENDIF.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;MODIFY I_PO_ITEM_GR INDEX CTRL.&lt;/P&gt;&lt;P&gt;CLEAR I_PO_ITEM_GR,I_PO_ITEM_IR ,TBL_EKKO, CTRL.&lt;/P&gt;&lt;P&gt;ENDLOOP.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Hope above code is help ful for you.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;And also here i am giving some tips for select and internal tables.&lt;/P&gt;&lt;P&gt;Internal Tables&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Internal tables are considered to be the true work horse of ABAP. They can have a big impact on processing and performance when programmed incorrectly. Use the quick checklist below to help guide you when coding internal table(itab) processing.&lt;/P&gt;&lt;P&gt;&amp;lt;b&amp;gt;Internal Table Quick Checklist&amp;lt;/b&amp;gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Loop at itab must always use a work area or assign to a field symbol&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Use parallel cursor technique for nested loops.&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Use the TRANSPORTING clause with READ and MODIFY wherever possible to tranport only the fields necessary&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Use TRANSPORTING No FIELDS clause when checking only for existence of a record&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Read by INDEX is the fastest access option for a single READ. Use standard table if you are accessing mainly by index. Consider this where possible but use caution as it does not apply to all programming situations.&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Specify full key on a table read whenever possible. Use &amp;#145;WITH TABLE KEY&amp;#146; clause when full key is specified&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Internal Tables should be passed to FORMS with the "USING" clause. The "TABLES" clause is considered obsolete. &lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Internal tables should be passed to FORMS by Reference for performance reasons&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;i.e. do not use USING Value(..)&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Do not use Occurs 0 or With Header Line unless it is a SAP function that requires it.&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Hashed tables are a good performance approach over standard tables whenever random record accesses are required for a large internal table using the fully qualified key.&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;When sorting internal tables, always use "SORT BY Key1...n", never just "SORT" on it's own &lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Standard Tables require a Sort by, Delete adjacent Duplicates, and READ itab with KEY...Binary Search&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Keep "SORT itab BY" statement as close as possible to the READ itab with KEY...Binary Search.&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Delete Adjacent Duplicates should always be explicit by using the COMPARING clause, even if there is only one field in the itab&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Standard Tables should be sorted by sorting keys to take advantage of Binary Search. However, if you sort by one key and Read with a different set, you could miss data&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;lt;b&amp;gt;SQL Quick Checklist&amp;lt;/b&amp;gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Select Statements within Loop processing is not recommended. Preferred approach is to select data into an itab and then read the itab to access specific records&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Do not use Nested Selects, Selects within Loops. or SELECT...ENDSELECT&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Do not use Select * unless at least 70% of fields are needed&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Select only the fields you require.&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Do not use INTO CORRESPONDING&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Do not do Order By on non key fields&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Force optimizer to use the index where possible&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;If primary index can not be used, look for alternate indexes or alternate index tables&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Avoid Use of LIKE in the Where clause on index fields. It will force a non index read.&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Avoid Use of NOT conditions in the Where clause on index fields. It will force a non index read.&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Select Single MUST have the primary key fully specified in the WHERE clause. Otherwise use Select.. Up to 1 Rows.&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Avoid DISTINCT see performance standards for usage&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Consider filtering on the appserver rather than in a WHERE statement&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;SAP Recommendation on Joins - try not to exceed a 3 Table Join&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;When using "Select.. For all Entries". The following 4 rules MUST be followed:&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;o Check to make sure driver itab is not empty&lt;/P&gt;&lt;P&gt;o Always SORT the itab (driver table) by keys. Specify all keys used in the Where clause&lt;/P&gt;&lt;P&gt;o DELETE Adjacent Duplicates Comparing the keys that were sorted.&lt;/P&gt;&lt;P&gt;o All Primary Key Fields must be in the Select List&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;lt;b&amp;gt;Reward with points if helpful.&amp;lt;/b&amp;gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Regards,&lt;/P&gt;&lt;P&gt;Vijay&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Mon, 08 Oct 2007 07:46:33 GMT</pubDate>
      <guid>https://community.sap.com/t5/application-development-and-automation-discussions/bad-performance-exceed-time-limit/m-p/2873619#M674298</guid>
      <dc:creator>Former Member</dc:creator>
      <dc:date>2007-10-08T07:46:33Z</dc:date>
    </item>
    <item>
      <title>Re: Bad Performance - Exceed time limit</title>
      <link>https://community.sap.com/t5/application-development-and-automation-discussions/bad-performance-exceed-time-limit/m-p/2873620#M674299</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hey Mark,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Did any of us solve your problem. If yes please reward points and close the thread or else please let us know what went wrong.&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Tue, 09 Oct 2007 16:48:52 GMT</pubDate>
      <guid>https://community.sap.com/t5/application-development-and-automation-discussions/bad-performance-exceed-time-limit/m-p/2873620#M674299</guid>
      <dc:creator>Former Member</dc:creator>
      <dc:date>2007-10-09T16:48:52Z</dc:date>
    </item>
  </channel>
</rss>

