<?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 issue in nested loops in Application Development and Automation Discussions</title>
    <link>https://community.sap.com/t5/application-development-and-automation-discussions/performance-issue-in-nested-loops/m-p/5088100#M1181287</link>
    <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;hi friend,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;try to make a join for ekko and ekpo while selecting data so that u can neglect a loop.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;try this&lt;/P&gt;&lt;PRE&gt;&lt;CODE&gt;
sort IT_EKKO1 by ebeln.
sort IT_EKbe1 by ebeln.
sort IT_EKpo by ebeln.
sort IT_TAB by werks.

LOOP AT IT_EKKO1 INTO WT_EKKO1.

    LOOP AT IT_EKBE1 INTO WT_EKBE1 where EBELN = WT_EKKO1-EBELN.      
  
      LOOP AT IT_EKPO INTO WT_EKPO where ebeln = WT_EKBE1-EBELN
				   and ebelp   =  WT_EKBE1-EBELP
				   and werks   = WT_EKBE1-WERKS
				   and WT_EKPO-MWSKZ NE SPACE.

            PERFORM TAX_CALCULATE_FUNCTION USING WT_EKKO1-BUKRS      "company code
                                                 WT_EKBE1-BUDAT     "posting date
                                                 WT_EKKO1-WAERS      "currency key
                                                 WT_EKPO-EBELN
                                                 WT_EKPO-EBELP      "CONDITION ITEM NUMBER
                                                 WT_EKPO-MWSKZ      "SALES TAX CODE
                                                 WT_EKPO-TXJCD      "TAX JURISIDICTION
                                                 WT_EKBE1-DMBTR      "AMOUNT IN DOCUMENT
                                                 WT_EKKO1-LIFNR      "VENDOR CODE
                                                 WT_EKKO1-LANDS      "COUNTRY KEY
                                                 WT_EKKO1-EKORG      "PURCHASE ORGANIZATION
                                                 WT_EKKO1-LLIEF      "SUPPLYING VENDOR
                                                 WT_EKKO1-BEDAT      "DOCUMENT DATE
                                                 WT_EKPO-MATNR      "material code
                                                 WT_EKPO-WERKS      "PLANT
                                                 WT_EKPO-BWTAR      "VALUATION TYPE
                                                 WT_EKPO-MATKL      "MATERIAL GROUP
                                                 WT_EKPO-MEINS      "BASE UNIT OF MEASURE
                                                 WT_EKBE1-MENGE      "QUANTITY
                                                 WT_EKPO-MTART      "MATERIAL TYPE
                                         CHANGING T_MWSBP.
              CASE WT_EKPO-WERKS.
              WHEN 'RAU1'.
                R1_BOUGHT = R1_BOUGHT + WT_EKBE1-DMBTR.
                R1_GROSS = R1_GROSS + WT_EKBE1-DMBTR + T_MWSBP.
                CLEAR T_MWSBP.
                WT_TAB-BOUGHT1 = R1_BOUGHT.
                WT_TAB-GROSS1 = R1_GROSS.
                WT_TAB-WERKS = WT_EKPO-WERKS.
              WHEN 'RAU2'.
                R2_BOUGHT = R2_BOUGHT + WT_EKBE1-DMBTR.
                R2_GROSS = R2_GROSS + WT_EKBE1-DMBTR + T_MWSBP.
                CLEAR T_MWSBP.
                WT_TAB-BOUGHT1 = R2_BOUGHT.
                WT_TAB-GROSS1 = R2_GROSS.
                WT_TAB-WERKS = WT_EKPO-WERKS.
              WHEN 'RAU3'.
                R3_BOUGHT = R3_BOUGHT + WT_EKBE1-DMBTR.
                R3_GROSS = R3_GROSS + WT_EKBE1-DMBTR + T_MWSBP.
                CLEAR T_MWSBP.
                WT_TAB-BOUGHT1 = R3_BOUGHT.
                WT_TAB-GROSS1 = R3_GROSS.
                WT_TAB-WERKS = WT_EKPO-WERKS.
              WHEN 'RAU4'.
                R4_BOUGHT  = R4_BOUGHT + WT_EKBE1-DMBTR.
                R4_GROSS = R4_GROSS + WT_EKBE1-DMBTR + T_MWSBP.
                CLEAR T_MWSBP.
                WT_TAB-BOUGHT1 = R4_BOUGHT.
                WT_TAB-GROSS1 = R4_GROSS.
                WT_TAB-WERKS = WT_EKPO-WERKS.
              WHEN 'AP01'.
                AP1_BOUGHT = AP1_BOUGHT + WT_EKBE1-DMBTR.
                AP1_GROSS = AP1_GROSS + WT_EKBE1-DMBTR + T_MWSBP.
                CLEAR T_MWSBP.
                WT_TAB-BOUGHT1 = AP1_BOUGHT.
                WT_TAB-GROSS1 = AP1_GROSS.
                WT_TAB-WERKS = WT_EKPO-WERKS.
            ENDCASE.
	Read table IT_TAB into WT_TAB transporting no fields with key werks = WT_EKPO-WERKS.
	if sy-subrc = 0.
 	MODIFY IT_TAB FROM WT_TAB TRANSPORTING BOUGHT1
                                               GROSS1
                                               WERKS WHERE WERKS = WT_EKPO-WERKS.
        else.
              APPEND WT_TAB TO IT_TAB.
              CLEAR WT_TAB.
        ENDIF.
ENDLOOP.
    ENDLOOP.
  ENDLOOP.
&lt;/CODE&gt;&lt;/PRE&gt;&lt;P&gt;&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
    <pubDate>Wed, 21 Jan 2009 11:26:37 GMT</pubDate>
    <dc:creator>kesavadas_thekkillath</dc:creator>
    <dc:date>2009-01-21T11:26:37Z</dc:date>
    <item>
      <title>performance issue in nested loops</title>
      <link>https://community.sap.com/t5/application-development-and-automation-discussions/performance-issue-in-nested-loops/m-p/5088078#M1181265</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;&lt;STRONG&gt;&lt;SPAN __default_attr="red" __jive_macro_name="color"&gt;Moved to correct forum by moderator&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;hi &lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;below is my code . in this code i used the 3 nested loops which takes the very long time to execute . &lt;/P&gt;&lt;P&gt;say &lt;EM&gt;response time  &amp;gt; 1000&lt;/EM&gt;.&lt;/P&gt;&lt;P&gt; &lt;STRONG&gt;pls some body altered this code in efficient way or provide the technique  .&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;i knew it is resolved by read statement , it reads only a single row  but in my case  several entries are  in &lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;it_ekbe1 and it_ekpo.&lt;/STRONG&gt; &lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;PRE&gt;&lt;CODE&gt;
LOOP AT IT_EKKO1 INTO WT_EKKO1.
    LOOP AT IT_EKBE1 INTO WT_EKBE1.        
      LOOP AT IT_EKPO INTO WT_EKPO.
        IF WT_EKKO1-EBELN EQ WT_EKBE1-EBELN AND
           WT_EKBE1-EBELN EQ WT_EKPO-EBELN AND
           WT_EKBE1-EBELP EQ WT_EKPO-EBELP .
*           WT_EKBE1-WERKS EQ WT_EKPO-WERKS.
          IF WT_EKPO-MWSKZ NE SPACE .
            PERFORM TAX_CALCULATE_FUNCTION USING WT_EKKO1-BUKRS      "company code
                                                 WT_EKBE1-BUDAT     "posting date
                                                 WT_EKKO1-WAERS      "currency key
                                                 WT_EKPO-EBELN
                                                 WT_EKPO-EBELP      "CONDITION ITEM NUMBER
                                                 WT_EKPO-MWSKZ      "SALES TAX CODE
                                                 WT_EKPO-TXJCD      "TAX JURISIDICTION
                                                 WT_EKBE1-DMBTR      "AMOUNT IN DOCUMENT
                                                 WT_EKKO1-LIFNR      "VENDOR CODE
                                                 WT_EKKO1-LANDS      "COUNTRY KEY
                                                 WT_EKKO1-EKORG      "PURCHASE ORGANIZATION
                                                 WT_EKKO1-LLIEF      "SUPPLYING VENDOR
                                                 WT_EKKO1-BEDAT      "DOCUMENT DATE
                                                 WT_EKPO-MATNR      "material code
                                                 WT_EKPO-WERKS      "PLANT
                                                 WT_EKPO-BWTAR      "VALUATION TYPE
                                                 WT_EKPO-MATKL      "MATERIAL GROUP
                                                 WT_EKPO-MEINS      "BASE UNIT OF MEASURE
                                                 WT_EKBE1-MENGE      "QUANTITY
                                                 WT_EKPO-MTART      "MATERIAL TYPE
                                         CHANGING T_MWSBP.
              CASE WT_EKPO-WERKS.
              WHEN 'RAU1'.
                R1_BOUGHT = R1_BOUGHT + WT_EKBE1-DMBTR.
                R1_GROSS = R1_GROSS + WT_EKBE1-DMBTR + T_MWSBP.
                CLEAR T_MWSBP.
                WT_TAB-BOUGHT1 = R1_BOUGHT.
                WT_TAB-GROSS1 = R1_GROSS.
                WT_TAB-WERKS = WT_EKPO-WERKS.
              WHEN 'RAU2'.
                R2_BOUGHT = R2_BOUGHT + WT_EKBE1-DMBTR.
                R2_GROSS = R2_GROSS + WT_EKBE1-DMBTR + T_MWSBP.
                CLEAR T_MWSBP.
                WT_TAB-BOUGHT1 = R2_BOUGHT.
                WT_TAB-GROSS1 = R2_GROSS.
                WT_TAB-WERKS = WT_EKPO-WERKS.
              WHEN 'RAU3'.
                R3_BOUGHT = R3_BOUGHT + WT_EKBE1-DMBTR.
                R3_GROSS = R3_GROSS + WT_EKBE1-DMBTR + T_MWSBP.
                CLEAR T_MWSBP.
                WT_TAB-BOUGHT1 = R3_BOUGHT.
                WT_TAB-GROSS1 = R3_GROSS.
                WT_TAB-WERKS = WT_EKPO-WERKS.
              WHEN 'RAU4'.
                R4_BOUGHT  = R4_BOUGHT + WT_EKBE1-DMBTR.
                R4_GROSS = R4_GROSS + WT_EKBE1-DMBTR + T_MWSBP.
                CLEAR T_MWSBP.
                WT_TAB-BOUGHT1 = R4_BOUGHT.
                WT_TAB-GROSS1 = R4_GROSS.
                WT_TAB-WERKS = WT_EKPO-WERKS.
              WHEN 'AP01'.
                AP1_BOUGHT = AP1_BOUGHT + WT_EKBE1-DMBTR.
                AP1_GROSS = AP1_GROSS + WT_EKBE1-DMBTR + T_MWSBP.
                CLEAR T_MWSBP.
                WT_TAB-BOUGHT1 = AP1_BOUGHT.
                WT_TAB-GROSS1 = AP1_GROSS.
                WT_TAB-WERKS = WT_EKPO-WERKS.
            ENDCASE.
 MODIFY IT_TAB FROM WT_TAB TRANSPORTING BOUGHT1
                                                   GROSS1
                                                   WERKS WHERE WERKS = WT_EKPO-WERKS.
            IF SY-SUBRC NE 0.
              APPEND WT_TAB TO IT_TAB.
              CLEAR WT_TAB.
            ENDIF.
ENDLOOP.
    ENDLOOP.
  ENDLOOP.
&lt;/CODE&gt;&lt;/PRE&gt;&lt;P&gt; &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;surender.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Edited by: Matt on Jan 21, 2009 5:41 PM&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 21 Jan 2009 06:04:49 GMT</pubDate>
      <guid>https://community.sap.com/t5/application-development-and-automation-discussions/performance-issue-in-nested-loops/m-p/5088078#M1181265</guid>
      <dc:creator>Former Member</dc:creator>
      <dc:date>2009-01-21T06:04:49Z</dc:date>
    </item>
    <item>
      <title>Re: performance issue in nested loops</title>
      <link>https://community.sap.com/t5/application-development-and-automation-discussions/performance-issue-in-nested-loops/m-p/5088079#M1181266</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi Surender,&lt;/P&gt;&lt;P&gt;You can try this..&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;LOOP AT IT_EKKO1 INTO WT_EKKO1.&lt;/P&gt;&lt;P&gt;    LOOP AT IT_EKBE1 INTO WT_EKBE1 where ebeln = wt_ekko1-ebeln.        &lt;/P&gt;&lt;P&gt;      LOOP AT IT_EKPO INTO WT_EKPO where ebeln = wa_ekko1-ebeln&lt;/P&gt;&lt;P&gt;                                                             and    werks = wa_ekko1-werks&lt;/P&gt;&lt;P&gt;                                                             and    ebelp = wa_ekko1-ebelp&lt;/P&gt;&lt;P&gt;                                                             and    MWSKZ NE SPACE.&lt;/P&gt;&lt;P&gt;or u can use READ statement.&lt;/P&gt;&lt;P&gt;Hope it will help.&lt;/P&gt;&lt;P&gt;regrds,&lt;/P&gt;&lt;P&gt;Lokesh&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 21 Jan 2009 06:12:15 GMT</pubDate>
      <guid>https://community.sap.com/t5/application-development-and-automation-discussions/performance-issue-in-nested-loops/m-p/5088079#M1181266</guid>
      <dc:creator>Former Member</dc:creator>
      <dc:date>2009-01-21T06:12:15Z</dc:date>
    </item>
    <item>
      <title>Re: performance issue in nested loops</title>
      <link>https://community.sap.com/t5/application-development-and-automation-discussions/performance-issue-in-nested-loops/m-p/5088080#M1181267</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;Add the where clause for the LOOPS, &lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;LOOP AT IT_EKKO1 INTO WT_EKKO1.&lt;/P&gt;&lt;P&gt;    LOOP AT IT_EKBE1 INTO WT_EKBE1 where ebeln = WT_EKKO1-EBELN.        &lt;/P&gt;&lt;P&gt;      LOOP AT IT_EKPO INTO WT_EKPO where ebeln = WT_EKPO-EBELN and &lt;/P&gt;&lt;P&gt;                                         EBELP = WT_EKKO1-EBELP .&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;This will considerably reduce the execution time.&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;Mukesh.&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 21 Jan 2009 06:17:54 GMT</pubDate>
      <guid>https://community.sap.com/t5/application-development-and-automation-discussions/performance-issue-in-nested-loops/m-p/5088080#M1181267</guid>
      <dc:creator>Former Member</dc:creator>
      <dc:date>2009-01-21T06:17:54Z</dc:date>
    </item>
    <item>
      <title>Re: performance issue in nested loops</title>
      <link>https://community.sap.com/t5/application-development-and-automation-discussions/performance-issue-in-nested-loops/m-p/5088081#M1181268</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi Surender,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Use the following method. Replace loop statement with READ TABLE.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;Sort all the tables first.&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;LOOP AT IT_EKKO1 INTO WT_EKKO1.&lt;/P&gt;&lt;P&gt;    READ TABLE IT_EKBE1 INTO WT_EKBE1 WITH KEY...... BINARY SEARCH        &lt;/P&gt;&lt;P&gt;      READ TABLE IT_EKPO INTO WT_EKPO WITH KEY........BINARY SEARCH.&lt;/P&gt;&lt;P&gt;ENDLOOP.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Hope this will help.&lt;/P&gt;&lt;P&gt;Regards,&lt;/P&gt;&lt;P&gt;Nitin.&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 21 Jan 2009 06:17:59 GMT</pubDate>
      <guid>https://community.sap.com/t5/application-development-and-automation-discussions/performance-issue-in-nested-loops/m-p/5088081#M1181268</guid>
      <dc:creator>Former Member</dc:creator>
      <dc:date>2009-01-21T06:17:59Z</dc:date>
    </item>
    <item>
      <title>Re: performance issue in nested loops</title>
      <link>https://community.sap.com/t5/application-development-and-automation-discussions/performance-issue-in-nested-loops/m-p/5088082#M1181269</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;This may be of help.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;LOOP AT IT_EKKO1 INTO WT_EKKO1.&lt;/P&gt;&lt;P&gt;  LOOP AT IT_EKBE1 INTO WT_EKBE1 &lt;STRONG&gt;WHERE EBELN EQ WT_EKKO1-EBELN&lt;/STRONG&gt;.&lt;/P&gt;&lt;P&gt;    LOOP AT IT_EKPO INTO WT_EKPO *WHERE EBELN EQ WT_EKBE1-EBELN&lt;/P&gt;&lt;P&gt;                                                                AND EBELP EQ WT_EKBE1-EBELP&lt;/P&gt;&lt;P&gt;                                                                AND WERKS EQ WT_EKBE1-WERKS&lt;/P&gt;&lt;P&gt;                                                                AND MWSKZ NE space*.&lt;/P&gt;&lt;P&gt;...........&lt;/P&gt;&lt;P&gt;    ENDLOOP.&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;regards,&lt;/P&gt;&lt;P&gt;Peter&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 21 Jan 2009 06:20:02 GMT</pubDate>
      <guid>https://community.sap.com/t5/application-development-and-automation-discussions/performance-issue-in-nested-loops/m-p/5088082#M1181269</guid>
      <dc:creator>peter_ruiz2</dc:creator>
      <dc:date>2009-01-21T06:20:02Z</dc:date>
    </item>
    <item>
      <title>Re: performance issue in nested loops</title>
      <link>https://community.sap.com/t5/application-development-and-automation-discussions/performance-issue-in-nested-loops/m-p/5088083#M1181270</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; LOOP AT IT_EKPO INTO WT_EKPO.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;READ TABLE IT_EKBE1  into wa_ekbe1&lt;/P&gt;&lt;P&gt;with key&lt;/P&gt;&lt;P&gt; WT_EKBE1-EBELN EQ WT_EKPO-EBELN AND&lt;/P&gt;&lt;P&gt;           WT_EKBE1-EBELP EQ WT_EKPO-EBELP .&lt;/P&gt;&lt;P&gt;          WT_EKBE1-WERKS EQ WT_EKPO-WERKS.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;read atble it_kko1 into wa_ekko1&lt;/P&gt;&lt;P&gt;with key&lt;/P&gt;&lt;P&gt;WT_EKKO1-EBELN EQ WT_EKBE1-EBELN .&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*code...&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;endloop.&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 21 Jan 2009 06:21:02 GMT</pubDate>
      <guid>https://community.sap.com/t5/application-development-and-automation-discussions/performance-issue-in-nested-loops/m-p/5088083#M1181270</guid>
      <dc:creator>Former Member</dc:creator>
      <dc:date>2009-01-21T06:21:02Z</dc:date>
    </item>
    <item>
      <title>Re: performance issue in nested loops</title>
      <link>https://community.sap.com/t5/application-development-and-automation-discussions/performance-issue-in-nested-loops/m-p/5088084#M1181271</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi Surendhar,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;From your posting i beleive, table "&lt;STRONG&gt;IT_EKKO1&lt;/STRONG&gt;" will have unique records based on which you would like to loop into other two tables, IT_EKBE1 and IT_EKPO. You can follow the below given logic to acheive the same.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;PRE&gt;&lt;CODE&gt;Loop at IT_EKBE1 into WT_EKBE1.
Read Table IT_EKKO1 into WT_EKKO1 with key EBELN = WT_EKBE1-EBELN Binary Search.
IF sy-subrc eq 0.
" Do the calculation part.
Endif.
Endloop.&lt;/CODE&gt;&lt;/PRE&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Similarly,&lt;/P&gt;&lt;PRE&gt;&lt;CODE&gt;Loop at IT_EKPO into WT_EKPO.
Read Table IT_EKBE1 into WT_EKBE1 with key EBELN = WT_EKPO-EBELN
                                                                       EBELP = WT_EKPO-EBELP
                                                                       Binary Search.
If sy-subrc eq 0.
" Perform the calculation part.
Endif.
Endloop.&lt;/CODE&gt;&lt;/PRE&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;With this logic, you might have to change the sub-routine parameters as well for tax calculation...&lt;/P&gt;&lt;P&gt;Check if this type of logic would serve the purpose.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Best Regards,&lt;/P&gt;&lt;P&gt;Ram.&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 21 Jan 2009 06:22:13 GMT</pubDate>
      <guid>https://community.sap.com/t5/application-development-and-automation-discussions/performance-issue-in-nested-loops/m-p/5088084#M1181271</guid>
      <dc:creator>Former Member</dc:creator>
      <dc:date>2009-01-21T06:22:13Z</dc:date>
    </item>
    <item>
      <title>Re: performance issue in nested loops</title>
      <link>https://community.sap.com/t5/application-development-and-automation-discussions/performance-issue-in-nested-loops/m-p/5088085#M1181272</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;hi,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;I ahve tried out using parallel cursor for similar situation and it helped.Here is smaill documentation on it.it might help u.&lt;/P&gt;&lt;P&gt;Parallel cursor is the technique to increase the performance of the program, when there are nested loops.  &lt;/P&gt;&lt;P&gt;For example if we use nested select in our program instead of For all entries addition, then definitely performance going down. In the same way the if we use nested loops in the program it will also leads to down the performance. &lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;For example: &lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;if the code contains this type of logic: &lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;loop at itab into wa. &lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;loop at itab1 into wa1. &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;In the above logic, for one record of the itab, again the table itab1 loops many times. If itab contains many records and also at the same time if itab1 contains double the records, then this would result into performance issue.  You can modify it as: &lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;loop at itab into wa. &lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;read table itab1 into wa1 with key field1 = wa-field1. &lt;/P&gt;&lt;P&gt;v_tabix = sy-tabix. &lt;/P&gt;&lt;P&gt;if sy-subrc eq 0. &lt;/P&gt;&lt;P&gt;loop at itab1 into wa1 from v_tabix. "It will loop from that index &lt;/P&gt;&lt;P&gt;endloop. &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;/P&gt;&lt;P&gt;an example program also am attaching but this contains only one loop.u can inplement the same as per ur case.&lt;/P&gt;&lt;P&gt;START-OF-SELECTION&lt;/P&gt;&lt;P&gt;  SELECT *&lt;/P&gt;&lt;P&gt;  INTO TABLE I_KEPH FROM KEPH&lt;/P&gt;&lt;P&gt;  WHERE KADKY &amp;lt;= SY-DATUM&lt;/P&gt;&lt;P&gt;    AND TVERS = '01'&lt;/P&gt;&lt;P&gt;    AND KALKA IN ('01','Z1','Z2')&lt;/P&gt;&lt;P&gt;    AND BWVAR IN ('Z01','Z02','Z03','Z04','Z07')&lt;/P&gt;&lt;P&gt;    AND KKZST = ' '&lt;/P&gt;&lt;P&gt;    AND KKZMA = ' '&lt;/P&gt;&lt;P&gt;    AND KKZMM = ' '&lt;/P&gt;&lt;P&gt;    AND KEART = 'H'&lt;/P&gt;&lt;P&gt;    AND PATNR = 0.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Table must be sorted to ensure all required records are together&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  SORT I_KEPH BY KALNR KALKA BWVAR KADKY.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Perform actual processing&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  Perform get_cost_values.&lt;/P&gt;&lt;P&gt;&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;P&gt;FORM GET_COST_VALUES.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Determine start position and then process all records for given key&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;from that starting point&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;i_keph is sorted on kalnr kalka bwvar kadky.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  READ TABLE I_KEPH WITH KEY KALNR = W_KEKO-KALNR&lt;/P&gt;&lt;P&gt;                             KALKA = W_KEKO-KALKA&lt;/P&gt;&lt;P&gt;                             BWVAR = W_KEKO-BWVAR&lt;/P&gt;&lt;P&gt;                             KADKY = W_KEKO-KADKY BINARY SEARCH.&lt;/P&gt;&lt;P&gt;  IF SY-SUBRC = 0.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Loop at itab from first record found (sy-tabix) until record&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;no-longer matches your criteria.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;    LOOP AT I_KEPH FROM SY-TABIX.&lt;/P&gt;&lt;P&gt;      IF  I_KEPH-KALNR = W_KEKO-KALNR AND I_KEPH-KALKA = W_KEKO-KALKA&lt;/P&gt;&lt;P&gt;      AND I_KEPH-BWVAR = W_KEKO-BWVAR AND I_KEPH-KADKY = W_KEKO-KADKY.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;      Key match&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;        D_MAT_COST = D_MAT_COST + I_KEPH-KST001.&lt;/P&gt;&lt;P&gt;        D_LAB_COST = D_LAB_COST + I_KEPH-KST004.&lt;/P&gt;&lt;P&gt;        D_OVER_HEAD = D_OVER_HEAD + I_KEPH-KST010.&lt;/P&gt;&lt;P&gt;        D_EXT_PURCH = D_EXT_PURCH + I_KEPH-KST014.&lt;/P&gt;&lt;P&gt;        D_MISC_COST = D_MISC_COST + I_KEPH-KST002 + I_KEPH-KST003&lt;/P&gt;&lt;P&gt;                    + I_KEPH-KST005 + I_KEPH-KST006 + I_KEPH-KST007&lt;/P&gt;&lt;P&gt;                    + I_KEPH-KST008 + I_KEPH-KST009 + I_KEPH-KST011&lt;/P&gt;&lt;P&gt;                    + I_KEPH-KST012 + I_KEPH-KST013 + I_KEPH-KST015&lt;/P&gt;&lt;P&gt;                    + I_KEPH-KST016 + I_KEPH-KST017 + I_KEPH-KST018&lt;/P&gt;&lt;P&gt;                    + I_KEPH-KST019 + I_KEPH-KST020 + I_KEPH-KST021&lt;/P&gt;&lt;P&gt;                    + I_KEPH-KST022 + I_KEPH-KST023 + I_KEPH-KST024&lt;/P&gt;&lt;P&gt;                    + I_KEPH-KST025 + I_KEPH-KST026 + I_KEPH-KST027&lt;/P&gt;&lt;P&gt;                    + I_KEPH-KST028 + I_KEPH-KST029 + I_KEPH-KST030&lt;/P&gt;&lt;P&gt;                    + I_KEPH-KST031 + I_KEPH-KST032 + I_KEPH-KST033&lt;/P&gt;&lt;P&gt;                    + I_KEPH-KST034 + I_KEPH-KST035 + I_KEPH-KST036&lt;/P&gt;&lt;P&gt;                    + I_KEPH-KST037 + I_KEPH-KST038 + I_KEPH-KST039&lt;/P&gt;&lt;P&gt;                    + I_KEPH-KST040.&lt;/P&gt;&lt;P&gt;      ELSE.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;      Key greater - can't be less&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;        EXIT.                                               " Exit loop&lt;/P&gt;&lt;P&gt;      ENDIF.&lt;/P&gt;&lt;P&gt;    ENDLOOP.&lt;/P&gt;&lt;P&gt;  ENDIF.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  D_MAT_COST  = D_MAT_COST  / W_KEKO-LOSGR.&lt;/P&gt;&lt;P&gt;  D_LAB_COST  = D_LAB_COST  / W_KEKO-LOSGR.&lt;/P&gt;&lt;P&gt;  D_OVER_HEAD = D_OVER_HEAD / W_KEKO-LOSGR.&lt;/P&gt;&lt;P&gt;  D_EXT_PURCH = D_EXT_PURCH / W_KEKO-LOSGR.&lt;/P&gt;&lt;P&gt;  D_MISC_COST = D_MISC_COST / W_KEKO-LOSGR.&lt;/P&gt;&lt;P&gt;ENDFORM.                               " GET_COST_VALUES&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 21 Jan 2009 06:25:40 GMT</pubDate>
      <guid>https://community.sap.com/t5/application-development-and-automation-discussions/performance-issue-in-nested-loops/m-p/5088085#M1181272</guid>
      <dc:creator>Former Member</dc:creator>
      <dc:date>2009-01-21T06:25:40Z</dc:date>
    </item>
    <item>
      <title>Re: performance issue in nested loops</title>
      <link>https://community.sap.com/t5/application-development-and-automation-discussions/performance-issue-in-nested-loops/m-p/5088086#M1181273</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;you can try making your internal tables as type SORTED and use WHERE in you LOOP.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;e.g. loop at WHERE...&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Hope it helps...&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 21 Jan 2009 06:28:34 GMT</pubDate>
      <guid>https://community.sap.com/t5/application-development-and-automation-discussions/performance-issue-in-nested-loops/m-p/5088086#M1181273</guid>
      <dc:creator>aris_hidalgo</dc:creator>
      <dc:date>2009-01-21T06:28:34Z</dc:date>
    </item>
    <item>
      <title>Re: performance issue in nested loops</title>
      <link>https://community.sap.com/t5/application-development-and-automation-discussions/performance-issue-in-nested-loops/m-p/5088087#M1181274</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi Surender,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;You can go for Read statements inside the first loop avoiding nested loops.&lt;/P&gt;&lt;P&gt;This can be done this way...&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;LOOP AT IT_EKKO1 INTO WT_EKKO1.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;READ TABLE IT_EKBE1 INTO WT_EKBE1 WITH KEY EBELN = WT_EKKO1-EBELN .&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;P&gt;READ TABLE IT_EKPO INTO WT_EKPO WITH KEY EBELN = WT_EKBE1-EBELN  EBELP = WT_EKBE1-EBELP .&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;P&gt;&lt;/P&gt;&lt;P&gt;          IF WT_EKPO-MWSKZ NE SPACE .&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;PERFORM TAX_CALCULATE_FUNCTION USING WT_EKKO1-BUKRS      "company code&lt;/P&gt;&lt;P&gt;                                                 WT_EKBE1-BUDAT     "posting date&lt;/P&gt;&lt;P&gt;                                                 WT_EKKO1-WAERS      "currency key&lt;/P&gt;&lt;P&gt;                                                 WT_EKPO-EBELN&lt;/P&gt;&lt;P&gt;                                                 WT_EKPO-EBELP      "CONDITION ITEM NUMBER&lt;/P&gt;&lt;P&gt;                                                 WT_EKPO-MWSKZ      "SALES TAX CODE&lt;/P&gt;&lt;P&gt;                                                 WT_EKPO-TXJCD      "TAX JURISIDICTION&lt;/P&gt;&lt;P&gt;                                                 WT_EKBE1-DMBTR      "AMOUNT IN DOCUMENT&lt;/P&gt;&lt;P&gt;                                                 WT_EKKO1-LIFNR      "VENDOR CODE&lt;/P&gt;&lt;P&gt;                                                 WT_EKKO1-LANDS      "COUNTRY KEY&lt;/P&gt;&lt;P&gt;                                                 WT_EKKO1-EKORG      "PURCHASE ORGANIZATION&lt;/P&gt;&lt;P&gt;                                                 WT_EKKO1-LLIEF      "SUPPLYING VENDOR&lt;/P&gt;&lt;P&gt;                                                 WT_EKKO1-BEDAT      "DOCUMENT DATE&lt;/P&gt;&lt;P&gt;                                                 WT_EKPO-MATNR      "material code&lt;/P&gt;&lt;P&gt;                                                 WT_EKPO-WERKS      "PLANT&lt;/P&gt;&lt;P&gt;                                                 WT_EKPO-BWTAR      "VALUATION TYPE&lt;/P&gt;&lt;P&gt;                                                 WT_EKPO-MATKL      "MATERIAL GROUP&lt;/P&gt;&lt;P&gt;                                                 WT_EKPO-MEINS      "BASE UNIT OF MEASURE&lt;/P&gt;&lt;P&gt;                                                 WT_EKBE1-MENGE      "QUANTITY&lt;/P&gt;&lt;P&gt;                                                 WT_EKPO-MTART      "MATERIAL TYPE&lt;/P&gt;&lt;P&gt;                                         CHANGING T_MWSBP.&lt;/P&gt;&lt;P&gt;              CASE WT_EKPO-WERKS.&lt;/P&gt;&lt;P&gt;              WHEN 'RAU1'.&lt;/P&gt;&lt;P&gt;                R1_BOUGHT = R1_BOUGHT + WT_EKBE1-DMBTR.&lt;/P&gt;&lt;P&gt;                R1_GROSS = R1_GROSS + WT_EKBE1-DMBTR + T_MWSBP.&lt;/P&gt;&lt;P&gt;                CLEAR T_MWSBP.&lt;/P&gt;&lt;P&gt;                WT_TAB-BOUGHT1 = R1_BOUGHT.&lt;/P&gt;&lt;P&gt;                WT_TAB-GROSS1 = R1_GROSS.&lt;/P&gt;&lt;P&gt;                WT_TAB-WERKS = WT_EKPO-WERKS.&lt;/P&gt;&lt;P&gt;              WHEN 'RAU2'.&lt;/P&gt;&lt;P&gt;                R2_BOUGHT = R2_BOUGHT + WT_EKBE1-DMBTR.&lt;/P&gt;&lt;P&gt;                R2_GROSS = R2_GROSS + WT_EKBE1-DMBTR + T_MWSBP.&lt;/P&gt;&lt;P&gt;                CLEAR T_MWSBP.&lt;/P&gt;&lt;P&gt;                WT_TAB-BOUGHT1 = R2_BOUGHT.&lt;/P&gt;&lt;P&gt;                WT_TAB-GROSS1 = R2_GROSS.&lt;/P&gt;&lt;P&gt;                WT_TAB-WERKS = WT_EKPO-WERKS.&lt;/P&gt;&lt;P&gt;              WHEN 'RAU3'.&lt;/P&gt;&lt;P&gt;                R3_BOUGHT = R3_BOUGHT + WT_EKBE1-DMBTR.&lt;/P&gt;&lt;P&gt;                R3_GROSS = R3_GROSS + WT_EKBE1-DMBTR + T_MWSBP.&lt;/P&gt;&lt;P&gt;                CLEAR T_MWSBP.&lt;/P&gt;&lt;P&gt;                WT_TAB-BOUGHT1 = R3_BOUGHT.&lt;/P&gt;&lt;P&gt;                WT_TAB-GROSS1 = R3_GROSS.&lt;/P&gt;&lt;P&gt;                WT_TAB-WERKS = WT_EKPO-WERKS.&lt;/P&gt;&lt;P&gt;              WHEN 'RAU4'.&lt;/P&gt;&lt;P&gt;                R4_BOUGHT  = R4_BOUGHT + WT_EKBE1-DMBTR.&lt;/P&gt;&lt;P&gt;                R4_GROSS = R4_GROSS + WT_EKBE1-DMBTR + T_MWSBP.&lt;/P&gt;&lt;P&gt;                CLEAR T_MWSBP.&lt;/P&gt;&lt;P&gt;                WT_TAB-BOUGHT1 = R4_BOUGHT.&lt;/P&gt;&lt;P&gt;                WT_TAB-GROSS1 = R4_GROSS.&lt;/P&gt;&lt;P&gt;                WT_TAB-WERKS = WT_EKPO-WERKS.&lt;/P&gt;&lt;P&gt;              WHEN 'AP01'.&lt;/P&gt;&lt;P&gt;                AP1_BOUGHT = AP1_BOUGHT + WT_EKBE1-DMBTR.&lt;/P&gt;&lt;P&gt;                AP1_GROSS = AP1_GROSS + WT_EKBE1-DMBTR + T_MWSBP.&lt;/P&gt;&lt;P&gt;                CLEAR T_MWSBP.&lt;/P&gt;&lt;P&gt;                WT_TAB-BOUGHT1 = AP1_BOUGHT.&lt;/P&gt;&lt;P&gt;                WT_TAB-GROSS1 = AP1_GROSS.&lt;/P&gt;&lt;P&gt;                WT_TAB-WERKS = WT_EKPO-WERKS.&lt;/P&gt;&lt;P&gt;            ENDCASE.&lt;/P&gt;&lt;P&gt; MODIFY IT_TAB FROM WT_TAB TRANSPORTING BOUGHT1&lt;/P&gt;&lt;P&gt;                                                   GROSS1&lt;/P&gt;&lt;P&gt;                                                   WERKS WHERE WERKS = WT_EKPO-WERKS.&lt;/P&gt;&lt;P&gt;            IF SY-SUBRC NE 0.&lt;/P&gt;&lt;P&gt;              APPEND WT_TAB TO IT_TAB.&lt;/P&gt;&lt;P&gt;              CLEAR WT_TAB.&lt;/P&gt;&lt;P&gt;            ENDIF.&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;ENDIF.&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;Madhu.&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 21 Jan 2009 06:58:27 GMT</pubDate>
      <guid>https://community.sap.com/t5/application-development-and-automation-discussions/performance-issue-in-nested-loops/m-p/5088087#M1181274</guid>
      <dc:creator>Former Member</dc:creator>
      <dc:date>2009-01-21T06:58:27Z</dc:date>
    </item>
    <item>
      <title>Re: performance issue in nested loops</title>
      <link>https://community.sap.com/t5/application-development-and-automation-discussions/performance-issue-in-nested-loops/m-p/5088088#M1181275</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;hi &lt;/P&gt;&lt;P&gt;first thx to lokesh,mukesh, and peter.&lt;/P&gt;&lt;P&gt; you r all gave the same response.&lt;/P&gt;&lt;P&gt;i tried out with the where clause. &lt;/P&gt;&lt;P&gt; but see i am triggered the posting date  as 01.03.2008 to 01.09.2008 for all 5 plants. but its still running for 15 minutes&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;regards&lt;/P&gt;&lt;P&gt;surender&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 21 Jan 2009 07:04:52 GMT</pubDate>
      <guid>https://community.sap.com/t5/application-development-and-automation-discussions/performance-issue-in-nested-loops/m-p/5088088#M1181275</guid>
      <dc:creator>Former Member</dc:creator>
      <dc:date>2009-01-21T07:04:52Z</dc:date>
    </item>
    <item>
      <title>Re: performance issue in nested loops</title>
      <link>https://community.sap.com/t5/application-development-and-automation-discussions/performance-issue-in-nested-loops/m-p/5088089#M1181276</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi surrender,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;can you post your code for TAX_CALCULATE_FUNCTION? I think this is what slows down the program.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;regards,&lt;/P&gt;&lt;P&gt;Peter&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Edited by: Peter Ruiz on Jan 21, 2009 3:09 PM&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 21 Jan 2009 07:08:59 GMT</pubDate>
      <guid>https://community.sap.com/t5/application-development-and-automation-discussions/performance-issue-in-nested-loops/m-p/5088089#M1181276</guid>
      <dc:creator>peter_ruiz2</dc:creator>
      <dc:date>2009-01-21T07:08:59Z</dc:date>
    </item>
    <item>
      <title>Re: performance issue in nested loops</title>
      <link>https://community.sap.com/t5/application-development-and-automation-discussions/performance-issue-in-nested-loops/m-p/5088090#M1181277</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi Surender,&lt;/P&gt;&lt;P&gt;Try like this:&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;LOOP AT IT_EKKO1 INTO WT_EKKO1.&lt;/P&gt;&lt;P&gt;read table IT_EKBE1 with key EBELN EQ WT_EKBE1-EBELN.&lt;/P&gt;&lt;P&gt;if sy-subrc = 0&lt;/P&gt;&lt;P&gt;    LOOP AT IT_EKBE1 INTO WT_EKBE1 from sy-index.      &lt;/P&gt;&lt;P&gt;if   WT_EKKO1-EBELN NE WT_EKBE1-EBELN&lt;/P&gt;&lt;P&gt;exit.&lt;/P&gt;&lt;P&gt;endif.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;read table IT_EKPO with key  EBELN EQ WT_EKBE1-EBELN  &lt;/P&gt;&lt;P&gt;                                            EBELP EQ WT_EKBE1-EBELP .&lt;/P&gt;&lt;P&gt;if sy-subrc  = 0.&lt;/P&gt;&lt;P&gt;      LOOP AT IT_EKPO INTO WT_EKPO.&lt;/P&gt;&lt;P&gt;               if    WT_EKBE1-EBELP ne WT_EKPO-EBELP or&lt;/P&gt;&lt;P&gt;                    WT_EKBE1-WERKS ne WT_EKPO-WERKS.&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;endif.&lt;/P&gt;&lt;P&gt;endloop.&lt;/P&gt;&lt;P&gt;endif.&lt;/P&gt;&lt;P&gt;endloop.&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 21 Jan 2009 07:15:45 GMT</pubDate>
      <guid>https://community.sap.com/t5/application-development-and-automation-discussions/performance-issue-in-nested-loops/m-p/5088090#M1181277</guid>
      <dc:creator>Former Member</dc:creator>
      <dc:date>2009-01-21T07:15:45Z</dc:date>
    </item>
    <item>
      <title>Re: performance issue in nested loops</title>
      <link>https://community.sap.com/t5/application-development-and-automation-discussions/performance-issue-in-nested-loops/m-p/5088091#M1181278</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi Surender,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;If you want to increase the performance of Nested loops then you should use Parallel cursors. it will incease the performance drastically. But there is one condition that all the internal tables should be Sorted.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;You can read the documentation on Parallel cursor from the following link:&lt;/P&gt;&lt;P&gt;[https://www.sdn.sap.com/irj/scn/weblogs?blog=/pub/wlg/3119] &lt;B&gt;[original link is broken]&lt;/B&gt; &lt;B&gt;[original link is broken]&lt;/B&gt; &lt;B&gt;[original link is broken]&lt;/B&gt;;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Ashvender&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 21 Jan 2009 07:16:51 GMT</pubDate>
      <guid>https://community.sap.com/t5/application-development-and-automation-discussions/performance-issue-in-nested-loops/m-p/5088091#M1181278</guid>
      <dc:creator>Former Member</dc:creator>
      <dc:date>2009-01-21T07:16:51Z</dc:date>
    </item>
    <item>
      <title>Re: performance issue in nested loops</title>
      <link>https://community.sap.com/t5/application-development-and-automation-discussions/performance-issue-in-nested-loops/m-p/5088092#M1181279</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;hi peter&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;PRE&gt;&lt;CODE&gt;
FORM TAX_CALCULATE_FUNCTION USING WT_EKKO-BUKRS      "company code
                                  WT_EKBE-BUDAT     "posting date
                                  WT_EKKO-WAERS      "currency key
                                  WT_EKPO-EBELN
                                  WT_EKPO-EBELP      "CONDITION ITEM NUMBER
                                  WT_EKPO-MWSKZ      "SALES TAX CODE
                                  WT_EKPO-TXJCD      "TAX JURISIDICTION
                                  WT_EKBE-DMBTR      "AMOUNT IN DOCUMENT
                                  WT_EKKO-LIFNR      "VENDOR CODE
                                  WT_EKKO-LANDS      "COUNTRY KEY
                                  WT_EKKO-EKORG      "PURCHASE ORGANIZATION
                                  WT_EKKO-LLIEF      "SUPPLYING VENDOR
                                  WT_EKKO-BEDAT      "DOCUMENT DATE
                                  WT_EKPO-MATNR      "MATERIAL
                                  WT_EKPO-WERKS      "PLANT
                                  WT_EKPO-BWTAR      "VALUATION TYPE
                                  WT_EKPO-MATKL      "MATERIAL GROUP
                                  WT_EKPO-MEINS      "BASE UNIT OF MEASURE
                                  WT_EKBE-MENGE      "QUANTITY
                                  WT_EKPO-MTART      "MATERIAL TYPE
                           CHANGING T_MWBSP.

  IT_TAXCOM-BUKRS = WT_EKKO-BUKRS.
  IT_TAXCOM-BUDAT = WT_EKBE-BUDAT.
  IT_TAXCOM-WAERS = WT_EKKO-WAERS.
  IT_TAXCOM-EBELN = WT_EKPO-EBELN.
  IT_TAXCOM-EBELP = WT_EKPO-EBELP.
  IT_TAXCOM-KPOSN = WT_EKPO-EBELP.
  IT_TAXCOM-MWSKZ = WT_EKPO-MWSKZ.
  IT_TAXCOM-TXJCD = WT_EKPO-TXJCD.
  IT_TAXCOM-SHKZG = 'H'.                "CREDIT/DEBIT INDICATOR
  IT_TAXCOM-XMWST = 'X'.                "APPLYING TAX AUTOMATICALLY
  IT_TAXCOM-WRBTR = WT_EKBE-DMBTR.
  IT_TAXCOM-LIFNR = WT_EKKO-LIFNR.
  IT_TAXCOM-LAND1 = WT_EKKO-LANDS.
  IT_TAXCOM-EKORG = WT_EKKO-EKORG.
  IT_TAXCOM-HWAER = 'INR'.
  IT_TAXCOM-LLIEF = WT_EKKO-LLIEF.
  IT_TAXCOM-BLDAT = WT_EKKO-BEDAT.
  IT_TAXCOM-MATNR = WT_EKPO-MATNR.
  IT_TAXCOM-WERKS = WT_EKPO-WERKS.
  IT_TAXCOM-BWTAR = WT_EKPO-BWTAR.
  IT_TAXCOM-MATKL = WT_EKPO-MATKL.
  IT_TAXCOM-MEINS = WT_EKPO-MEINS.
  IT_TAXCOM-MGLME = WT_EKBE-MENGE.
  IT_TAXCOM-MTART = WT_EKPO-MTART.
*  IT_TAXCOM-MWART = 'V'.

  CALL FUNCTION 'CALCULATE_TAX_ITEM'
    EXPORTING
*     ANZAHLUNG                 = ' '
*     DIALOG                    = ' '
*     DISPLAY_ONLY              = ' '
*     INKLUSIVE                 = ' '
*     I_ANWTYP                  = ' '
*     I_DMBTR                   = '0'
*     I_MWSTS                   = '0'
      I_TAXCOM                  = IT_TAXCOM
*     PRUEFEN                   = ' '
*     RESET                     = ' '
   IMPORTING
*     E_NAVFW                   =
     E_TAXCOM                  =  IT_TAXCOM
*     E_XSTVR                   =
*     NAV_ANTEIL                =
*   TABLES
*     T_XKOMV                   =
*   EXCEPTIONS
*     MWSKZ_NOT_DEFINED         = 1
*     MWSKZ_NOT_FOUND           = 2
*     MWSKZ_NOT_VALID           = 3
*     STEUERBETRAG_FALSCH       = 4
*     COUNTRY_NOT_FOUND         = 5
*     OTHERS                    = 6
            .
  IF SY-SUBRC &amp;lt;&amp;gt; 0.
* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
*         WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
  ENDIF.

  IF SY-SUBRC EQ 0.
    T_MWSBP = IT_TAXCOM-WMWST. "TAX AMOUNT IN DOCUMENT
  ENDIF.
ENDFORM.
&lt;/CODE&gt;&lt;/PRE&gt;&lt;P&gt;regards&lt;/P&gt;&lt;P&gt;surender&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 21 Jan 2009 07:18:31 GMT</pubDate>
      <guid>https://community.sap.com/t5/application-development-and-automation-discussions/performance-issue-in-nested-loops/m-p/5088092#M1181279</guid>
      <dc:creator>Former Member</dc:creator>
      <dc:date>2009-01-21T07:18:31Z</dc:date>
    </item>
    <item>
      <title>Re: performance issue in nested loops</title>
      <link>https://community.sap.com/t5/application-development-and-automation-discussions/performance-issue-in-nested-loops/m-p/5088093#M1181280</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi Surrender,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;The slow processing of your program comes from the FM CALCULATE_TAX_ITEM since this FM selects data from the database.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Can you please check your ABAP Program via TCode SE30 and see which area uses more time when processing.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;A work around for this is to try trimming down your tables so that you won't need to call the FM CALCULATE_TAX_ITEM on every loop pass.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;regards,&lt;/P&gt;&lt;P&gt;Peter&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 21 Jan 2009 07:34:37 GMT</pubDate>
      <guid>https://community.sap.com/t5/application-development-and-automation-discussions/performance-issue-in-nested-loops/m-p/5088093#M1181280</guid>
      <dc:creator>peter_ruiz2</dc:creator>
      <dc:date>2009-01-21T07:34:37Z</dc:date>
    </item>
    <item>
      <title>Re: performance issue in nested loops</title>
      <link>https://community.sap.com/t5/application-development-and-automation-discussions/performance-issue-in-nested-loops/m-p/5088094#M1181281</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;hey you need to use joins to query the tables used. Inner joins will always give you better performance than loops. Any report that uses loops will affect performance in production client. Try to avoid loops or write a native sql query.&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 21 Jan 2009 07:39:47 GMT</pubDate>
      <guid>https://community.sap.com/t5/application-development-and-automation-discussions/performance-issue-in-nested-loops/m-p/5088094#M1181281</guid>
      <dc:creator>Former Member</dc:creator>
      <dc:date>2009-01-21T07:39:47Z</dc:date>
    </item>
    <item>
      <title>Re: performance issue in nested loops</title>
      <link>https://community.sap.com/t5/application-development-and-automation-discussions/performance-issue-in-nested-loops/m-p/5088095#M1181282</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;hi peter&lt;/P&gt;&lt;P&gt;i executed the report for an one plant and its pd from 01.03.2008 to 01.08.2008 the measurement calculation is pasted below. &lt;/P&gt;&lt;P&gt;abap        297,646,010  =  79.1%&lt;/P&gt;&lt;P&gt;database  78,279,147  =  20.8%&lt;/P&gt;&lt;P&gt;system    146,916  =   0.0%&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;   total      376,072,073  = 100,0%&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;without tax_calculate fm how can i  calculate the tax values for an individual items .&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;regards&lt;/P&gt;&lt;P&gt;surender&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 21 Jan 2009 08:04:23 GMT</pubDate>
      <guid>https://community.sap.com/t5/application-development-and-automation-discussions/performance-issue-in-nested-loops/m-p/5088095#M1181282</guid>
      <dc:creator>Former Member</dc:creator>
      <dc:date>2009-01-21T08:04:23Z</dc:date>
    </item>
    <item>
      <title>Re: performance issue in nested loops</title>
      <link>https://community.sap.com/t5/application-development-and-automation-discussions/performance-issue-in-nested-loops/m-p/5088096#M1181283</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi surrender,&lt;/P&gt;&lt;P&gt;try to read and understand the code for the FM and implement it in your program&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;also, try to avoid select statements inside a LOOP.. ENDLOOP block.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;regards,&lt;/P&gt;&lt;P&gt;Peter&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 21 Jan 2009 08:32:22 GMT</pubDate>
      <guid>https://community.sap.com/t5/application-development-and-automation-discussions/performance-issue-in-nested-loops/m-p/5088096#M1181283</guid>
      <dc:creator>peter_ruiz2</dc:creator>
      <dc:date>2009-01-21T08:32:22Z</dc:date>
    </item>
    <item>
      <title>Re: performance issue in nested loops</title>
      <link>https://community.sap.com/t5/application-development-and-automation-discussions/performance-issue-in-nested-loops/m-p/5088097#M1181284</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi Suri,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;you could certainly improve performance by using pointers to the ITAB lines rather than moving them to a working area in each pass of the loop.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;So instead of...&lt;/P&gt;&lt;PRE&gt;&lt;CODE&gt;
data: itab type table of mytype,
      wa type mtype.
loop at itab into wa.
  IF wa-EBELN EQ wa-EBELN
...
endloop.&lt;/CODE&gt;&lt;/PRE&gt;&lt;P&gt;something like...&lt;/P&gt;&lt;PRE&gt;&lt;CODE&gt;
data: itab type table of mytype,
      lref type ref to mtype.
loop at itab reference into lref.
  IF lref-&amp;gt;EBELN EQ lref-&amp;gt;EBELN
...
endloop.&lt;/CODE&gt;&lt;/PRE&gt;&lt;P&gt;..would be much faster.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Many people use field symbols in the same way but my personal preference is for references.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Cheers&lt;/P&gt;&lt;P&gt;Graham Robbo&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 21 Jan 2009 10:40:46 GMT</pubDate>
      <guid>https://community.sap.com/t5/application-development-and-automation-discussions/performance-issue-in-nested-loops/m-p/5088097#M1181284</guid>
      <dc:creator>GrahamRobbo</dc:creator>
      <dc:date>2009-01-21T10:40:46Z</dc:date>
    </item>
  </channel>
</rss>

