<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:taxo="http://purl.org/rss/1.0/modules/taxonomy/" version="2.0">
  <channel>
    <title>topic Re: performance tuning for Nested loops in Application Development and Automation Discussions</title>
    <link>https://community.sap.com/t5/application-development-and-automation-discussions/performance-tuning-for-nested-loops/m-p/3254599#M777239</link>
    <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;hi suresh,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Nested Loops - This is one of the fear factors for all the ABAP developers as this consumes lot of program execution time. If the number of entries in the internal tables is huge, then the situation would be too worse. The solution for this is to use parallel cursor method whenever there is a need for Nested Loop.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;Program using Normal Nested Loop:&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;REPORT  ZNORMAL_NESTEDLOOP.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;TABLES:&lt;/P&gt;&lt;P&gt;  likp,&lt;/P&gt;&lt;P&gt;  lips.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Data:&lt;/P&gt;&lt;P&gt;  t_likp  type table of likp,&lt;/P&gt;&lt;P&gt;  t_lips  type TABLE OF lips.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;data:&lt;/P&gt;&lt;P&gt;  W_RUNTIME1 TYPE I,&lt;/P&gt;&lt;P&gt;  W_RUNTIME2 TYPE I.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;START-OF-SELECTION.&lt;/P&gt;&lt;P&gt;select *&lt;/P&gt;&lt;P&gt;  from likp&lt;/P&gt;&lt;P&gt;  into table t_likp.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;select *&lt;/P&gt;&lt;P&gt;  from lips&lt;/P&gt;&lt;P&gt;  into table t_lips.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;get RUN TIME FIELD w_runtime1.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;loop at t_likp into likp.&lt;/P&gt;&lt;P&gt;  loop at t_lips into lips where vbeln eq likp-vbeln.&lt;/P&gt;&lt;P&gt;  endloop.&lt;/P&gt;&lt;P&gt;endloop.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;get RUN TIME FIELD w_runtime2.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;w_runtime2 = w_runtime2 - w_runtime1.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;write w_runtime2.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;Nested Loop using Parallel Cursor:&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;REPORT  zparallel_cursor2.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;TABLES:&lt;/P&gt;&lt;P&gt;  likp,&lt;/P&gt;&lt;P&gt;  lips.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;DATA:&lt;/P&gt;&lt;P&gt;  t_likp  TYPE TABLE OF likp,&lt;/P&gt;&lt;P&gt;  t_lips  TYPE TABLE OF lips.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;DATA:&lt;/P&gt;&lt;P&gt;  w_runtime1 TYPE i,&lt;/P&gt;&lt;P&gt;  w_runtime2 TYPE i,&lt;/P&gt;&lt;P&gt;  w_index LIKE sy-index.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;START-OF-SELECTION.&lt;/P&gt;&lt;P&gt;  SELECT *&lt;/P&gt;&lt;P&gt;    FROM likp&lt;/P&gt;&lt;P&gt;    INTO TABLE t_likp.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  SELECT *&lt;/P&gt;&lt;P&gt;    FROM lips&lt;/P&gt;&lt;P&gt;    INTO TABLE t_lips.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  GET RUN TIME FIELD w_runtime1.&lt;/P&gt;&lt;P&gt;  SORT t_likp BY vbeln.&lt;/P&gt;&lt;P&gt;  SORT t_lips BY vbeln.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  LOOP AT t_likp INTO likp.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    LOOP AT t_lips INTO lips FROM w_index.&lt;/P&gt;&lt;P&gt;      IF likp-vbeln NE lips-vbeln.&lt;/P&gt;&lt;P&gt;        w_index = sy-tabix.&lt;/P&gt;&lt;P&gt;        EXIT.&lt;/P&gt;&lt;P&gt;      ENDIF.&lt;/P&gt;&lt;P&gt;    ENDLOOP.&lt;/P&gt;&lt;P&gt;  ENDLOOP.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  GET RUN TIME FIELD w_runtime2.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  w_runtime2 = w_runtime2 - w_runtime1.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  WRITE w_runtime2.&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;STRONG&gt;Iteration No  Normal Nested Loop  Using Parallel Cursor&lt;/STRONG&gt;  1.                34,796,147                              63,829  &lt;/P&gt;&lt;P&gt;2.                38,534,583                              56,894  &lt;/P&gt;&lt;P&gt;3.                34,103,426                              50,510  &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;P&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;Hope this is helpful, Do reward.&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Edited by: Runal Singh on Jan 17, 2008 3:52 PM&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
    <pubDate>Thu, 17 Jan 2008 10:21:03 GMT</pubDate>
    <dc:creator>Former Member</dc:creator>
    <dc:date>2008-01-17T10:21:03Z</dc:date>
    <item>
      <title>performance tuning for Nested loops</title>
      <link>https://community.sap.com/t5/application-development-and-automation-discussions/performance-tuning-for-nested-loops/m-p/3254593#M777233</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;Iam having performance problem when running the below code. I have used nested loops and the outer loop have around 60,000 records and inner loop around 90,000 records. When I run the job its taking more than a day to complete. Can any one suggest how to improve the below code. Please dont give any docs or tutorials  but suggest the improvement in below code.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;___________________________________________________________________________________&lt;/P&gt;&lt;P&gt;DATA:w_output1 TYPE ty_output.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  t_final_zuonr[] = t_output[].&lt;/P&gt;&lt;P&gt;  SORT t_output BY bukrs zuonr.&lt;/P&gt;&lt;P&gt;  DELETE ADJACENT DUPLICATES FROM t_final_zuonr COMPARING bukrs zuonr.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  MESSAGE 'To find the categories based on zuonr(assignement number)' TYPE 'S'.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  LOOP AT t_final_zuonr INTO w_output1.&lt;/P&gt;&lt;P&gt;    LOOP AT t_output INTO w_output WHERE bukrs EQ w_output1-bukrs&lt;/P&gt;&lt;P&gt;                                    AND  zuonr EQ w_output1-zuonr.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;      IF w_output-augbl &amp;lt;&amp;gt; space.&lt;/P&gt;&lt;P&gt;        w_output-rlc = '1'.&lt;/P&gt;&lt;P&gt;        MODIFY t_output FROM w_output TRANSPORTING rlc WHERE bukrs = w_output-bukrs AND&lt;/P&gt;&lt;P&gt;                                                             zuonr = w_output-zuonr.&lt;/P&gt;&lt;P&gt;      ENDIF.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;      IF w_output-rlc IS INITIAL.&lt;/P&gt;&lt;P&gt;        CASE w_output-blart.&lt;/P&gt;&lt;P&gt;          WHEN 'WE'.&lt;/P&gt;&lt;P&gt;            v_blart = 'X'.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;          WHEN 'RE' OR 'RN'.&lt;/P&gt;&lt;P&gt;            v_blart1 = 'X'.&lt;/P&gt;&lt;P&gt;        ENDCASE.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;        IF v_blart = 'X'.&lt;/P&gt;&lt;P&gt;          v_sum_3 = v_sum_3 + w_output-dmbtr.&lt;/P&gt;&lt;P&gt;        ENDIF.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;        IF v_blart = 'X' AND&lt;/P&gt;&lt;P&gt;           v_blart1 = 'X'.&lt;/P&gt;&lt;P&gt;          w_output-rlc = '2'.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;        ELSEIF v_blart1 = 'X' AND&lt;/P&gt;&lt;P&gt;               v_blart = ' ' AND&lt;/P&gt;&lt;P&gt;            w_output-dmbtr GE 0.&lt;/P&gt;&lt;P&gt;          w_output-rlc = '4'.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;        ELSEIF v_blart1 = 'X' AND&lt;/P&gt;&lt;P&gt;               v_blart  = ' ' AND&lt;/P&gt;&lt;P&gt;            w_output-dmbtr LE 0.&lt;/P&gt;&lt;P&gt;          w_output-rlc = '5'.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;        ELSEIF v_blart = 'X' AND&lt;/P&gt;&lt;P&gt;               v_sum_3 LE 0.&lt;/P&gt;&lt;P&gt;          w_output-rlc = '3'.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;        ELSEIF v_blart = 'X' AND&lt;/P&gt;&lt;P&gt;               v_sum_3 GT 0.&lt;/P&gt;&lt;P&gt;          w_output-rlc = '6'.&lt;/P&gt;&lt;P&gt;        ELSE.&lt;/P&gt;&lt;P&gt;          w_output-rlc = '7'.&lt;/P&gt;&lt;P&gt;        ENDIF.&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;    CLEAR :v_blart,&lt;/P&gt;&lt;P&gt;           v_blart1.&lt;/P&gt;&lt;P&gt;    MODIFY t_output FROM w_output TRANSPORTING rlc WHERE bukrs = w_output-bukrs AND&lt;/P&gt;&lt;P&gt;                                                         zuonr = w_output-zuonr.&lt;/P&gt;&lt;P&gt;    REFRESH t_zuonr.&lt;/P&gt;&lt;P&gt;  ENDLOOP.&lt;/P&gt;&lt;P&gt;  REFRESH t_final_zuonr.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;MESSAGE 'Rlc category updated to output table' TYPE 'S'.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Best Regards&lt;/P&gt;&lt;P&gt;Suresh&lt;/P&gt;&lt;P&gt;_____________________________________________________________________________________&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Mon, 14 Jan 2008 06:38:16 GMT</pubDate>
      <guid>https://community.sap.com/t5/application-development-and-automation-discussions/performance-tuning-for-nested-loops/m-p/3254593#M777233</guid>
      <dc:creator>Former Member</dc:creator>
      <dc:date>2008-01-14T06:38:16Z</dc:date>
    </item>
    <item>
      <title>Re: performance tuning for Nested loops</title>
      <link>https://community.sap.com/t5/application-development-and-automation-discussions/performance-tuning-for-nested-loops/m-p/3254594#M777234</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;Avoid nested loops is in your code,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Instead u can use read statment like follows,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;LOOP AT t_final_zuonr INTO w_output1.&lt;/P&gt;&lt;P&gt;READ  t_output INTO w_output  WITH KEY bukrs = w_output1-bukrs.&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;P&gt;ENDLOOOP.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;it improve your code performanace..&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;reward points if useful,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;seshu.&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Mon, 14 Jan 2008 06:59:52 GMT</pubDate>
      <guid>https://community.sap.com/t5/application-development-and-automation-discussions/performance-tuning-for-nested-loops/m-p/3254594#M777234</guid>
      <dc:creator>Former Member</dc:creator>
      <dc:date>2008-01-14T06:59:52Z</dc:date>
    </item>
    <item>
      <title>Re: performance tuning for Nested loops</title>
      <link>https://community.sap.com/t5/application-development-and-automation-discussions/performance-tuning-for-nested-loops/m-p/3254595#M777235</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;hi suresh &lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;your code can be modified as&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;SORT t_output BY bukrs zuonr.&lt;/P&gt;&lt;P&gt;DELETE ADJACENT DUPLICATES FROM t_final_zuonr COMPARING bukrs zuonr.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;LOOP AT t_final_zuonr INTO w_output1.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;read table t_output INTO w_output with key  bukrs EQ w_output1-bukrs&lt;/P&gt;&lt;P&gt;                                                                AND zuonr EQ w_output1-zuonr&lt;/P&gt;&lt;P&gt;                                                                binary search.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;if sy-subrc = 0 .&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;your code&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;/UL&gt;&lt;P&gt;&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;donot forgot to reward points if helpful&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;regards&lt;/P&gt;&lt;P&gt;hitesh&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Mon, 14 Jan 2008 07:36:51 GMT</pubDate>
      <guid>https://community.sap.com/t5/application-development-and-automation-discussions/performance-tuning-for-nested-loops/m-p/3254595#M777235</guid>
      <dc:creator>Former Member</dc:creator>
      <dc:date>2008-01-14T07:36:51Z</dc:date>
    </item>
    <item>
      <title>Re: performance tuning for Nested loops</title>
      <link>https://community.sap.com/t5/application-development-and-automation-discussions/performance-tuning-for-nested-loops/m-p/3254596#M777236</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;LOOP AT t_final_zuonr INTO w_output1.&lt;/P&gt;&lt;P&gt;LOOP AT t_output INTO w_output WHERE bukrs EQ w_output1-bukrs&lt;/P&gt;&lt;P&gt;AND zuonr EQ w_output1-zuonr.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Your problem is a well known problem, the LOOP AT WHERE on a standard table must loop each time the full table, &lt;/P&gt;&lt;P&gt;as I can not know whether the table is sorted, either use sorted table or read binary search loop from index exit, or&lt;/P&gt;&lt;P&gt;a read if you need only one record from the inner table.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Please find the details in that blog: Measurements on internal tables: Reads and Loops:&lt;/P&gt;&lt;P&gt;/people/siegfried.boes/blog/2007/09/12/runtimes-of-reads-and-loops-on-internal-tables&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;especially  the exact description of 'read binary search - loop from index -exit'&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;With that changes your performance will go down from 60.000 * 90.000 = 5.400.000.000 to something like 300.000.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Siegfried&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Mon, 14 Jan 2008 07:59:47 GMT</pubDate>
      <guid>https://community.sap.com/t5/application-development-and-automation-discussions/performance-tuning-for-nested-loops/m-p/3254596#M777236</guid>
      <dc:creator>Former Member</dc:creator>
      <dc:date>2008-01-14T07:59:47Z</dc:date>
    </item>
    <item>
      <title>Re: performance tuning for Nested loops</title>
      <link>https://community.sap.com/t5/application-development-and-automation-discussions/performance-tuning-for-nested-loops/m-p/3254597#M777237</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;You try following code(or logic) and you can decrease condition statment, just try.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;DATA:w_output1 TYPE ty_output.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;t_final_zuonr[] = t_output[].&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;SORT t_output BY bukrs zuonr.&lt;/P&gt;&lt;P&gt;DELETE ADJACENT DUPLICATES FROM t_final_zuonr COMPARING bukrs zuonr.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;MESSAGE 'To find the categories based on zuonr(assignement number)' TYPE 'S'.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;LOOP AT t_final_zuonr INTO w_output1.&lt;/P&gt;&lt;P&gt;LOOP AT t_output INTO w_output WHERE bukrs EQ w_output1-bukrs&lt;/P&gt;&lt;P&gt;AND zuonr EQ w_output1-zuonr.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;IF w_output-augbl space.&lt;/P&gt;&lt;P&gt;w_output-rlc = '1'.&lt;/P&gt;&lt;P&gt;zuonr = w_output-zuonr.&lt;/P&gt;&lt;P&gt;ENDIF.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;IF w_output-rlc IS INITIAL.&lt;/P&gt;&lt;P&gt;CASE w_output-blart.&lt;/P&gt;&lt;P&gt;WHEN 'WE'.&lt;/P&gt;&lt;P&gt;v_blart = 'X'.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;WHEN 'RE' OR 'RN'.&lt;/P&gt;&lt;P&gt;v_blart1 = 'X'.&lt;/P&gt;&lt;P&gt;ENDCASE.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;IF v_blart = 'X'.&lt;/P&gt;&lt;P&gt;v_sum_3 = v_sum_3 + w_output-dmbtr.&lt;/P&gt;&lt;P&gt;ENDIF.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;IF v_blart = 'X' AND&lt;/P&gt;&lt;P&gt;v_blart1 = 'X'.&lt;/P&gt;&lt;P&gt;w_output-rlc = '2'.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;ELSEIF v_blart1 = 'X' AND&lt;/P&gt;&lt;P&gt;v_blart = ' ' AND&lt;/P&gt;&lt;P&gt;w_output-dmbtr GE 0.&lt;/P&gt;&lt;P&gt;w_output-rlc = '4'.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;ELSEIF v_blart1 = 'X' AND&lt;/P&gt;&lt;P&gt;v_blart = ' ' AND&lt;/P&gt;&lt;P&gt;w_output-dmbtr LE 0.&lt;/P&gt;&lt;P&gt;w_output-rlc = '5'.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;ELSEIF v_blart = 'X' AND&lt;/P&gt;&lt;P&gt;v_sum_3 LE 0.&lt;/P&gt;&lt;P&gt;w_output-rlc = '3'.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;ELSEIF v_blart = 'X' AND&lt;/P&gt;&lt;P&gt;v_sum_3 GT 0.&lt;/P&gt;&lt;P&gt;w_output-rlc = '6'.&lt;/P&gt;&lt;P&gt;ELSE.&lt;/P&gt;&lt;P&gt;w_output-rlc = '7'.&lt;/P&gt;&lt;P&gt;ENDIF.&lt;/P&gt;&lt;P&gt;ENDIF.&lt;/P&gt;&lt;P&gt;MODIFY t_output FROM w_output &lt;/P&gt;&lt;P&gt;ENDLOOP.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;CLEAR :v_blart,&lt;/P&gt;&lt;P&gt;v_blart1.&lt;/P&gt;&lt;P&gt;zuonr = w_output-zuonr.&lt;/P&gt;&lt;P&gt;ENDLOOP.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;REFRESH t_final_zuonr.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;MESSAGE 'Rlc category updated to output table' TYPE 'S'.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;L.Velu&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Mon, 14 Jan 2008 12:44:39 GMT</pubDate>
      <guid>https://community.sap.com/t5/application-development-and-automation-discussions/performance-tuning-for-nested-loops/m-p/3254597#M777237</guid>
      <dc:creator>Former Member</dc:creator>
      <dc:date>2008-01-14T12:44:39Z</dc:date>
    </item>
    <item>
      <title>Re: performance tuning for Nested loops</title>
      <link>https://community.sap.com/t5/application-development-and-automation-discussions/performance-tuning-for-nested-loops/m-p/3254598#M777238</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;try this, it is simple and it will work:&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;data: lv_index type sy-tabix.&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;sort t_output by bukrs zuonr.&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;LOOP AT t_final_zuonr INTO w_output1.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;read table t_output with key bukrs = w_output1-bukrs&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;                                         &lt;STRONG&gt;zuonr = w_output1-zuonr.&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;transporting no fields&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;binary search.&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;check sy-subrc = 0.&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;lv_index = sy-tabix&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;LOOP AT t_output into w_output from lv_index.&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;check: w_output-bukrs = w_output1-bukrs,&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;          &lt;STRONG&gt;w_output-zuonr = w_output1-zuonr.&lt;/STRONG&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;Endloop&lt;/P&gt;&lt;P&gt;&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;Regards,&lt;/P&gt;&lt;P&gt;Sooness.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Edited by: Sooness Munogee on Jan 17, 2008 6:53 AM&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 17 Jan 2008 05:53:08 GMT</pubDate>
      <guid>https://community.sap.com/t5/application-development-and-automation-discussions/performance-tuning-for-nested-loops/m-p/3254598#M777238</guid>
      <dc:creator>dev_parbutteea</dc:creator>
      <dc:date>2008-01-17T05:53:08Z</dc:date>
    </item>
    <item>
      <title>Re: performance tuning for Nested loops</title>
      <link>https://community.sap.com/t5/application-development-and-automation-discussions/performance-tuning-for-nested-loops/m-p/3254599#M777239</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;hi suresh,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Nested Loops - This is one of the fear factors for all the ABAP developers as this consumes lot of program execution time. If the number of entries in the internal tables is huge, then the situation would be too worse. The solution for this is to use parallel cursor method whenever there is a need for Nested Loop.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;Program using Normal Nested Loop:&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;REPORT  ZNORMAL_NESTEDLOOP.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;TABLES:&lt;/P&gt;&lt;P&gt;  likp,&lt;/P&gt;&lt;P&gt;  lips.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Data:&lt;/P&gt;&lt;P&gt;  t_likp  type table of likp,&lt;/P&gt;&lt;P&gt;  t_lips  type TABLE OF lips.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;data:&lt;/P&gt;&lt;P&gt;  W_RUNTIME1 TYPE I,&lt;/P&gt;&lt;P&gt;  W_RUNTIME2 TYPE I.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;START-OF-SELECTION.&lt;/P&gt;&lt;P&gt;select *&lt;/P&gt;&lt;P&gt;  from likp&lt;/P&gt;&lt;P&gt;  into table t_likp.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;select *&lt;/P&gt;&lt;P&gt;  from lips&lt;/P&gt;&lt;P&gt;  into table t_lips.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;get RUN TIME FIELD w_runtime1.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;loop at t_likp into likp.&lt;/P&gt;&lt;P&gt;  loop at t_lips into lips where vbeln eq likp-vbeln.&lt;/P&gt;&lt;P&gt;  endloop.&lt;/P&gt;&lt;P&gt;endloop.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;get RUN TIME FIELD w_runtime2.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;w_runtime2 = w_runtime2 - w_runtime1.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;write w_runtime2.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;Nested Loop using Parallel Cursor:&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;REPORT  zparallel_cursor2.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;TABLES:&lt;/P&gt;&lt;P&gt;  likp,&lt;/P&gt;&lt;P&gt;  lips.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;DATA:&lt;/P&gt;&lt;P&gt;  t_likp  TYPE TABLE OF likp,&lt;/P&gt;&lt;P&gt;  t_lips  TYPE TABLE OF lips.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;DATA:&lt;/P&gt;&lt;P&gt;  w_runtime1 TYPE i,&lt;/P&gt;&lt;P&gt;  w_runtime2 TYPE i,&lt;/P&gt;&lt;P&gt;  w_index LIKE sy-index.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;START-OF-SELECTION.&lt;/P&gt;&lt;P&gt;  SELECT *&lt;/P&gt;&lt;P&gt;    FROM likp&lt;/P&gt;&lt;P&gt;    INTO TABLE t_likp.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  SELECT *&lt;/P&gt;&lt;P&gt;    FROM lips&lt;/P&gt;&lt;P&gt;    INTO TABLE t_lips.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  GET RUN TIME FIELD w_runtime1.&lt;/P&gt;&lt;P&gt;  SORT t_likp BY vbeln.&lt;/P&gt;&lt;P&gt;  SORT t_lips BY vbeln.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  LOOP AT t_likp INTO likp.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    LOOP AT t_lips INTO lips FROM w_index.&lt;/P&gt;&lt;P&gt;      IF likp-vbeln NE lips-vbeln.&lt;/P&gt;&lt;P&gt;        w_index = sy-tabix.&lt;/P&gt;&lt;P&gt;        EXIT.&lt;/P&gt;&lt;P&gt;      ENDIF.&lt;/P&gt;&lt;P&gt;    ENDLOOP.&lt;/P&gt;&lt;P&gt;  ENDLOOP.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  GET RUN TIME FIELD w_runtime2.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  w_runtime2 = w_runtime2 - w_runtime1.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  WRITE w_runtime2.&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;STRONG&gt;Iteration No  Normal Nested Loop  Using Parallel Cursor&lt;/STRONG&gt;  1.                34,796,147                              63,829  &lt;/P&gt;&lt;P&gt;2.                38,534,583                              56,894  &lt;/P&gt;&lt;P&gt;3.                34,103,426                              50,510  &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;P&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;Hope this is helpful, Do reward.&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Edited by: Runal Singh on Jan 17, 2008 3:52 PM&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 17 Jan 2008 10:21:03 GMT</pubDate>
      <guid>https://community.sap.com/t5/application-development-and-automation-discussions/performance-tuning-for-nested-loops/m-p/3254599#M777239</guid>
      <dc:creator>Former Member</dc:creator>
      <dc:date>2008-01-17T10:21:03Z</dc:date>
    </item>
  </channel>
</rss>

