<?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 and loop statement in Application Development and Automation Discussions</title>
    <link>https://community.sap.com/t5/application-development-and-automation-discussions/performance-and-loop-statement/m-p/9291039#M1725166</link>
    <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi Amine and Bishwajit,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;I see that solution proposed by Bishwajit is close to final and you have full code example provided. I would modify SELECT * to single fields selection (SELECT pspnr) as for example prps table has 136 columns and reading all of them is not needed. Also we should use sorted table, if more than 100 rows will be processed - and I assume as it is the situation as this is BW extractor code.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;I extended my example and merged with Amine initial solution and here is final optimized result that I would recommend. It uses standard tables of single columns and then just sorts tables once (that is why I do not use sorted table, where each insert must be in sorted order, but it is small memory optimization, sorted table would give also good results).&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt; DATA &lt;SPAN style="font-size: 10pt;"&gt;lt_prps_posid&lt;/SPAN&gt;&lt;SPAN style="color: #0000ff; font-size: 10pt;"&gt; TYPE TABLE OF &lt;/SPAN&gt;&lt;SPAN style="font-size: 10pt;"&gt;prps&lt;/SPAN&gt;&lt;SPAN style="color: #0000ff; font-size: 10pt;"&gt;-&lt;/SPAN&gt;&lt;SPAN style="font-size: 10pt;"&gt;posid&lt;/SPAN&gt;&lt;SPAN style="color: #0000ff; font-size: 10pt;"&gt;.&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt; DATA &lt;SPAN style="font-size: 10pt;"&gt;lt_catsdb_catshours&lt;/SPAN&gt;&lt;SPAN style="color: #0000ff; font-size: 10pt;"&gt; TYPE TABLE OF &lt;/SPAN&gt;&lt;SPAN style="font-size: 10pt;"&gt;catsdb&lt;/SPAN&gt;&lt;SPAN style="color: #0000ff; font-size: 10pt;"&gt;-&lt;/SPAN&gt;&lt;SPAN style="font-size: 10pt;"&gt;catshours&lt;/SPAN&gt;&lt;SPAN style="color: #0000ff; font-size: 10pt;"&gt;.&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt; DATA &lt;SPAN style="font-size: 10pt;"&gt;l_posid&lt;/SPAN&gt;&lt;SPAN style="color: #0000ff; font-size: 10pt;"&gt; TYPE &lt;/SPAN&gt;&lt;SPAN style="font-size: 10pt;"&gt;prps&lt;/SPAN&gt;&lt;SPAN style="color: #0000ff; font-size: 10pt;"&gt;-&lt;/SPAN&gt;&lt;SPAN style="font-size: 10pt;"&gt;posid&lt;/SPAN&gt;&lt;SPAN style="color: #0000ff; font-size: 10pt;"&gt;.&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt; DATA &lt;SPAN style="font-size: 10pt;"&gt;l_catshours&lt;/SPAN&gt;&lt;SPAN style="color: #0000ff; font-size: 10pt;"&gt; TYPE &lt;/SPAN&gt;&lt;SPAN style="font-size: 10pt;"&gt;catsdb&lt;/SPAN&gt;&lt;SPAN style="color: #0000ff; font-size: 10pt;"&gt;-&lt;/SPAN&gt;&lt;SPAN style="font-size: 10pt;"&gt;catshours&lt;/SPAN&gt;&lt;SPAN style="color: #0000ff; font-size: 10pt;"&gt;.&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; &lt;/P&gt;&lt;P&gt;&amp;nbsp; SELECT DISTINCT &lt;SPAN style="font-size: 10pt;"&gt;posid&lt;/SPAN&gt;&lt;SPAN style="color: #0000ff; font-size: 10pt;"&gt; FROM &lt;/SPAN&gt;&lt;SPAN style="font-size: 10pt;"&gt;prps&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; INTO TABLE &lt;SPAN style="font-size: 10pt;"&gt;lt_prps_posid&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; FOR ALL ENTRIES IN &lt;SPAN style="font-size: 10pt;"&gt;c_t_data&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; WHERE &lt;SPAN style="font-size: 10pt;"&gt;pspnr&lt;/SPAN&gt;&lt;SPAN style="color: #0000ff; font-size: 10pt;"&gt; = &lt;/SPAN&gt;&lt;SPAN style="font-size: 10pt;"&gt;c_t_data&lt;/SPAN&gt;&lt;SPAN style="color: #0000ff; font-size: 10pt;"&gt;-&lt;/SPAN&gt;&lt;SPAN style="font-size: 10pt;"&gt;rproj&lt;/SPAN&gt;&lt;SPAN style="color: #0000ff; font-size: 10pt;"&gt;.&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; SELECT DISTINCT &lt;SPAN style="font-size: 10pt;"&gt;catshours&lt;/SPAN&gt;&lt;SPAN style="color: #0000ff; font-size: 10pt;"&gt; FROM &lt;/SPAN&gt;&lt;SPAN style="font-size: 10pt;"&gt;catsdb&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; INTO TABLE &lt;SPAN style="font-size: 10pt;"&gt;lt_catsdb_catshours&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; FOR ALL ENTRIES IN &lt;SPAN style="font-size: 10pt;"&gt;c_t_data&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; WHERE &lt;SPAN style="font-size: 10pt;"&gt;counter&lt;/SPAN&gt;&lt;SPAN style="color: #0000ff; font-size: 10pt;"&gt; IS NOT NULL AND&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="font-size: 10pt;"&gt;counter&lt;/SPAN&gt;&lt;SPAN style="color: #0000ff; font-size: 10pt;"&gt; = &lt;/SPAN&gt;&lt;SPAN style="font-size: 10pt;"&gt;c_t_data&lt;/SPAN&gt;&lt;SPAN style="color: #0000ff; font-size: 10pt;"&gt;-&lt;/SPAN&gt;&lt;SPAN style="font-size: 10pt;"&gt;refcounter&lt;/SPAN&gt;&lt;SPAN style="color: #0000ff; font-size: 10pt;"&gt;.&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; SORT &lt;SPAN style="font-size: 10pt;"&gt;lt_prps_posid&lt;/SPAN&gt;&lt;SPAN style="color: #0000ff; font-size: 10pt;"&gt; by &lt;/SPAN&gt;&lt;SPAN style="font-size: 10pt;"&gt;table_line&lt;/SPAN&gt;&lt;SPAN style="color: #0000ff; font-size: 10pt;"&gt;.&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; SORT &lt;SPAN style="font-size: 10pt;"&gt;lt_catsdb_catshours&lt;/SPAN&gt;&lt;SPAN style="color: #0000ff; font-size: 10pt;"&gt; by &lt;/SPAN&gt;&lt;SPAN style="font-size: 10pt;"&gt;table_line&lt;/SPAN&gt;&lt;SPAN style="color: #0000ff; font-size: 10pt;"&gt;.&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 10pt;"&gt;&lt;BR /&gt;&lt;/SPAN&gt;&amp;nbsp; LOOP AT &lt;SPAN style="font-size: 10pt;"&gt;c_t_data&lt;/SPAN&gt;&lt;SPAN style="color: #0000ff; font-size: 10pt;"&gt; INTO &lt;/SPAN&gt;&lt;SPAN style="font-size: 10pt;"&gt;s_data_cats&lt;/SPAN&gt;&lt;SPAN style="color: #0000ff; font-size: 10pt;"&gt;.&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="color: #808080; font-size: 10pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="color: #808080; font-size: 10pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; "&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Get WBS Element POSID.&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN style="color: #808080; font-size: 10pt;"&gt;"SELECT SINGLE &lt;SPAN style="text-decoration: underline;"&gt;posid&lt;/SPAN&gt; INTO s_data_cats-&lt;SPAN style="text-decoration: underline;"&gt;posid&lt;/SPAN&gt; FROM &lt;SPAN style="text-decoration: underline;"&gt;prps&lt;/SPAN&gt; &lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="color: #808080; font-size: 10pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; " WHERE &lt;SPAN style="text-decoration: underline;"&gt;pspnr&lt;/SPAN&gt; = s_data_cats-&lt;SPAN style="text-decoration: underline;"&gt;rproj&lt;/SPAN&gt;.&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; READ TABLE &lt;SPAN style="font-size: 10pt;"&gt;lt_prps_posid&lt;/SPAN&gt;&lt;SPAN style="color: #0000ff; font-size: 10pt;"&gt; WITH KEY &lt;/SPAN&gt;&lt;SPAN style="font-size: 10pt;"&gt;table_line&lt;/SPAN&gt;&lt;SPAN style="color: #0000ff; font-size: 10pt;"&gt; = &lt;/SPAN&gt;&lt;SPAN style="font-size: 10pt;"&gt;s_data_cats&lt;/SPAN&gt;&lt;SPAN style="color: #0000ff; font-size: 10pt;"&gt;-&lt;/SPAN&gt;&lt;SPAN style="font-size: 10pt;"&gt;rproj&lt;/SPAN&gt;&lt;SPAN style="color: #0000ff; font-size: 10pt;"&gt; &lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="color: #0000ff; font-size: 10pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; INTO &lt;/SPAN&gt;&lt;SPAN style="font-size: 10pt;"&gt;l_posid&lt;/SPAN&gt;&lt;SPAN style="color: #0000ff; font-size: 10pt;"&gt; binary search.&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; IF &lt;SPAN style="font-size: 10pt;"&gt;s_data_cats&lt;/SPAN&gt;&lt;SPAN style="color: #0000ff; font-size: 10pt;"&gt;-&lt;/SPAN&gt;&lt;SPAN style="font-size: 10pt;"&gt;refcounter&lt;/SPAN&gt;&lt;SPAN style="color: #0000ff; font-size: 10pt;"&gt; IS NOT INITIAL.&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="color: #0000ff; font-size: 10pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="color: #808080; font-size: 10pt;"&gt;"SELECT SINGLE &lt;SPAN style="text-decoration: underline;"&gt;catshours&lt;/SPAN&gt; FROM &lt;SPAN style="text-decoration: underline;"&gt;catsdb&lt;/SPAN&gt; INTO wa_hours &lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="color: #808080; font-size: 10pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; " WHERE counter = s_data_cats-&lt;SPAN style="text-decoration: underline;"&gt;refcounter&lt;/SPAN&gt;.&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; READ TABLE &lt;SPAN style="font-size: 10pt;"&gt;lt_catsdb_catshours&lt;/SPAN&gt;&lt;SPAN style="color: #0000ff; font-size: 10pt;"&gt; &lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="color: #0000ff; font-size: 10pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; WITH KEY &lt;/SPAN&gt;&lt;SPAN style="font-size: 10pt;"&gt;table_line&lt;/SPAN&gt;&lt;SPAN style="color: #0000ff; font-size: 10pt;"&gt; = &lt;/SPAN&gt;&lt;SPAN style="font-size: 10pt;"&gt;s_data_cats&lt;/SPAN&gt;&lt;SPAN style="color: #0000ff; font-size: 10pt;"&gt;-&lt;/SPAN&gt;&lt;SPAN style="font-size: 10pt;"&gt;refcounter&lt;/SPAN&gt;&lt;SPAN style="color: #0000ff; font-size: 10pt;"&gt; INTO &lt;/SPAN&gt;&lt;SPAN style="font-size: 10pt;"&gt;l_catshours&lt;/SPAN&gt;&lt;SPAN style="color: #0000ff; font-size: 10pt;"&gt; binary search.&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; IF &lt;SPAN style="font-size: 10pt;"&gt;sy&lt;/SPAN&gt;&lt;SPAN style="color: #0000ff; font-size: 10pt;"&gt;-&lt;/SPAN&gt;&lt;SPAN style="font-size: 10pt;"&gt;subrc&lt;/SPAN&gt;&lt;SPAN style="color: #0000ff; font-size: 10pt;"&gt; = &lt;/SPAN&gt;&lt;SPAN style="color: #3399ff; font-size: 10pt;"&gt;0&lt;/SPAN&gt;&lt;SPAN style="color: #0000ff; font-size: 10pt;"&gt;.&lt;/SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 10pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; s_data_cats&lt;/SPAN&gt;&lt;SPAN style="color: #0000ff; font-size: 10pt;"&gt;-&lt;/SPAN&gt;&lt;SPAN style="font-size: 10pt;"&gt;catshours&lt;/SPAN&gt;&lt;SPAN style="color: #0000ff; font-size: 10pt;"&gt; = &lt;/SPAN&gt;&lt;SPAN style="font-size: 10pt;"&gt;s_data_cats&lt;/SPAN&gt;&lt;SPAN style="color: #0000ff; font-size: 10pt;"&gt;-&lt;/SPAN&gt;&lt;SPAN style="font-size: 10pt;"&gt;catshours&lt;/SPAN&gt;&lt;SPAN style="color: #0000ff; font-size: 10pt;"&gt; - &lt;/SPAN&gt;&lt;SPAN style="font-size: 10pt;"&gt;wa_hours&lt;/SPAN&gt;&lt;SPAN style="color: #0000ff; font-size: 10pt;"&gt;.&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ENDIF.&lt;/P&gt;&lt;P&gt;&lt;SPAN style="color: #0000ff; font-size: 10pt;"&gt;&lt;BR /&gt;&lt;/SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ENDIF.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; MODIFY &lt;SPAN style="font-size: 10pt;"&gt;c_t_data&lt;/SPAN&gt;&lt;SPAN style="color: #0000ff; font-size: 10pt;"&gt; FROM &lt;/SPAN&gt;&lt;SPAN style="font-size: 10pt;"&gt;s_data_cats&lt;/SPAN&gt;&lt;SPAN style="color: #0000ff; font-size: 10pt;"&gt; .&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; CLEAR &lt;SPAN style="font-size: 10pt;"&gt;s_data_cats&lt;/SPAN&gt;&lt;SPAN style="color: #0000ff; font-size: 10pt;"&gt;.&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; ENDLOOP.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;As you see - data is fetched from database only once. Then code is working on internal tables - operating on memory is much faster. Sorted table give very quick reading by key. &lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Regards,&lt;/P&gt;&lt;P&gt;Adam&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
    <pubDate>Fri, 22 Feb 2013 09:45:35 GMT</pubDate>
    <dc:creator>adam_krawczyk1</dc:creator>
    <dc:date>2013-02-22T09:45:35Z</dc:date>
    <item>
      <title>Performance and loop statement</title>
      <link>https://community.sap.com/t5/application-development-and-automation-discussions/performance-and-loop-statement/m-p/9291034#M1725161</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hello experts,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Below it's a BW user exit that i am using to extract data from ECC to BW.&lt;/P&gt;&lt;P&gt;An abap expert tells me that using select in loops is not good for performance.&lt;/P&gt;&lt;P&gt;I would like to enhance it but i don't know how?&lt;/P&gt;&lt;P&gt;If someone can give me ideas, that would be great.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;PRE&gt;&lt;CODE&gt;&lt;P&gt;&lt;SPAN class="L0S52"&gt;DATA&lt;/SPAN&gt;&lt;SPAN class="L0S55"&gt;: &lt;/SPAN&gt;s_data_cats &lt;SPAN class="L0S52"&gt;TYPE &lt;/SPAN&gt;zoxd780009&lt;SPAN class="L0S55"&gt;.&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN class="L0S52"&gt;DATA&lt;/SPAN&gt;&lt;SPAN class="L0S55"&gt;: &lt;/SPAN&gt;wa_hours &lt;SPAN class="L0S52"&gt;TYPE &lt;/SPAN&gt;catshours&lt;SPAN class="L0S55"&gt;.&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN class="L0S52"&gt;LOOP &lt;/SPAN&gt;&lt;SPAN class="L0S52"&gt;AT &lt;/SPAN&gt;c_t_data &lt;SPAN class="L0S52"&gt;INTO &lt;/SPAN&gt;s_data_cats&lt;SPAN class="L0S55"&gt;.&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt; &lt;SPAN class="L0S31"&gt;*&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Get WBS Element POSID.&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN class="L0S52"&gt;SELECT &lt;/SPAN&gt;&lt;SPAN class="L0S52"&gt;SINGLE &lt;/SPAN&gt;posid &lt;SPAN class="L0S52"&gt;INTO &lt;/SPAN&gt;s_data_cats&lt;SPAN class="L0S70"&gt;-&lt;/SPAN&gt;posid &lt;SPAN class="L0S52"&gt;FROM &lt;/SPAN&gt;prps&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN class="L0S52"&gt;WHERE &lt;/SPAN&gt;pspnr &lt;SPAN class="L0S55"&gt;= &lt;/SPAN&gt;s_data_cats&lt;SPAN class="L0S70"&gt;-&lt;/SPAN&gt;rproj&lt;SPAN class="L0S55"&gt;.&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN class="L0S52"&gt;IF &lt;/SPAN&gt;s_data_cats&lt;SPAN class="L0S70"&gt;-&lt;/SPAN&gt;refcounter &lt;SPAN class="L0S52"&gt;IS &lt;/SPAN&gt;&lt;SPAN class="L0S52"&gt;NOT &lt;/SPAN&gt;&lt;SPAN class="L0S52"&gt;INITIAL&lt;/SPAN&gt;&lt;SPAN class="L0S55"&gt;.&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN class="L0S52"&gt;SELECT &lt;/SPAN&gt;&lt;SPAN class="L0S52"&gt;SINGLE &lt;/SPAN&gt;catshours &lt;SPAN class="L0S52"&gt;FROM &lt;/SPAN&gt;catsdb &lt;SPAN class="L0S52"&gt;INTO &lt;/SPAN&gt;wa_hours &lt;SPAN class="L0S52"&gt;WHERE &lt;/SPAN&gt;counter &lt;SPAN class="L0S55"&gt;= &lt;/SPAN&gt;s_data_cats&lt;SPAN class="L0S70"&gt;-&lt;/SPAN&gt;refcounter&lt;SPAN class="L0S55"&gt;.&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN class="L0S52"&gt;IF &lt;/SPAN&gt;sy&lt;SPAN class="L0S70"&gt;-&lt;/SPAN&gt;subrc &lt;SPAN class="L0S55"&gt;= &lt;/SPAN&gt;&lt;SPAN class="L0S32"&gt;0&lt;/SPAN&gt;&lt;SPAN class="L0S55"&gt;.&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; s_data_cats&lt;SPAN class="L0S70"&gt;-&lt;/SPAN&gt;catshours &lt;SPAN class="L0S55"&gt;= &lt;/SPAN&gt;s_data_cats&lt;SPAN class="L0S70"&gt;-&lt;/SPAN&gt;catshours &lt;SPAN class="L0S70"&gt;- &lt;/SPAN&gt;wa_hours&lt;SPAN class="L0S55"&gt;.&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN class="L0S52"&gt;ENDIF&lt;/SPAN&gt;&lt;SPAN class="L0S55"&gt;.&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN class="L0S52"&gt;ENDIF&lt;/SPAN&gt;&lt;SPAN class="L0S55"&gt;.&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN class="L0S52"&gt;MODIFY &lt;/SPAN&gt;c_t_data &lt;SPAN class="L0S52"&gt;FROM &lt;/SPAN&gt;s_data_cats &lt;SPAN class="L0S55"&gt;.&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN class="L0S52"&gt;CLEAR &lt;/SPAN&gt;s_data_cats&lt;SPAN class="L0S55"&gt;.&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN class="L0S52"&gt;ENDLOOP&lt;/SPAN&gt;&lt;SPAN class="L0S55"&gt;.&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;/CODE&gt;&lt;/PRE&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Amine&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 21 Feb 2013 16:33:26 GMT</pubDate>
      <guid>https://community.sap.com/t5/application-development-and-automation-discussions/performance-and-loop-statement/m-p/9291034#M1725161</guid>
      <dc:creator>Former Member</dc:creator>
      <dc:date>2013-02-21T16:33:26Z</dc:date>
    </item>
    <item>
      <title>Re: Performance and loop statement</title>
      <link>https://community.sap.com/t5/application-development-and-automation-discussions/performance-and-loop-statement/m-p/9291035#M1725162</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi Amine,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;u r right. Select statement inside loops is going to reduce the performance. U might want to try the below steps:&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;1. Populate the data into internal table ITAB2 ( lets say) using select outside the loop ITAB1 ( say )&lt;/P&gt;&lt;P&gt;2. within loop of ITAB1, use Read statement using binary search with condition ( &lt;SPAN class="keyword"&gt;WHERE pspnr = s_data_cats-rproj.&amp;nbsp; )&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN class="keyword"&gt;It's going to work the same thing as the Select Single is doing above.&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN class="keyword"&gt;3. Do more of processing in internal tables rather than using Select multiple times.&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN class="keyword"&gt;I've highlighted the things you need to take care for performance. U will need to declare internal table structures based on your requirement.&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN class="keyword"&gt;Also perform EPC checks. &lt;SPAN __jive_emoticon_name="happy" __jive_macro_name="emoticon" class="jive_macro jive_emote" src="https://community.sap.com/1214/images/emoticons/happy.gif"&gt;&lt;/SPAN&gt;&lt;BR /&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Select query to populate data in C_T_DATA.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;SELECT posid into table i_posid&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; from prps &lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;STRONG&gt; for all entries in c_t_data&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; where posid = c_t_data-posid.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;OL class="dp-sql" start="1"&gt;&lt;LI&gt;LOOP &lt;SPAN class="keyword"&gt;AT c_t_data &lt;SPAN class="keyword"&gt;INTO&lt;/SPAN&gt; s_data_cats where posid = .&amp;nbsp; &lt;/SPAN&gt;&lt;/LI&gt;&lt;LI&gt;&amp;nbsp; &lt;/LI&gt;&lt;LI&gt; *&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Get WBS Element POSID.&amp;nbsp; &lt;/LI&gt;&lt;LI&gt;&lt;STRONG&gt;read table i_posid into wa1 with key pspnt = s_data_cats-rproj with binary search.&lt;/STRONG&gt;&lt;/LI&gt;&lt;LI&gt;&lt;SPAN class="keyword"&gt;&amp;nbsp; &lt;/SPAN&gt;&lt;/LI&gt;&lt;LI&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; IF s_data_cats-refcounter &lt;SPAN class="keyword"&gt;IS &lt;SPAN class="op"&gt;NOT&lt;/SPAN&gt; INITIAL.&amp;nbsp; &lt;/SPAN&gt;&lt;/LI&gt;&lt;LI&gt;&amp;nbsp; &lt;/LI&gt;&lt;LI&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;STRONG&gt;read table i_catshours into wa with key&lt;SPAN class="keyword"&gt;&lt;SPAN class="keyword"&gt;&lt;/SPAN&gt; counter = s_data_cats-refcounter binary search.&amp;nbsp; &lt;/SPAN&gt;&lt;/STRONG&gt;&lt;/LI&gt;&lt;/OL&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Thanks&lt;/P&gt;&lt;P&gt;Vivek&lt;/P&gt;&lt;P&gt;&lt;SPAN class="keyword"&gt;&lt;BR /&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 21 Feb 2013 17:14:15 GMT</pubDate>
      <guid>https://community.sap.com/t5/application-development-and-automation-discussions/performance-and-loop-statement/m-p/9291035#M1725162</guid>
      <dc:creator>Former Member</dc:creator>
      <dc:date>2013-02-21T17:14:15Z</dc:date>
    </item>
    <item>
      <title>Re: Performance and loop statement</title>
      <link>https://community.sap.com/t5/application-development-and-automation-discussions/performance-and-loop-statement/m-p/9291036#M1725163</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi Amine,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Vivek has already mentioned good points for improvements.&lt;/P&gt;&lt;P&gt;If you have loop and inside single select statements, then if table that you loop over contains 1000 rows, you will query database 1000 times with small queries about single values, or even 2000 times if you have 2 select statements inside loop.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Instead in your example you can ask just twice, using FOR ALL ENTRIES query. This is statement that reduces number of queries to database, already optimized query. Here is the example:&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt; DATA &lt;SPAN style="font-size: 10pt;"&gt;lt_prps_posid&lt;/SPAN&gt;&lt;SPAN style="color: #0000ff; font-size: 10pt;"&gt; TYPE TABLE OF &lt;/SPAN&gt;&lt;SPAN style="font-size: 10pt;"&gt;prps&lt;/SPAN&gt;&lt;SPAN style="color: #0000ff; font-size: 10pt;"&gt;-&lt;/SPAN&gt;&lt;SPAN style="font-size: 10pt;"&gt;posid&lt;/SPAN&gt;&lt;SPAN style="color: #0000ff; font-size: 10pt;"&gt;.&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt; DATA &lt;SPAN style="font-size: 10pt;"&gt;lt_catsdb_catshours&lt;/SPAN&gt;&lt;SPAN style="color: #0000ff; font-size: 10pt;"&gt; TYPE TABLE OF &lt;/SPAN&gt;&lt;SPAN style="font-size: 10pt;"&gt;catsdb&lt;/SPAN&gt;&lt;SPAN style="color: #0000ff; font-size: 10pt;"&gt;-&lt;/SPAN&gt;&lt;SPAN style="font-size: 10pt;"&gt;catshours&lt;/SPAN&gt;&lt;SPAN style="color: #0000ff; font-size: 10pt;"&gt;.&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; SELECT DISTINCT &lt;SPAN style="font-size: 10pt;"&gt;posid&lt;/SPAN&gt;&lt;SPAN style="color: #0000ff; font-size: 10pt;"&gt; FROM &lt;/SPAN&gt;&lt;SPAN style="font-size: 10pt;"&gt;prps&lt;/SPAN&gt;&lt;SPAN style="color: #0000ff; font-size: 10pt;"&gt; &lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; INTO TABLE &lt;SPAN style="font-size: 10pt;"&gt;lt_prps_posid&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; FOR ALL ENTRIES in &lt;SPAN style="font-size: 10pt;"&gt;c_t_data&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; WHERE &lt;SPAN style="font-size: 10pt;"&gt;pspnr&lt;/SPAN&gt;&lt;SPAN style="color: #0000ff; font-size: 10pt;"&gt; = &lt;/SPAN&gt;&lt;SPAN style="font-size: 10pt;"&gt;c_t_data&lt;/SPAN&gt;&lt;SPAN style="color: #0000ff; font-size: 10pt;"&gt;-&lt;/SPAN&gt;&lt;SPAN style="font-size: 10pt;"&gt;rproj&lt;/SPAN&gt;&lt;SPAN style="color: #0000ff; font-size: 10pt;"&gt;.&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; SELECT DISTINCT &lt;SPAN style="font-size: 10pt;"&gt;catshours&lt;/SPAN&gt;&lt;SPAN style="color: #0000ff; font-size: 10pt;"&gt; FROM &lt;/SPAN&gt;&lt;SPAN style="font-size: 10pt;"&gt;catsdb&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; INTO TABLE &lt;SPAN style="font-size: 10pt;"&gt;lt_catsdb_catshours&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; FOR ALL ENTRIES IN &lt;SPAN style="font-size: 10pt;"&gt;c_t_data&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; WHERE &lt;SPAN style="font-size: 10pt;"&gt;counter&lt;/SPAN&gt;&lt;SPAN style="color: #0000ff; font-size: 10pt;"&gt; IS NOT NULL AND&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="font-size: 10pt;"&gt;counter&lt;/SPAN&gt;&lt;SPAN style="color: #0000ff; font-size: 10pt;"&gt; = &lt;/SPAN&gt;&lt;SPAN style="font-size: 10pt;"&gt;c_t_data&lt;/SPAN&gt;&lt;SPAN style="color: #0000ff; font-size: 10pt;"&gt;-&lt;/SPAN&gt;&lt;SPAN style="font-size: 10pt;"&gt;refcounter&lt;/SPAN&gt;&lt;SPAN style="color: #0000ff; font-size: 10pt;"&gt;.&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Then you have all database data inside internal tables. So you construct loop simillar to what you have already, and replace selects with binary reads from internal tables as Vivek proposed. It is important to use binary search for large data, it will optimize performance significantly. Keep it mind, that table should be sorted first if you want to use binary search. &lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;There is one thing that you should be aware of: FOR ALL ENTRIES IN does not offer same logic as separated SELECT SINGLE, where only single value is found and it is much faster than SELECT FROM without SINGLE addition. There is UNIQUE statement in fact, but it is not the same, as results are merged to unique at the end of statement processing, on database side. That is why sometimes, by experience, separated LOOP AT with SELECT SINGLE may be faster, but it depends on data distribution and tables size.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Hope this helps &lt;SPAN __jive_emoticon_name="happy" __jive_macro_name="emoticon" class="jive_macro jive_emote" src="https://community.sap.com/1214/images/emoticons/happy.gif"&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Regards,&lt;/P&gt;&lt;P&gt;Adam&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 21 Feb 2013 17:35:37 GMT</pubDate>
      <guid>https://community.sap.com/t5/application-development-and-automation-discussions/performance-and-loop-statement/m-p/9291036#M1725163</guid>
      <dc:creator>adam_krawczyk1</dc:creator>
      <dc:date>2013-02-21T17:35:37Z</dc:date>
    </item>
    <item>
      <title>Re: Performance and loop statement</title>
      <link>https://community.sap.com/t5/application-development-and-automation-discussions/performance-and-loop-statement/m-p/9291037#M1725164</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi Amine,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;One of most importants when talking about performance improvement is to reduce I/O as much as possible. In your example, where you have single data reading (SELECT) whenever program loops, you would have many single inputs (costly). The best would be to select all needed data at once and then, inside your loop, to work only with internal tables (would replace SELECT by READ TABLE, much less costly). Also about internal tables don't forget to use BINARY SEARCH option while reading it (first SORT table by key you will use when do READ) specialy if this internal table has a reasonable amount of data (what also could increase a lot the overall processing time).&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Edgar&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 21 Feb 2013 18:24:30 GMT</pubDate>
      <guid>https://community.sap.com/t5/application-development-and-automation-discussions/performance-and-loop-statement/m-p/9291037#M1725164</guid>
      <dc:creator>edgar_nagasaki</dc:creator>
      <dc:date>2013-02-21T18:24:30Z</dc:date>
    </item>
    <item>
      <title>Re: Performance and loop statement</title>
      <link>https://community.sap.com/t5/application-development-and-automation-discussions/performance-and-loop-statement/m-p/9291038#M1725165</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi Amine,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;I am sending you this code, just copy and try. &lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;DATA: s_data_cats TYPE zoxd780009,&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; wa_hours TYPE catshours,&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; it_prps TYPE STANDARD TABLE OF prps INITIAL SIZE 0,&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; wa_prps TYPE prps,&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; it_catsdb TYPE STANDARD TABLE OF catsdb INITIAL SIZE 0,&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; wa_catsdb TYPE catsdb.&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;SELECT * FROM prps INTO it_prps FOR ALL ENTRIES IN c_t_data &lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;WHERE pspnr = c_t_data-rproj.&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;SELECT * FROM catsdb INTO it_catsdbs FOR ALL ENTRIES IN c_t_data &lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;WHERE counter = c_t_data-refcounter.&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; &lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;LOOP AT c_t_data INTO s_data_cats.&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt; *&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Get WBS Element POSID.&amp;nbsp; &lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;READ TABLE it_prps into wa_prps with key pspnr = s_data_cats-rproj.&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;if sy-subrc = 0.&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; s_data_cats-posid = wa_prps-posid.&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; IF s_data_cats-refcounter IS NOT INITIAL.&amp;nbsp; &lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; READ TABLE it_catsdb INTO wa_catsdb WITH KEY counter = s_data_cats-refcounter.&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; IF SY_SUBRC = 0.&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; wa_hours = wa_catsdb-catshours.&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; s_data_cats-catshours = s_data_cats-catshours - wa_hours.&amp;nbsp; &lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ENDIF.&amp;nbsp; &lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;ENDIF.&amp;nbsp; &lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;MODIFY c_t_data FROM s_data_cats .&amp;nbsp; &lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;CLEAR s_data_cats.&amp;nbsp; &lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;ENDLOOP.&amp;nbsp; &lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Wish it will solve the problem increase your performance.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Regards,&lt;/P&gt;&lt;P&gt;Bishwajit.&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Fri, 22 Feb 2013 03:26:35 GMT</pubDate>
      <guid>https://community.sap.com/t5/application-development-and-automation-discussions/performance-and-loop-statement/m-p/9291038#M1725165</guid>
      <dc:creator>bishwajit_das</dc:creator>
      <dc:date>2013-02-22T03:26:35Z</dc:date>
    </item>
    <item>
      <title>Re: Performance and loop statement</title>
      <link>https://community.sap.com/t5/application-development-and-automation-discussions/performance-and-loop-statement/m-p/9291039#M1725166</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi Amine and Bishwajit,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;I see that solution proposed by Bishwajit is close to final and you have full code example provided. I would modify SELECT * to single fields selection (SELECT pspnr) as for example prps table has 136 columns and reading all of them is not needed. Also we should use sorted table, if more than 100 rows will be processed - and I assume as it is the situation as this is BW extractor code.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;I extended my example and merged with Amine initial solution and here is final optimized result that I would recommend. It uses standard tables of single columns and then just sorts tables once (that is why I do not use sorted table, where each insert must be in sorted order, but it is small memory optimization, sorted table would give also good results).&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt; DATA &lt;SPAN style="font-size: 10pt;"&gt;lt_prps_posid&lt;/SPAN&gt;&lt;SPAN style="color: #0000ff; font-size: 10pt;"&gt; TYPE TABLE OF &lt;/SPAN&gt;&lt;SPAN style="font-size: 10pt;"&gt;prps&lt;/SPAN&gt;&lt;SPAN style="color: #0000ff; font-size: 10pt;"&gt;-&lt;/SPAN&gt;&lt;SPAN style="font-size: 10pt;"&gt;posid&lt;/SPAN&gt;&lt;SPAN style="color: #0000ff; font-size: 10pt;"&gt;.&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt; DATA &lt;SPAN style="font-size: 10pt;"&gt;lt_catsdb_catshours&lt;/SPAN&gt;&lt;SPAN style="color: #0000ff; font-size: 10pt;"&gt; TYPE TABLE OF &lt;/SPAN&gt;&lt;SPAN style="font-size: 10pt;"&gt;catsdb&lt;/SPAN&gt;&lt;SPAN style="color: #0000ff; font-size: 10pt;"&gt;-&lt;/SPAN&gt;&lt;SPAN style="font-size: 10pt;"&gt;catshours&lt;/SPAN&gt;&lt;SPAN style="color: #0000ff; font-size: 10pt;"&gt;.&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt; DATA &lt;SPAN style="font-size: 10pt;"&gt;l_posid&lt;/SPAN&gt;&lt;SPAN style="color: #0000ff; font-size: 10pt;"&gt; TYPE &lt;/SPAN&gt;&lt;SPAN style="font-size: 10pt;"&gt;prps&lt;/SPAN&gt;&lt;SPAN style="color: #0000ff; font-size: 10pt;"&gt;-&lt;/SPAN&gt;&lt;SPAN style="font-size: 10pt;"&gt;posid&lt;/SPAN&gt;&lt;SPAN style="color: #0000ff; font-size: 10pt;"&gt;.&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt; DATA &lt;SPAN style="font-size: 10pt;"&gt;l_catshours&lt;/SPAN&gt;&lt;SPAN style="color: #0000ff; font-size: 10pt;"&gt; TYPE &lt;/SPAN&gt;&lt;SPAN style="font-size: 10pt;"&gt;catsdb&lt;/SPAN&gt;&lt;SPAN style="color: #0000ff; font-size: 10pt;"&gt;-&lt;/SPAN&gt;&lt;SPAN style="font-size: 10pt;"&gt;catshours&lt;/SPAN&gt;&lt;SPAN style="color: #0000ff; font-size: 10pt;"&gt;.&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; &lt;/P&gt;&lt;P&gt;&amp;nbsp; SELECT DISTINCT &lt;SPAN style="font-size: 10pt;"&gt;posid&lt;/SPAN&gt;&lt;SPAN style="color: #0000ff; font-size: 10pt;"&gt; FROM &lt;/SPAN&gt;&lt;SPAN style="font-size: 10pt;"&gt;prps&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; INTO TABLE &lt;SPAN style="font-size: 10pt;"&gt;lt_prps_posid&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; FOR ALL ENTRIES IN &lt;SPAN style="font-size: 10pt;"&gt;c_t_data&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; WHERE &lt;SPAN style="font-size: 10pt;"&gt;pspnr&lt;/SPAN&gt;&lt;SPAN style="color: #0000ff; font-size: 10pt;"&gt; = &lt;/SPAN&gt;&lt;SPAN style="font-size: 10pt;"&gt;c_t_data&lt;/SPAN&gt;&lt;SPAN style="color: #0000ff; font-size: 10pt;"&gt;-&lt;/SPAN&gt;&lt;SPAN style="font-size: 10pt;"&gt;rproj&lt;/SPAN&gt;&lt;SPAN style="color: #0000ff; font-size: 10pt;"&gt;.&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; SELECT DISTINCT &lt;SPAN style="font-size: 10pt;"&gt;catshours&lt;/SPAN&gt;&lt;SPAN style="color: #0000ff; font-size: 10pt;"&gt; FROM &lt;/SPAN&gt;&lt;SPAN style="font-size: 10pt;"&gt;catsdb&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; INTO TABLE &lt;SPAN style="font-size: 10pt;"&gt;lt_catsdb_catshours&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; FOR ALL ENTRIES IN &lt;SPAN style="font-size: 10pt;"&gt;c_t_data&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; WHERE &lt;SPAN style="font-size: 10pt;"&gt;counter&lt;/SPAN&gt;&lt;SPAN style="color: #0000ff; font-size: 10pt;"&gt; IS NOT NULL AND&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="font-size: 10pt;"&gt;counter&lt;/SPAN&gt;&lt;SPAN style="color: #0000ff; font-size: 10pt;"&gt; = &lt;/SPAN&gt;&lt;SPAN style="font-size: 10pt;"&gt;c_t_data&lt;/SPAN&gt;&lt;SPAN style="color: #0000ff; font-size: 10pt;"&gt;-&lt;/SPAN&gt;&lt;SPAN style="font-size: 10pt;"&gt;refcounter&lt;/SPAN&gt;&lt;SPAN style="color: #0000ff; font-size: 10pt;"&gt;.&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; SORT &lt;SPAN style="font-size: 10pt;"&gt;lt_prps_posid&lt;/SPAN&gt;&lt;SPAN style="color: #0000ff; font-size: 10pt;"&gt; by &lt;/SPAN&gt;&lt;SPAN style="font-size: 10pt;"&gt;table_line&lt;/SPAN&gt;&lt;SPAN style="color: #0000ff; font-size: 10pt;"&gt;.&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; SORT &lt;SPAN style="font-size: 10pt;"&gt;lt_catsdb_catshours&lt;/SPAN&gt;&lt;SPAN style="color: #0000ff; font-size: 10pt;"&gt; by &lt;/SPAN&gt;&lt;SPAN style="font-size: 10pt;"&gt;table_line&lt;/SPAN&gt;&lt;SPAN style="color: #0000ff; font-size: 10pt;"&gt;.&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 10pt;"&gt;&lt;BR /&gt;&lt;/SPAN&gt;&amp;nbsp; LOOP AT &lt;SPAN style="font-size: 10pt;"&gt;c_t_data&lt;/SPAN&gt;&lt;SPAN style="color: #0000ff; font-size: 10pt;"&gt; INTO &lt;/SPAN&gt;&lt;SPAN style="font-size: 10pt;"&gt;s_data_cats&lt;/SPAN&gt;&lt;SPAN style="color: #0000ff; font-size: 10pt;"&gt;.&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="color: #808080; font-size: 10pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="color: #808080; font-size: 10pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; "&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Get WBS Element POSID.&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN style="color: #808080; font-size: 10pt;"&gt;"SELECT SINGLE &lt;SPAN style="text-decoration: underline;"&gt;posid&lt;/SPAN&gt; INTO s_data_cats-&lt;SPAN style="text-decoration: underline;"&gt;posid&lt;/SPAN&gt; FROM &lt;SPAN style="text-decoration: underline;"&gt;prps&lt;/SPAN&gt; &lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="color: #808080; font-size: 10pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; " WHERE &lt;SPAN style="text-decoration: underline;"&gt;pspnr&lt;/SPAN&gt; = s_data_cats-&lt;SPAN style="text-decoration: underline;"&gt;rproj&lt;/SPAN&gt;.&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; READ TABLE &lt;SPAN style="font-size: 10pt;"&gt;lt_prps_posid&lt;/SPAN&gt;&lt;SPAN style="color: #0000ff; font-size: 10pt;"&gt; WITH KEY &lt;/SPAN&gt;&lt;SPAN style="font-size: 10pt;"&gt;table_line&lt;/SPAN&gt;&lt;SPAN style="color: #0000ff; font-size: 10pt;"&gt; = &lt;/SPAN&gt;&lt;SPAN style="font-size: 10pt;"&gt;s_data_cats&lt;/SPAN&gt;&lt;SPAN style="color: #0000ff; font-size: 10pt;"&gt;-&lt;/SPAN&gt;&lt;SPAN style="font-size: 10pt;"&gt;rproj&lt;/SPAN&gt;&lt;SPAN style="color: #0000ff; font-size: 10pt;"&gt; &lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="color: #0000ff; font-size: 10pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; INTO &lt;/SPAN&gt;&lt;SPAN style="font-size: 10pt;"&gt;l_posid&lt;/SPAN&gt;&lt;SPAN style="color: #0000ff; font-size: 10pt;"&gt; binary search.&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; IF &lt;SPAN style="font-size: 10pt;"&gt;s_data_cats&lt;/SPAN&gt;&lt;SPAN style="color: #0000ff; font-size: 10pt;"&gt;-&lt;/SPAN&gt;&lt;SPAN style="font-size: 10pt;"&gt;refcounter&lt;/SPAN&gt;&lt;SPAN style="color: #0000ff; font-size: 10pt;"&gt; IS NOT INITIAL.&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="color: #0000ff; font-size: 10pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="color: #808080; font-size: 10pt;"&gt;"SELECT SINGLE &lt;SPAN style="text-decoration: underline;"&gt;catshours&lt;/SPAN&gt; FROM &lt;SPAN style="text-decoration: underline;"&gt;catsdb&lt;/SPAN&gt; INTO wa_hours &lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="color: #808080; font-size: 10pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; " WHERE counter = s_data_cats-&lt;SPAN style="text-decoration: underline;"&gt;refcounter&lt;/SPAN&gt;.&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; READ TABLE &lt;SPAN style="font-size: 10pt;"&gt;lt_catsdb_catshours&lt;/SPAN&gt;&lt;SPAN style="color: #0000ff; font-size: 10pt;"&gt; &lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="color: #0000ff; font-size: 10pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; WITH KEY &lt;/SPAN&gt;&lt;SPAN style="font-size: 10pt;"&gt;table_line&lt;/SPAN&gt;&lt;SPAN style="color: #0000ff; font-size: 10pt;"&gt; = &lt;/SPAN&gt;&lt;SPAN style="font-size: 10pt;"&gt;s_data_cats&lt;/SPAN&gt;&lt;SPAN style="color: #0000ff; font-size: 10pt;"&gt;-&lt;/SPAN&gt;&lt;SPAN style="font-size: 10pt;"&gt;refcounter&lt;/SPAN&gt;&lt;SPAN style="color: #0000ff; font-size: 10pt;"&gt; INTO &lt;/SPAN&gt;&lt;SPAN style="font-size: 10pt;"&gt;l_catshours&lt;/SPAN&gt;&lt;SPAN style="color: #0000ff; font-size: 10pt;"&gt; binary search.&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; IF &lt;SPAN style="font-size: 10pt;"&gt;sy&lt;/SPAN&gt;&lt;SPAN style="color: #0000ff; font-size: 10pt;"&gt;-&lt;/SPAN&gt;&lt;SPAN style="font-size: 10pt;"&gt;subrc&lt;/SPAN&gt;&lt;SPAN style="color: #0000ff; font-size: 10pt;"&gt; = &lt;/SPAN&gt;&lt;SPAN style="color: #3399ff; font-size: 10pt;"&gt;0&lt;/SPAN&gt;&lt;SPAN style="color: #0000ff; font-size: 10pt;"&gt;.&lt;/SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 10pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; s_data_cats&lt;/SPAN&gt;&lt;SPAN style="color: #0000ff; font-size: 10pt;"&gt;-&lt;/SPAN&gt;&lt;SPAN style="font-size: 10pt;"&gt;catshours&lt;/SPAN&gt;&lt;SPAN style="color: #0000ff; font-size: 10pt;"&gt; = &lt;/SPAN&gt;&lt;SPAN style="font-size: 10pt;"&gt;s_data_cats&lt;/SPAN&gt;&lt;SPAN style="color: #0000ff; font-size: 10pt;"&gt;-&lt;/SPAN&gt;&lt;SPAN style="font-size: 10pt;"&gt;catshours&lt;/SPAN&gt;&lt;SPAN style="color: #0000ff; font-size: 10pt;"&gt; - &lt;/SPAN&gt;&lt;SPAN style="font-size: 10pt;"&gt;wa_hours&lt;/SPAN&gt;&lt;SPAN style="color: #0000ff; font-size: 10pt;"&gt;.&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ENDIF.&lt;/P&gt;&lt;P&gt;&lt;SPAN style="color: #0000ff; font-size: 10pt;"&gt;&lt;BR /&gt;&lt;/SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ENDIF.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; MODIFY &lt;SPAN style="font-size: 10pt;"&gt;c_t_data&lt;/SPAN&gt;&lt;SPAN style="color: #0000ff; font-size: 10pt;"&gt; FROM &lt;/SPAN&gt;&lt;SPAN style="font-size: 10pt;"&gt;s_data_cats&lt;/SPAN&gt;&lt;SPAN style="color: #0000ff; font-size: 10pt;"&gt; .&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; CLEAR &lt;SPAN style="font-size: 10pt;"&gt;s_data_cats&lt;/SPAN&gt;&lt;SPAN style="color: #0000ff; font-size: 10pt;"&gt;.&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; ENDLOOP.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;As you see - data is fetched from database only once. Then code is working on internal tables - operating on memory is much faster. Sorted table give very quick reading by key. &lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Regards,&lt;/P&gt;&lt;P&gt;Adam&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Fri, 22 Feb 2013 09:45:35 GMT</pubDate>
      <guid>https://community.sap.com/t5/application-development-and-automation-discussions/performance-and-loop-statement/m-p/9291039#M1725166</guid>
      <dc:creator>adam_krawczyk1</dc:creator>
      <dc:date>2013-02-22T09:45:35Z</dc:date>
    </item>
    <item>
      <title>Re: Performance and loop statement</title>
      <link>https://community.sap.com/t5/application-development-and-automation-discussions/performance-and-loop-statement/m-p/9291040#M1725167</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hai,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Fill the required table before the loop starts and use read statement inside the loop.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt; Thanks &amp;amp; Regards,&lt;/P&gt;&lt;P&gt; Ramu Velaga.&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Fri, 22 Feb 2013 09:52:15 GMT</pubDate>
      <guid>https://community.sap.com/t5/application-development-and-automation-discussions/performance-and-loop-statement/m-p/9291040#M1725167</guid>
      <dc:creator>Former Member</dc:creator>
      <dc:date>2013-02-22T09:52:15Z</dc:date>
    </item>
    <item>
      <title>Re: Performance and loop statement</title>
      <link>https://community.sap.com/t5/application-development-and-automation-discussions/performance-and-loop-statement/m-p/9291041#M1725168</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Thanks to all for your help.&lt;/P&gt;&lt;P&gt;I understand more better the functionning of Abap thanks to your explanations.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Amine&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Fri, 22 Feb 2013 10:22:44 GMT</pubDate>
      <guid>https://community.sap.com/t5/application-development-and-automation-discussions/performance-and-loop-statement/m-p/9291041#M1725168</guid>
      <dc:creator>Former Member</dc:creator>
      <dc:date>2013-02-22T10:22:44Z</dc:date>
    </item>
  </channel>
</rss>

