<?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: How to avoid the loop inside loop . in Application Development and Automation Discussions</title>
    <link>https://community.sap.com/t5/application-development-and-automation-discussions/how-to-avoid-the-loop-inside-loop/m-p/629707#M26374</link>
    <description>&lt;P&gt;Dear Thomas ,&lt;/P&gt;
  &lt;P&gt; &lt;/P&gt;
  &lt;P&gt;Thanks for your valuable reply .&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;/P&gt;
  &lt;P&gt;As you are suggesting : - " Try changing the data selection to use a JOIN select involving these three tables, so that you have all relevant data in one single internal table " .&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;Please guide me how to make the below three queries in to one .&lt;/STRONG&gt;&lt;/P&gt;
  &lt;P&gt; &lt;/P&gt;
  &lt;P&gt; &lt;/P&gt;
  &lt;P&gt;&lt;STRONG&gt;SELECT VBELN&lt;BR /&gt; FKART&lt;BR /&gt; WAERK&lt;BR /&gt; VKORG&lt;BR /&gt; VTWEG&lt;BR /&gt; KNUMV&lt;BR /&gt; FKDAT&lt;BR /&gt; NETWR&lt;BR /&gt; KUNAG&lt;BR /&gt; VTWEG&lt;BR /&gt; XBLNR FROM VBRK INTO TABLE IT_VBRK WHERE VBELN IN S_VBELN &lt;EM&gt;“ invoice no.&lt;/EM&gt;&lt;/STRONG&gt;&lt;/P&gt;
  &lt;P&gt; &lt;/P&gt;
  &lt;P&gt;&lt;STRONG&gt;AND FKART IN S_FKART &lt;EM&gt;" Invoice type &lt;/EM&gt;&lt;/STRONG&gt;&lt;/P&gt;
  &lt;P&gt; &lt;/P&gt;
  &lt;P&gt;&lt;STRONG&gt;AND FKART NOT IN ('ZG2','ZL2','ZF5','ZRE','F8') &lt;/STRONG&gt;&lt;/P&gt;
  &lt;P&gt; &lt;/P&gt;
  &lt;P&gt;&lt;STRONG&gt; AND VKORG = P_VKORG &lt;EM&gt;" sales organisation &lt;/EM&gt;&lt;/STRONG&gt;&lt;/P&gt;
  &lt;P&gt; &lt;/P&gt;
  &lt;P&gt;&lt;STRONG&gt;AND VTWEG IN P_VTWEG "&lt;EM&gt; distribution channel &lt;/EM&gt;&lt;/STRONG&gt;&lt;/P&gt;
  &lt;P&gt; &lt;/P&gt;
  &lt;P&gt;&lt;STRONG&gt;AND FKDAT IN S_DATE &lt;EM&gt;" date of invoice &lt;/EM&gt;&lt;/STRONG&gt;&lt;/P&gt;
  &lt;P&gt; &lt;/P&gt;
  &lt;P&gt;&lt;STRONG&gt;AND KUNAG IN S_KUNAG AND &lt;/STRONG&gt;&lt;/P&gt;
  &lt;P&gt; &lt;/P&gt;
  &lt;P&gt;&lt;STRONG&gt;KUNRG IN S_KUNRG &lt;EM&gt;"Ship To Party &lt;/EM&gt;&lt;/STRONG&gt;&lt;/P&gt;
  &lt;P&gt; &lt;/P&gt;
  &lt;P&gt;&lt;STRONG&gt;AND SFAKN EQ SPACE &lt;EM&gt;" cancelled invoices have refrence doc no. here&lt;/EM&gt;&lt;/STRONG&gt;&lt;/P&gt;
  &lt;P&gt; &lt;/P&gt;
  &lt;P&gt;&lt;STRONG&gt;AND FKSTO NE 'X' &lt;EM&gt;" to exclude cancelled invoices&lt;/EM&gt;&lt;/STRONG&gt;&lt;/P&gt;
  &lt;P&gt; &lt;/P&gt;
  &lt;P&gt;&lt;STRONG&gt;AND REGIO IN S_BLAND AND MRNKZ NE 'X'.&lt;/STRONG&gt;&lt;/P&gt;
  &lt;P&gt; &lt;/P&gt;
  &lt;P&gt;&lt;STRONG&gt;&lt;BR /&gt; IF SY-SUBRC NE 0.&lt;/STRONG&gt;&lt;/P&gt;
  &lt;P&gt; &lt;/P&gt;
  &lt;P&gt;&lt;STRONG&gt; MESSAGE 'No Data Found' TYPE 'I'. &lt;/STRONG&gt;&lt;/P&gt;
  &lt;P&gt; &lt;/P&gt;
  &lt;P&gt;&lt;STRONG&gt; LEAVE LIST-PROCESSING.&lt;/STRONG&gt;&lt;/P&gt;
  &lt;P&gt; &lt;/P&gt;
  &lt;P&gt;&lt;STRONG&gt;ENDIF. &lt;/STRONG&gt;&lt;/P&gt;
  &lt;P&gt; &lt;/P&gt;
  &lt;P&gt; &lt;/P&gt;
  &lt;P&gt;&lt;STRONG&gt;SELECT VBELN &lt;BR /&gt; POSNR &lt;BR /&gt; FKIMG &lt;BR /&gt; VRKME &lt;BR /&gt; VGBEL &lt;BR /&gt; AUBEL &lt;BR /&gt; MATNR&lt;BR /&gt; ARKTX &lt;BR /&gt; CHARG &lt;BR /&gt; WERKS &lt;BR /&gt; KONDM &lt;BR /&gt; VKAUSFROM VBRPINTO TABLE IT_VBRPFOR ALL ENTRIES IN IT_VBRKWHERE VBELN = IT_VBRK-VBELN AND MATNR IN S_MATAND SPART IN P_SPART AND CHARG IN S_CHARG AND WERKS IN P_WERKS AND KONDM IN S_MATNR . &lt;BR /&gt; &lt;BR /&gt; IF SY-SUBRC NE 0.&lt;/STRONG&gt;&lt;/P&gt;
  &lt;P&gt; &lt;/P&gt;
  &lt;P&gt;&lt;STRONG&gt; MESSAGE 'No Data Found' TYPE 'I'.&lt;/STRONG&gt;&lt;/P&gt;
  &lt;P&gt; &lt;/P&gt;
  &lt;P&gt;&lt;STRONG&gt; LEAVE LIST-PROCESSING.&lt;/STRONG&gt;&lt;/P&gt;
  &lt;P&gt; &lt;/P&gt;
  &lt;P&gt;&lt;STRONG&gt;ENDIF.&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; &lt;/P&gt;
  &lt;P&gt; &lt;/P&gt;
  &lt;P&gt;&lt;STRONG&gt;SELECT KNUMV&lt;BR /&gt; KPOSN&lt;BR /&gt; STUNR&lt;BR /&gt; ZAEHK&lt;BR /&gt; KSCHL&lt;BR /&gt; KBETR&lt;BR /&gt; KWERT&lt;BR /&gt; KINAK FROM KONV INTO CORRESPONDING FIELDS OF TABLE IT_KONV FOR ALL ENTRIES IN IT_VBRK WHERE KNUMV = IT_VBRK-KNUMV.&lt;BR /&gt; &lt;BR /&gt; DELETE IT_KONV WHERE KINAK = 'X'.&lt;/STRONG&gt;&lt;/P&gt;
  &lt;P&gt; &lt;/P&gt;
  &lt;P&gt;&lt;STRONG&gt;delete it_konv where kinak = 'Y'.&lt;BR /&gt; SORT IT_KONV BY KNUMV KPOSN.&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; &lt;/P&gt;
  &lt;P&gt; &lt;/P&gt;
  &lt;P&gt;How can the data be selected through a join for all these three tables : VBRK , VBRP and KONV table .&lt;/P&gt;
  &lt;P&gt; &lt;/P&gt;
  &lt;P&gt;JOIN select as you are suggesting me . How the above three queries can be combined .&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;Also I am doing some calculations inside the below loop . How can they be done if all three tables are combined : -&lt;/P&gt; 
  &lt;PRE&gt;&lt;CODE&gt;LOOP AT it_vbrp INTO wa_vbrp .  

    READTABLE it_vbrk INTO wa_vbrk WITH  KEY vbeln = wa_vbrp-vbeln BINARYSEARCH.&lt;/CODE&gt;&lt;/PRE&gt;
  &lt;P&gt; &lt;/P&gt;
  &lt;P&gt;LOOP AT it_konv INTO wa_konv WHERE knumv = wa_vbrk-knumv AND kposn = wa_vbrp-posnr.&lt;/P&gt;
  &lt;P&gt; &lt;/P&gt;
  &lt;P&gt; &lt;/P&gt;
  &lt;P&gt; IF wa_vbrk-waerk ='USD'.&lt;/P&gt; 
  &lt;PRE&gt;&lt;CODE&gt;      wa_konv-kwert = wa_konv-kwert /100.ENDIF.IF( kschl ='ZF00'OR kschl ='ZF02'OR kschl ='ZF03'OR 
         kschl ='ZF04'OR kschl ='ZF06'OR kschl ='ZF07'OR 
         kschl ='ZFCD'OR kschl ='ZFI2'OR kschl ='ZFIM'OR 
         kschl ='ZIFI').
      tafkwert        = tafkwert + wa_konv-kwert.
      wa_final-fkwert = wa_final-fkwert + wa_konv-kwert.
      wa_final-netwr  = wa_final-netwr + wa_konv-kwert.ELSEIF( kschl ='ZF01'OR kschl ='ZF05').
      tlfkwert         = tlfkwert + wa_konv-kwert."LESS FREIGHT
      tafkwert         = tafkwert + wa_konv-kwert.
      wa_final-fkwert  = wa_final-fkwert + wa_konv-kwert.
      wa_final-lfkwert = wa_konv-kwert."LESS FREIGHT
      wa_final-netwr   = wa_final-netwr + wa_konv-kwert.

ENDIF.

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;Please suggest some ideas or workaround .&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;/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;/P&gt;
  &lt;P&gt; &lt;/P&gt;
  &lt;P&gt;Regards&lt;/P&gt;
  &lt;P&gt; &lt;/P&gt;
  &lt;P&gt; &lt;/P&gt;
  &lt;P&gt; &lt;/P&gt;
  &lt;P&gt;Deep &lt;/P&gt;
  &lt;P&gt; &lt;/P&gt;
  &lt;P&gt; &lt;/P&gt;
  &lt;P&gt; &lt;/P&gt;</description>
    <pubDate>Thu, 21 Jun 2018 07:14:42 GMT</pubDate>
    <dc:creator>former_member220286</dc:creator>
    <dc:date>2018-06-21T07:14:42Z</dc:date>
    <item>
      <title>How to avoid the loop inside loop .</title>
      <link>https://community.sap.com/t5/application-development-and-automation-discussions/how-to-avoid-the-loop-inside-loop/m-p/629697#M26364</link>
      <description>&lt;P&gt;Dear All,&lt;/P&gt;
  &lt;P&gt; &lt;/P&gt;
  &lt;P&gt; &lt;/P&gt;
  &lt;P&gt;I have a requirement that I need to avoid the below inside two loops of the&lt;/P&gt;
  &lt;P&gt; &lt;/P&gt;
  &lt;P&gt;KONV table .How we can replace these loops .I am working on optimization of a zreport .So I need to reduce these inside loops of the KONV table .Please suggest some workaround or ideas .&lt;/P&gt;
  &lt;P&gt; &lt;/P&gt;
  &lt;P&gt; &lt;/P&gt;
  &lt;PRE&gt;&lt;CODE&gt;LOOP AT it_vbrp INTO wa_vbrp .
  READ TABLE it_vbrk INTO wa_vbrk WITH KEY vbeln = wa_vbrp-vbeln
        BINARY SEARCH.
  LOOP AT it_konv INTO wa_konv
      WHERE knumv = wa_vbrk-knumv AND kposn = wa_vbrp-posnr
        AND ( kschl = 'ZF00' OR kschl = 'ZF01' OR kschl = 'ZF02'
           OR kschl = 'ZF03' OR kschl = 'ZF04'
           OR kschl = 'ZF05' OR kschl = 'ZF06' 
           OR kschl = 'ZF07' OR kschl = 'ZFCD'
           OR kschl = 'ZFI2' OR kschl = 'ZFIM'
           OR kschl = 'ZIFI' ).

    IF wa_vbrk-waerk = 'USD'.
      wa_konv-kwert = wa_konv-kwert / 100.
    ENDIF.
    tafkwert = tafkwert + wa_konv-kwert.
    wa_final-fkwert = wa_final-fkwert + wa_konv-kwert.
    wa_final-netwr = wa_final-netwr + wa_konv-kwert.
  ENDLOOP.

  LOOP AT it_konv INTO wa_konv WHERE knumv = wa_vbrk-knumv
                                 AND kposn = wa_vbrp-posnr
                                 AND ( kschl = 'ZF01' OR kschl = 'ZF05').
    IF wa_vbrk-waerk = 'USD'.
      wa_konv-kwert = wa_konv-kwert / 100.
    ENDIF.
    wa_konv-kwert = wa_konv-kwert.

    tlfkwert = tlfkwert + wa_konv-kwert."LESS FREIGHT
    wa_final-lfkwert = wa_konv-kwert."LESS FREIGHT
    wa_final-netwr = wa_final-netwr + wa_konv-kwert.
  ENDLOOP.
ENDLOOP.
&lt;/CODE&gt;&lt;/PRE&gt;
  &lt;P&gt; &lt;/P&gt;
  &lt;P&gt; &lt;/P&gt;
  &lt;P&gt;Please suggest some ideas or workaround .&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; &lt;/P&gt;
  &lt;P&gt;Deep&lt;/P&gt;</description>
      <pubDate>Wed, 20 Jun 2018 10:05:08 GMT</pubDate>
      <guid>https://community.sap.com/t5/application-development-and-automation-discussions/how-to-avoid-the-loop-inside-loop/m-p/629697#M26364</guid>
      <dc:creator>former_member220286</dc:creator>
      <dc:date>2018-06-20T10:05:08Z</dc:date>
    </item>
    <item>
      <title>Re: How to avoid the loop inside loop .</title>
      <link>https://community.sap.com/t5/application-development-and-automation-discussions/how-to-avoid-the-loop-inside-loop/m-p/629698#M26365</link>
      <description>&lt;P&gt;Dear Deep,&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;/P&gt;
  &lt;P&gt; &lt;/P&gt;
  &lt;P&gt;Both "inside loop" do similar things:&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;/P&gt;
  &lt;P&gt; &lt;/P&gt;
  &lt;UL&gt; 
   &lt;LI&gt;checks the contition types (kschl)&lt;/LI&gt; 
   &lt;LI&gt;divides condition value (kwert) by 100 in case of USD currency&lt;/LI&gt; 
   &lt;LI&gt;and finally calculates different key figures (fkwert, netwr, etc..)&lt;/LI&gt; 
  &lt;/UL&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;/P&gt;
  &lt;P&gt; &lt;/P&gt;
  &lt;P&gt;My advices are the following:&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;/P&gt;
  &lt;P&gt; &lt;/P&gt;
  &lt;UL&gt; 
   &lt;LI&gt;push down the "condition types checks" from the &lt;STRONG&gt;WHERE expression&lt;/STRONG&gt; to two &lt;STRONG&gt;IF expressions&lt;/STRONG&gt; inside the main LOOP&lt;/LI&gt; 
   &lt;LI&gt;place the currency conversion code block &lt;STRONG&gt;at the begining of the main LOOP&lt;/STRONG&gt; (it was duplicated in your code)&lt;/LI&gt; 
  &lt;/UL&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;/P&gt;
  &lt;P&gt; &lt;/P&gt;
  &lt;P&gt;Of course you can further optimize my changes as well (for example: the calculation of the "wa_final-netwr", it is also duplicated in the code) if you want.&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;/P&gt;
  &lt;P&gt; &lt;/P&gt;
  &lt;P&gt;Hope this helps!&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;/P&gt;
  &lt;P&gt; &lt;/P&gt;
  &lt;P&gt;Warm regards,&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;/P&gt;
  &lt;P&gt; &lt;/P&gt;
  &lt;P&gt;Alex &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;/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;/P&gt;
  &lt;PRE&gt;&lt;CODE&gt;LOOP AT it_vbrp INTO wa_vbrp .
  READ TABLE it_vbrk INTO wa_vbrk WITH KEY vbeln = wa_vbrp-vbeln BINARY SEARCH.
  
  LOOP AT it_konv INTO wa_konv
    WHERE knumv = wa_vbrk-knumv
      AND kposn = wa_vbrp-posnr.
    IF wa_vbrk-waerk = 'USD'.
      wa_konv-kwert = wa_konv-kwert / 100.
    ENDIF.

    IF ( kschl = 'ZF00' OR kschl = 'ZF02' OR kschl = 'ZF03' OR 
         kschl = 'ZF04' OR kschl = 'ZF06' OR kschl = 'ZF07' OR 
         kschl = 'ZFCD' OR kschl = 'ZFI2' OR kschl = 'ZFIM' OR 
         kschl = 'ZIFI' ).
      tafkwert        = tafkwert + wa_konv-kwert.
      wa_final-fkwert = wa_final-fkwert + wa_konv-kwert.
      wa_final-netwr  = wa_final-netwr + wa_konv-kwert.
    ELSEIF ( kschl = 'ZF01' OR kschl = 'ZF05' ).
      tlfkwert         = tlfkwert + wa_konv-kwert. "LESS FREIGHT
      tafkwert         = tafkwert + wa_konv-kwert.
      wa_final-fkwert  = wa_final-fkwert + wa_konv-kwert.
      wa_final-lfkwert = wa_konv-kwert. "LESS FREIGHT
      wa_final-netwr   = wa_final-netwr + wa_konv-kwert.
    ENDIF.
  ENDLOOP.
ENDLOOP.&lt;/CODE&gt;&lt;/PRE&gt;</description>
      <pubDate>Wed, 20 Jun 2018 10:29:48 GMT</pubDate>
      <guid>https://community.sap.com/t5/application-development-and-automation-discussions/how-to-avoid-the-loop-inside-loop/m-p/629698#M26365</guid>
      <dc:creator>Former Member</dc:creator>
      <dc:date>2018-06-20T10:29:48Z</dc:date>
    </item>
    <item>
      <title>Re: How to avoid the loop inside loop .</title>
      <link>https://community.sap.com/t5/application-development-and-automation-discussions/how-to-avoid-the-loop-inside-loop/m-p/629699#M26366</link>
      <description>&lt;P&gt;I assume that data is selected from tables VBRK, VBRP and KONV prior to the code part we are seeing.&lt;/P&gt;
  &lt;P&gt;Try changing the data selection to use a JOIN select involving these three tables, so that you have all relevant data in one single internal table.&lt;/P&gt;
  &lt;P&gt;&lt;/P&gt;
  &lt;P&gt;Then the loop inside loop issue goes away, you would only need to loop one table and do additional calculations as required.&lt;/P&gt;
  &lt;P&gt;&lt;/P&gt;</description>
      <pubDate>Wed, 20 Jun 2018 11:01:12 GMT</pubDate>
      <guid>https://community.sap.com/t5/application-development-and-automation-discussions/how-to-avoid-the-loop-inside-loop/m-p/629699#M26366</guid>
      <dc:creator>ThomasZloch</dc:creator>
      <dc:date>2018-06-20T11:01:12Z</dc:date>
    </item>
    <item>
      <title>Re: How to avoid the loop inside loop .</title>
      <link>https://community.sap.com/t5/application-development-and-automation-discussions/how-to-avoid-the-loop-inside-loop/m-p/629700#M26367</link>
      <description>&lt;P&gt;Hi,&lt;/P&gt;
  &lt;P&gt;In addition to the above comments, you can use parallel cursor :&lt;/P&gt;
  &lt;P&gt;Reference link : &lt;A href="https://wiki.scn.sap.com/wiki/display/Snippets/ABAP+Code+for+Parallel+Cursor+-+Loop+Processing" target="test_blank"&gt;https://wiki.scn.sap.com/wiki/display/Snippets/ABAP+Code+for+Parallel+Cursor+-+Loop+Processing&lt;/A&gt; &lt;/P&gt;</description>
      <pubDate>Wed, 20 Jun 2018 11:39:08 GMT</pubDate>
      <guid>https://community.sap.com/t5/application-development-and-automation-discussions/how-to-avoid-the-loop-inside-loop/m-p/629700#M26367</guid>
      <dc:creator>omer_sakar</dc:creator>
      <dc:date>2018-06-20T11:39:08Z</dc:date>
    </item>
    <item>
      <title>Re: How to avoid the loop inside loop .</title>
      <link>https://community.sap.com/t5/application-development-and-automation-discussions/how-to-avoid-the-loop-inside-loop/m-p/629701#M26368</link>
      <description>&lt;P&gt;Please in future make your code nicely formatted. If people can read it, they'll be able to help you better. Use the CODE button in the editor. Hint: if you're copying from the abap editor, when you paste, right click and use "Paste as plain text". Be sure to tidy up to keep things readable.&lt;/P&gt;
  &lt;P&gt;I've done it for you this time.&lt;/P&gt;</description>
      <pubDate>Wed, 20 Jun 2018 12:23:15 GMT</pubDate>
      <guid>https://community.sap.com/t5/application-development-and-automation-discussions/how-to-avoid-the-loop-inside-loop/m-p/629701#M26368</guid>
      <dc:creator>matt</dc:creator>
      <dc:date>2018-06-20T12:23:15Z</dc:date>
    </item>
    <item>
      <title>Re: How to avoid the loop inside loop .</title>
      <link>https://community.sap.com/t5/application-development-and-automation-discussions/how-to-avoid-the-loop-inside-loop/m-p/629702#M26369</link>
      <description>&lt;P&gt;If you use HASHED and SORTED tables appropriately, you won't need to use old fashioned techniques like parallel cursor. &lt;/P&gt;
  &lt;P&gt;HASHED and SORTED tables have only been around for 18 years, so I'm not surprised that people carry on using BINARY SEARCH and suggesting parallel cursor...&lt;/P&gt;</description>
      <pubDate>Wed, 20 Jun 2018 12:25:29 GMT</pubDate>
      <guid>https://community.sap.com/t5/application-development-and-automation-discussions/how-to-avoid-the-loop-inside-loop/m-p/629702#M26369</guid>
      <dc:creator>matt</dc:creator>
      <dc:date>2018-06-20T12:25:29Z</dc:date>
    </item>
    <item>
      <title>Re: How to avoid the loop inside loop .</title>
      <link>https://community.sap.com/t5/application-development-and-automation-discussions/how-to-avoid-the-loop-inside-loop/m-p/629703#M26370</link>
      <description>&lt;P&gt;&lt;/P&gt;
  &lt;P&gt;Also research on how to use HASHED tables with COLLECT: They're super efficient for this purpose.&lt;/P&gt;</description>
      <pubDate>Wed, 20 Jun 2018 12:26:58 GMT</pubDate>
      <guid>https://community.sap.com/t5/application-development-and-automation-discussions/how-to-avoid-the-loop-inside-loop/m-p/629703#M26370</guid>
      <dc:creator>matt</dc:creator>
      <dc:date>2018-06-20T12:26:58Z</dc:date>
    </item>
    <item>
      <title>Re: How to avoid the loop inside loop .</title>
      <link>https://community.sap.com/t5/application-development-and-automation-discussions/how-to-avoid-the-loop-inside-loop/m-p/629704#M26371</link>
      <description>&lt;P&gt;If you define it_konv as a &lt;A href="https://help.sap.com/http.svc/rc/abapdocu_752_index_htm/7.52/en-US/abenitab_data_type.htm"&gt;sorted table&lt;/A&gt; with key knumv and kposn, you souldn't get some performance problem from the second loop at it will be optimized on the index. Also use a single secondary loop, just use some CASE wa_konv-kschl to fill final table.&lt;/P&gt;</description>
      <pubDate>Wed, 20 Jun 2018 13:07:46 GMT</pubDate>
      <guid>https://community.sap.com/t5/application-development-and-automation-discussions/how-to-avoid-the-loop-inside-loop/m-p/629704#M26371</guid>
      <dc:creator>RaymondGiuseppi</dc:creator>
      <dc:date>2018-06-20T13:07:46Z</dc:date>
    </item>
    <item>
      <title>Re: How to avoid the loop inside loop .</title>
      <link>https://community.sap.com/t5/application-development-and-automation-discussions/how-to-avoid-the-loop-inside-loop/m-p/629705#M26372</link>
      <description>&lt;P&gt;Hi Deep.&lt;/P&gt;
  &lt;P&gt;&lt;/P&gt;
  &lt;P&gt;I think you should let the loop on KONV to outside since it will have less record than VBRP. Beside, you should inner join VBRP and VBRK to get knumv and posnr. Condition type ZF01 and ZF05 has special logic so I put that logic into same loop too. something like:&lt;/P&gt;
  &lt;P&gt;&lt;/P&gt;
  &lt;PRE&gt;&lt;CODE&gt;LOOP AT IT_KONV INTO WA_KONV
 WHERE ( KSCHL = 'ZF00' OR KSCHL = 'ZF01' OR KSCHL = 'ZF02'
 OR KSCHL = 'ZF03' OR KSCHL = 'ZF04'
 OR KSCHL = 'ZF05' OR KSCHL = 'ZF06'
 OR KSCHL = 'ZF07' OR KSCHL = 'ZFCD'
 OR KSCHL = 'ZFI2' OR KSCHL = 'ZFIM'
 OR KSCHL = 'ZIFI' ).

 CHECK line_exists( IT_VBRK[ KNUMV = WA_KONV-KNUMV
 KPOSN = WA_KONV-POSNR ] ).

 IF WA_VBRK-WAERK = 'USD'.
 WA_KONV-KWERT = WA_KONV-KWERT / 100.
 ENDIF.
 TAFKWERT = TAFKWERT + WA_KONV-KWERT.
 WA_FINAL-FKWERT = WA_FINAL-FKWERT + WA_KONV-KWERT.
 WA_FINAL-NETWR = WA_FINAL-NETWR + WA_KONV-KWERT.

 IF KSCHL = 'ZF01' OR KSCHL = 'ZF05'.
 IF WA_VBRK-WAERK = 'USD'.
 WA_KONV-KWERT = WA_KONV-KWERT / 100.
 ENDIF.
 WA_KONV-KWERT = WA_KONV-KWERT.

 TLFKWERT = TLFKWERT + WA_KONV-KWERT."LESS FREIGHT
 WA_FINAL-LFKWERT = WA_KONV-KWERT."LESS FREIGHT
 WA_FINAL-NETWR = WA_FINAL-NETWR + WA_KONV-KWERT.
 ENDIF.
ENDLOOP.&lt;/CODE&gt;&lt;/PRE&gt;
  &lt;P&gt;&lt;/P&gt;
  &lt;P&gt;&lt;/P&gt;</description>
      <pubDate>Thu, 21 Jun 2018 01:58:47 GMT</pubDate>
      <guid>https://community.sap.com/t5/application-development-and-automation-discussions/how-to-avoid-the-loop-inside-loop/m-p/629705#M26372</guid>
      <dc:creator>DoanManhQuynh</dc:creator>
      <dc:date>2018-06-21T01:58:47Z</dc:date>
    </item>
    <item>
      <title>Re: How to avoid the loop inside loop .</title>
      <link>https://community.sap.com/t5/application-development-and-automation-discussions/how-to-avoid-the-loop-inside-loop/m-p/629706#M26373</link>
      <description>&lt;P&gt;Hi Deep,&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;/P&gt;
  &lt;P&gt; &lt;/P&gt;
  &lt;P&gt;Join is the best way but try below code and let me know the results.&lt;/P&gt; 
  &lt;PRE&gt;&lt;CODE&gt;TYPES KSCHL_X TYPE RANGE OF KSCHA. "Condition Type 
TYPES KSCHL_Y TYPE RANGE OF KSCHA. "Condition Type 

*ZF00 / ZF01 / ZF02 ETC.
DATA(KSCHL_X) = VALUE KSCHL_X( ( sign = 'I' option = 'EQ' low = 'ZF00' high = '') ). 
DATA(KSCHL_X) = VALUE KSCHL_X( ( sign = 'I' option = 'EQ' low = 'ZF01' high = '') ).
DATA(KSCHL_X) = VALUE KSCHL_X( ( sign = 'I' option = 'EQ' low = 'ZF02' high = '') ).
DATA(KSCHL_X) = VALUE KSCHL_X( ( sign = 'I' option = 'EQ' low = 'ZF03' high = '') ).   
DATA(KSCHL_X) = VALUE KSCHL_X( ( sign = 'I' option = 'EQ' low = 'ZF04' high = '') ).
DATA(KSCHL_X) = VALUE KSCHL_X( ( sign = 'I' option = 'EQ' low = 'ZF05' high = '') ).  
DATA(KSCHL_X) = VALUE KSCHL_X( ( sign = 'I' option = 'EQ' low = 'ZF06' high = '') ). 
DATA(KSCHL_X) = VALUE KSCHL_X( ( sign = 'I' option = 'EQ' low = 'ZF07' high = '') ). 
DATA(KSCHL_X) = VALUE KSCHL_X( ( sign = 'I' option = 'EQ' low = 'ZFCD' high = '') ).
DATA(KSCHL_X) = VALUE KSCHL_X( ( sign = 'I' option = 'EQ' low = 'ZFI2' high = '') ).  
DATA(KSCHL_X) = VALUE KSCHL_X( ( sign = 'I' option = 'EQ' low = 'ZFIM' high = '') ). 
DATA(KSCHL_X) = VALUE KSCHL_X( ( sign = 'I' option = 'EQ' low = 'ZIFI' high = '') ). 

* ZF01 / ZF05
DATA(KSCHL_Y) = VALUE KSCHL_Y( ( sign = 'I' option = 'EQ' low = 'ZF01' high = '') ).
DATA(KSCHL_Y) = VALUE KSCHL_Y( ( sign = 'I' option = 'EQ' low = 'ZF05' high = '') ).

DATA: lv_tabix TYPE sytabix,
      lv_index TYPE sytabix.

SORT: it_vbrp[] BY VBELN POSNR,
      it_konv[] BY KNUMV KPOSN,
      KSCHL_X[], 
      KSCHL_Y[].

*Header
LOOP AT it_vbrk[] INTO wa_vbrk.

*Item by primary key vbeln 
  READ TABLE it_vbrp[] TRANSPORTING NO FIELDS BINARY SEARCH
    WITH KEY vbeln = wa_vbrk-vbeln.

  IF ( SY-SUBRC EQ 0 ).
    lv_tabix = sy-tabix.  

*Item by index
    LOOP AT it_vbrp[] INTO wa_vbrp FROM lv_tabix.

       IF ( wa_vbrp-vbeln NE wa_vbrk-vbeln ).
         EXIT.
       ELSE.
         IF ( wa_vbrk-waerk EQ 'USD' ).
           wa_konv-kwert = wa_konv-kwert / 100.
         ENDIF.

         READ TABLE it_konv[] TRANSPORTING NO FIELDS BINARY SEARCH
           WITH KEY knumv = wa_vbrk-knumv
                    kposn = wa_vbrp-posnr.

         IF ( SY-SUBRC EQ 0 ).
             lv_index = sy-tabix.

            LOOP AT it_konv[] INTO wa_konv FROM lv_index.

               IF ( wa_konv-knumv NE wa_vbrk-knumv OR
                    wa_konv-kposn NE wa_vbrp-posnr ).
                     EXIT.
               ELSE.
* ZF00 / ZF01 / ZF02 etc.
                  IF ( wa_konv-kschl IN KSCHL_X[] ).
                     tafkwert = tafkwert + wa_konv-kwert.
                     wa_final-fkwert = wa_final-fkwert + wa_konv-kwert.
                     wa_final-netwr = wa_final-netwr + wa_konv-kwert.
                  ENDIF. 
* ZF01 / ZF05
                  IF ( wa_konv-kschl IN KSCHL_Y[] ).
                     wa_konv-kwert = wa_konv-kwert.

                     tlfkwert = tlfkwert + wa_konv-kwert."LESS FREIGHT
                     wa_final-lfkwert = wa_konv-kwert."LESS FREIGHT
                     wa_final-netwr = wa_final-netwr + wa_konv-kwert.
                  ENDIF.
               ENDIF.

              CLEAR: lv_index.
            ENDLOOP.

         ENDIF.
       ENDIF.

       CLEAR: wa_vbrp.
    ENDLOOP.

  ENDIF.

  CLEAR: wa_vbrk,
         wa_konv,
         lv_tabix.

ENDLOOP.&lt;/CODE&gt;&lt;/PRE&gt;</description>
      <pubDate>Thu, 21 Jun 2018 04:21:04 GMT</pubDate>
      <guid>https://community.sap.com/t5/application-development-and-automation-discussions/how-to-avoid-the-loop-inside-loop/m-p/629706#M26373</guid>
      <dc:creator>roberto_forti</dc:creator>
      <dc:date>2018-06-21T04:21:04Z</dc:date>
    </item>
    <item>
      <title>Re: How to avoid the loop inside loop .</title>
      <link>https://community.sap.com/t5/application-development-and-automation-discussions/how-to-avoid-the-loop-inside-loop/m-p/629707#M26374</link>
      <description>&lt;P&gt;Dear Thomas ,&lt;/P&gt;
  &lt;P&gt; &lt;/P&gt;
  &lt;P&gt;Thanks for your valuable reply .&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;/P&gt;
  &lt;P&gt;As you are suggesting : - " Try changing the data selection to use a JOIN select involving these three tables, so that you have all relevant data in one single internal table " .&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;Please guide me how to make the below three queries in to one .&lt;/STRONG&gt;&lt;/P&gt;
  &lt;P&gt; &lt;/P&gt;
  &lt;P&gt; &lt;/P&gt;
  &lt;P&gt;&lt;STRONG&gt;SELECT VBELN&lt;BR /&gt; FKART&lt;BR /&gt; WAERK&lt;BR /&gt; VKORG&lt;BR /&gt; VTWEG&lt;BR /&gt; KNUMV&lt;BR /&gt; FKDAT&lt;BR /&gt; NETWR&lt;BR /&gt; KUNAG&lt;BR /&gt; VTWEG&lt;BR /&gt; XBLNR FROM VBRK INTO TABLE IT_VBRK WHERE VBELN IN S_VBELN &lt;EM&gt;“ invoice no.&lt;/EM&gt;&lt;/STRONG&gt;&lt;/P&gt;
  &lt;P&gt; &lt;/P&gt;
  &lt;P&gt;&lt;STRONG&gt;AND FKART IN S_FKART &lt;EM&gt;" Invoice type &lt;/EM&gt;&lt;/STRONG&gt;&lt;/P&gt;
  &lt;P&gt; &lt;/P&gt;
  &lt;P&gt;&lt;STRONG&gt;AND FKART NOT IN ('ZG2','ZL2','ZF5','ZRE','F8') &lt;/STRONG&gt;&lt;/P&gt;
  &lt;P&gt; &lt;/P&gt;
  &lt;P&gt;&lt;STRONG&gt; AND VKORG = P_VKORG &lt;EM&gt;" sales organisation &lt;/EM&gt;&lt;/STRONG&gt;&lt;/P&gt;
  &lt;P&gt; &lt;/P&gt;
  &lt;P&gt;&lt;STRONG&gt;AND VTWEG IN P_VTWEG "&lt;EM&gt; distribution channel &lt;/EM&gt;&lt;/STRONG&gt;&lt;/P&gt;
  &lt;P&gt; &lt;/P&gt;
  &lt;P&gt;&lt;STRONG&gt;AND FKDAT IN S_DATE &lt;EM&gt;" date of invoice &lt;/EM&gt;&lt;/STRONG&gt;&lt;/P&gt;
  &lt;P&gt; &lt;/P&gt;
  &lt;P&gt;&lt;STRONG&gt;AND KUNAG IN S_KUNAG AND &lt;/STRONG&gt;&lt;/P&gt;
  &lt;P&gt; &lt;/P&gt;
  &lt;P&gt;&lt;STRONG&gt;KUNRG IN S_KUNRG &lt;EM&gt;"Ship To Party &lt;/EM&gt;&lt;/STRONG&gt;&lt;/P&gt;
  &lt;P&gt; &lt;/P&gt;
  &lt;P&gt;&lt;STRONG&gt;AND SFAKN EQ SPACE &lt;EM&gt;" cancelled invoices have refrence doc no. here&lt;/EM&gt;&lt;/STRONG&gt;&lt;/P&gt;
  &lt;P&gt; &lt;/P&gt;
  &lt;P&gt;&lt;STRONG&gt;AND FKSTO NE 'X' &lt;EM&gt;" to exclude cancelled invoices&lt;/EM&gt;&lt;/STRONG&gt;&lt;/P&gt;
  &lt;P&gt; &lt;/P&gt;
  &lt;P&gt;&lt;STRONG&gt;AND REGIO IN S_BLAND AND MRNKZ NE 'X'.&lt;/STRONG&gt;&lt;/P&gt;
  &lt;P&gt; &lt;/P&gt;
  &lt;P&gt;&lt;STRONG&gt;&lt;BR /&gt; IF SY-SUBRC NE 0.&lt;/STRONG&gt;&lt;/P&gt;
  &lt;P&gt; &lt;/P&gt;
  &lt;P&gt;&lt;STRONG&gt; MESSAGE 'No Data Found' TYPE 'I'. &lt;/STRONG&gt;&lt;/P&gt;
  &lt;P&gt; &lt;/P&gt;
  &lt;P&gt;&lt;STRONG&gt; LEAVE LIST-PROCESSING.&lt;/STRONG&gt;&lt;/P&gt;
  &lt;P&gt; &lt;/P&gt;
  &lt;P&gt;&lt;STRONG&gt;ENDIF. &lt;/STRONG&gt;&lt;/P&gt;
  &lt;P&gt; &lt;/P&gt;
  &lt;P&gt; &lt;/P&gt;
  &lt;P&gt;&lt;STRONG&gt;SELECT VBELN &lt;BR /&gt; POSNR &lt;BR /&gt; FKIMG &lt;BR /&gt; VRKME &lt;BR /&gt; VGBEL &lt;BR /&gt; AUBEL &lt;BR /&gt; MATNR&lt;BR /&gt; ARKTX &lt;BR /&gt; CHARG &lt;BR /&gt; WERKS &lt;BR /&gt; KONDM &lt;BR /&gt; VKAUSFROM VBRPINTO TABLE IT_VBRPFOR ALL ENTRIES IN IT_VBRKWHERE VBELN = IT_VBRK-VBELN AND MATNR IN S_MATAND SPART IN P_SPART AND CHARG IN S_CHARG AND WERKS IN P_WERKS AND KONDM IN S_MATNR . &lt;BR /&gt; &lt;BR /&gt; IF SY-SUBRC NE 0.&lt;/STRONG&gt;&lt;/P&gt;
  &lt;P&gt; &lt;/P&gt;
  &lt;P&gt;&lt;STRONG&gt; MESSAGE 'No Data Found' TYPE 'I'.&lt;/STRONG&gt;&lt;/P&gt;
  &lt;P&gt; &lt;/P&gt;
  &lt;P&gt;&lt;STRONG&gt; LEAVE LIST-PROCESSING.&lt;/STRONG&gt;&lt;/P&gt;
  &lt;P&gt; &lt;/P&gt;
  &lt;P&gt;&lt;STRONG&gt;ENDIF.&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; &lt;/P&gt;
  &lt;P&gt; &lt;/P&gt;
  &lt;P&gt;&lt;STRONG&gt;SELECT KNUMV&lt;BR /&gt; KPOSN&lt;BR /&gt; STUNR&lt;BR /&gt; ZAEHK&lt;BR /&gt; KSCHL&lt;BR /&gt; KBETR&lt;BR /&gt; KWERT&lt;BR /&gt; KINAK FROM KONV INTO CORRESPONDING FIELDS OF TABLE IT_KONV FOR ALL ENTRIES IN IT_VBRK WHERE KNUMV = IT_VBRK-KNUMV.&lt;BR /&gt; &lt;BR /&gt; DELETE IT_KONV WHERE KINAK = 'X'.&lt;/STRONG&gt;&lt;/P&gt;
  &lt;P&gt; &lt;/P&gt;
  &lt;P&gt;&lt;STRONG&gt;delete it_konv where kinak = 'Y'.&lt;BR /&gt; SORT IT_KONV BY KNUMV KPOSN.&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; &lt;/P&gt;
  &lt;P&gt; &lt;/P&gt;
  &lt;P&gt;How can the data be selected through a join for all these three tables : VBRK , VBRP and KONV table .&lt;/P&gt;
  &lt;P&gt; &lt;/P&gt;
  &lt;P&gt;JOIN select as you are suggesting me . How the above three queries can be combined .&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;Also I am doing some calculations inside the below loop . How can they be done if all three tables are combined : -&lt;/P&gt; 
  &lt;PRE&gt;&lt;CODE&gt;LOOP AT it_vbrp INTO wa_vbrp .  

    READTABLE it_vbrk INTO wa_vbrk WITH  KEY vbeln = wa_vbrp-vbeln BINARYSEARCH.&lt;/CODE&gt;&lt;/PRE&gt;
  &lt;P&gt; &lt;/P&gt;
  &lt;P&gt;LOOP AT it_konv INTO wa_konv WHERE knumv = wa_vbrk-knumv AND kposn = wa_vbrp-posnr.&lt;/P&gt;
  &lt;P&gt; &lt;/P&gt;
  &lt;P&gt; &lt;/P&gt;
  &lt;P&gt; IF wa_vbrk-waerk ='USD'.&lt;/P&gt; 
  &lt;PRE&gt;&lt;CODE&gt;      wa_konv-kwert = wa_konv-kwert /100.ENDIF.IF( kschl ='ZF00'OR kschl ='ZF02'OR kschl ='ZF03'OR 
         kschl ='ZF04'OR kschl ='ZF06'OR kschl ='ZF07'OR 
         kschl ='ZFCD'OR kschl ='ZFI2'OR kschl ='ZFIM'OR 
         kschl ='ZIFI').
      tafkwert        = tafkwert + wa_konv-kwert.
      wa_final-fkwert = wa_final-fkwert + wa_konv-kwert.
      wa_final-netwr  = wa_final-netwr + wa_konv-kwert.ELSEIF( kschl ='ZF01'OR kschl ='ZF05').
      tlfkwert         = tlfkwert + wa_konv-kwert."LESS FREIGHT
      tafkwert         = tafkwert + wa_konv-kwert.
      wa_final-fkwert  = wa_final-fkwert + wa_konv-kwert.
      wa_final-lfkwert = wa_konv-kwert."LESS FREIGHT
      wa_final-netwr   = wa_final-netwr + wa_konv-kwert.

ENDIF.

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;Please suggest some ideas or workaround .&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;/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;/P&gt;
  &lt;P&gt; &lt;/P&gt;
  &lt;P&gt;Regards&lt;/P&gt;
  &lt;P&gt; &lt;/P&gt;
  &lt;P&gt; &lt;/P&gt;
  &lt;P&gt; &lt;/P&gt;
  &lt;P&gt;Deep &lt;/P&gt;
  &lt;P&gt; &lt;/P&gt;
  &lt;P&gt; &lt;/P&gt;
  &lt;P&gt; &lt;/P&gt;</description>
      <pubDate>Thu, 21 Jun 2018 07:14:42 GMT</pubDate>
      <guid>https://community.sap.com/t5/application-development-and-automation-discussions/how-to-avoid-the-loop-inside-loop/m-p/629707#M26374</guid>
      <dc:creator>former_member220286</dc:creator>
      <dc:date>2018-06-21T07:14:42Z</dc:date>
    </item>
    <item>
      <title>Re: How to avoid the loop inside loop .</title>
      <link>https://community.sap.com/t5/application-development-and-automation-discussions/how-to-avoid-the-loop-inside-loop/m-p/629708#M26375</link>
      <description>&lt;P&gt;How about a loop on IT_KONV and grouping by KNUMV and POSNR? Completed with a LOOP AT GROUP-, a CASE- and possibly a READ statement (or two) it should do the trick. &lt;/P&gt;
  &lt;P&gt;&lt;/P&gt;
  &lt;P&gt;Of course if you'd have the possibility to JOIN some of the tables in the corresponding SQL, it would only become easier.&lt;/P&gt;
  &lt;P&gt;&lt;/P&gt;</description>
      <pubDate>Thu, 21 Jun 2018 08:41:16 GMT</pubDate>
      <guid>https://community.sap.com/t5/application-development-and-automation-discussions/how-to-avoid-the-loop-inside-loop/m-p/629708#M26375</guid>
      <dc:creator>Patrick_vN</dc:creator>
      <dc:date>2018-06-21T08:41:16Z</dc:date>
    </item>
    <item>
      <title>Re: How to avoid the loop inside loop .</title>
      <link>https://community.sap.com/t5/application-development-and-automation-discussions/how-to-avoid-the-loop-inside-loop/m-p/629709#M26376</link>
      <description>&lt;P&gt;Thank You so much sir .&lt;/P&gt;</description>
      <pubDate>Thu, 21 Jun 2018 09:28:57 GMT</pubDate>
      <guid>https://community.sap.com/t5/application-development-and-automation-discussions/how-to-avoid-the-loop-inside-loop/m-p/629709#M26376</guid>
      <dc:creator>former_member220286</dc:creator>
      <dc:date>2018-06-21T09:28:57Z</dc:date>
    </item>
    <item>
      <title>Re: How to avoid the loop inside loop .</title>
      <link>https://community.sap.com/t5/application-development-and-automation-discussions/how-to-avoid-the-loop-inside-loop/m-p/629710#M26377</link>
      <description>&lt;P&gt;Please do not extend an existing question to ask a new question. If you have a new question, create a new question. As you are now asking a different question, I assume you've got the answer to this one, so I'll close it.&lt;/P&gt;</description>
      <pubDate>Thu, 21 Jun 2018 11:57:24 GMT</pubDate>
      <guid>https://community.sap.com/t5/application-development-and-automation-discussions/how-to-avoid-the-loop-inside-loop/m-p/629710#M26377</guid>
      <dc:creator>matt</dc:creator>
      <dc:date>2018-06-21T11:57:24Z</dc:date>
    </item>
    <item>
      <title>Re: How to avoid the loop inside loop .</title>
      <link>https://community.sap.com/t5/application-development-and-automation-discussions/how-to-avoid-the-loop-inside-loop/m-p/629711#M26378</link>
      <description>&lt;P&gt;Dear  &lt;A href="https://answers.sap.com/users/350197/alexgonczy.html"&gt;Alex Gönczy&lt;/A&gt; ,&lt;/P&gt;
  &lt;P&gt;&lt;BR /&gt;&lt;/P&gt;
  &lt;P&gt;I have done the same as told by you . I have done the following :- &lt;/P&gt;
  &lt;UL&gt; 
   &lt;LI&gt;push down the "condition types checks" from the &lt;STRONG&gt;WHERE expression&lt;/STRONG&gt; to two &lt;STRONG&gt;IF expressions&lt;/STRONG&gt; inside the main LOOP.&lt;/LI&gt;
   &lt;LI&gt;place the currency conversion code block &lt;STRONG&gt;at the begining of the main LOOP&lt;/STRONG&gt; (it was duplicated in your code).&lt;/LI&gt;
  &lt;/UL&gt;
  &lt;P&gt;&lt;BR /&gt;&lt;/P&gt;
  &lt;PRE&gt;&lt;CODE&gt;LOOP AT it_vbrp INTO wa_vbrp .

READTABLE it_vbrk INTO wa_vbrk WITHKEY vbeln = wa_vbrp-vbeln BINARYSEARCH.

LOOP AT it_konv INTO wa_konv
    WHERE knumv = wa_vbrk-knumv
      AND kposn = wa_vbrp-posnr.IF wa_vbrk-waerk ='USD'.
      wa_konv-kwert = wa_konv-kwert /100.ENDIF.

IF( kschl ='ZF00'OR kschl ='ZF02'OR kschl ='ZF03'OR 
         kschl ='ZF04'OR kschl ='ZF06'OR kschl ='ZF07'OR 
         kschl ='ZFCD'OR kschl ='ZFI2'OR kschl ='ZFIM'OR 
         kschl ='ZIFI').
      tafkwert        = tafkwert + wa_konv-kwert.
      wa_final-fkwert = wa_final-fkwert + wa_konv-kwert.
      wa_final-netwr  = wa_final-netwr + wa_konv-kwert.ELSEIF( kschl ='ZF01'OR kschl ='ZF05').
      tlfkwert         = tlfkwert + wa_konv-kwert."LESS FREIGHT
      tafkwert         = tafkwert + wa_konv-kwert.
      wa_final-fkwert  = wa_final-fkwert + wa_konv-kwert.
      wa_final-lfkwert = wa_konv-kwert."LESS FREIGHT
      wa_final-netwr   = wa_final-netwr + wa_konv-kwert.

ENDIF.

ENDLOOP.

ENDLOOP.&lt;/CODE&gt;&lt;/PRE&gt;
  &lt;P&gt;&lt;BR /&gt;&lt;/P&gt;
  &lt;P&gt;&lt;BR /&gt;&lt;/P&gt;
  &lt;P&gt;I am asking can the loop on IT_KONV table can be avoided .&lt;/P&gt;
  &lt;P&gt;&lt;BR /&gt;&lt;/P&gt;
  &lt;P&gt;&lt;STRONG&gt; Can the below three queries can be combined into one .&lt;/STRONG&gt;&lt;/P&gt;
  &lt;P&gt;As some one suggested : - " Try changing the data selection to use a JOIN select involving these three tables, so that you have all relevant data in one single internal table " .&lt;/P&gt;
  &lt;P&gt;&lt;STRONG&gt;Please guide me how to make the below three queries in to one .&lt;/STRONG&gt;&lt;/P&gt;
  &lt;P&gt;&lt;STRONG&gt;-----------------------------&lt;/STRONG&gt;&lt;/P&gt;
  &lt;P&gt;&lt;STRONG&gt;First Query&lt;/STRONG&gt;&lt;/P&gt;
  &lt;P&gt;&lt;STRONG&gt;-------------------------------&lt;/STRONG&gt;&lt;/P&gt;
  &lt;P&gt;&lt;STRONG&gt;SELECT VBELN&lt;BR /&gt;FKART&lt;BR /&gt;WAERK&lt;BR /&gt;VKORG&lt;BR /&gt;VTWEG&lt;BR /&gt;KNUMV&lt;BR /&gt;FKDAT&lt;BR /&gt;NETWR&lt;BR /&gt;KUNAG&lt;BR /&gt;VTWEG&lt;BR /&gt;XBLNR FROM VBRK INTO TABLE IT_VBRK&lt;/STRONG&gt;&lt;/P&gt;
  &lt;P&gt;&lt;STRONG&gt;WHERE VBELN IN S_VBELN &lt;/STRONG&gt;&lt;EM&gt;“ invoice no.&lt;/EM&gt;&lt;/P&gt;
  &lt;P&gt;&lt;STRONG&gt;AND FKART IN S_FKART &lt;/STRONG&gt;&lt;EM&gt;" Invoice type&lt;/EM&gt;&lt;/P&gt;
  &lt;P&gt;&lt;STRONG&gt;AND FKART NOT IN ('ZG2','ZL2','ZF5','ZRE','F8')&lt;/STRONG&gt;&lt;/P&gt;
  &lt;P&gt;&lt;STRONG&gt;AND VKORG = P_VKORG &lt;/STRONG&gt;&lt;EM&gt;" sales organisation&lt;/EM&gt;&lt;/P&gt;
  &lt;P&gt;&lt;STRONG&gt;AND VTWEG IN P_VTWEG &lt;/STRONG&gt;"&lt;EM&gt; distribution channel&lt;/EM&gt;&lt;/P&gt;
  &lt;P&gt;&lt;STRONG&gt;AND FKDAT IN S_DATE &lt;/STRONG&gt;&lt;EM&gt;" date of invoice&lt;/EM&gt;&lt;/P&gt;
  &lt;P&gt;&lt;STRONG&gt;AND KUNAG IN S_KUNAG AND&lt;/STRONG&gt;&lt;/P&gt;
  &lt;P&gt;&lt;STRONG&gt;KUNRG IN S_KUNRG &lt;/STRONG&gt;&lt;EM&gt;"Ship To Party&lt;/EM&gt;&lt;/P&gt;
  &lt;P&gt;&lt;STRONG&gt;AND SFAKN EQ SPACE &lt;/STRONG&gt;&lt;EM&gt;" cancelled invoices have refrence doc no. here&lt;/EM&gt;&lt;/P&gt;
  &lt;P&gt;&lt;STRONG&gt;AND FKSTO NE 'X' &lt;/STRONG&gt;&lt;EM&gt;" to exclude cancelled invoices&lt;/EM&gt;&lt;/P&gt;
  &lt;P&gt;&lt;STRONG&gt;AND REGIO IN S_BLAND AND MRNKZ NE 'X'.&lt;/STRONG&gt;&lt;/P&gt;
  &lt;P&gt;&lt;STRONG&gt;&lt;BR /&gt;IF SY-SUBRC NE 0.&lt;/STRONG&gt;&lt;/P&gt;
  &lt;P&gt;&lt;STRONG&gt;MESSAGE 'No Data Found' TYPE 'I'.&lt;/STRONG&gt;&lt;/P&gt;
  &lt;P&gt;&lt;STRONG&gt;LEAVE LIST-PROCESSING.&lt;/STRONG&gt;&lt;/P&gt;
  &lt;P&gt;&lt;STRONG&gt;ENDIF.&lt;/STRONG&gt;&lt;/P&gt;
  &lt;P&gt;&lt;STRONG&gt;------------------------------------&lt;/STRONG&gt;&lt;/P&gt;
  &lt;P&gt;&lt;STRONG&gt;second query&lt;/STRONG&gt;&lt;/P&gt;
  &lt;P&gt;&lt;STRONG&gt;-------------------------------------&lt;/STRONG&gt;&lt;/P&gt;
  &lt;P&gt;&lt;STRONG&gt;SELECT VBELN &lt;BR /&gt;POSNR &lt;BR /&gt;FKIMG &lt;BR /&gt;VRKME &lt;BR /&gt;VGBEL &lt;BR /&gt;AUBEL &lt;BR /&gt;MATNR&lt;BR /&gt;ARKTX &lt;BR /&gt;CHARG &lt;BR /&gt;WERKS &lt;BR /&gt;KONDM &lt;BR /&gt;VKAUSFROM VBRPINTO TABLE IT_VBRPFOR ALL ENTRIES IN IT_VBRKWHERE VBELN = IT_VBRK-VBELN AND MATNR IN S_MATAND SPART IN P_SPART AND CHARG IN S_CHARG AND WERKS IN P_WERKS AND KONDM IN S_MATNR . &lt;BR /&gt;&lt;BR /&gt;IF SY-SUBRC NE 0.&lt;/STRONG&gt;&lt;/P&gt;
  &lt;P&gt;&lt;STRONG&gt;MESSAGE 'No Data Found' TYPE 'I'.&lt;/STRONG&gt;&lt;/P&gt;
  &lt;P&gt;&lt;STRONG&gt;LEAVE LIST-PROCESSING.&lt;/STRONG&gt;&lt;/P&gt;
  &lt;P&gt;&lt;STRONG&gt;ENDIF.&lt;/STRONG&gt;&lt;/P&gt;
  &lt;P&gt;&lt;STRONG&gt;-----------------------------------&lt;/STRONG&gt;&lt;/P&gt;
  &lt;P&gt;&lt;STRONG&gt;Third Query&lt;/STRONG&gt;&lt;/P&gt;
  &lt;P&gt;&lt;STRONG&gt;-----------------------------------&lt;/STRONG&gt;&lt;/P&gt;
  &lt;P&gt;&lt;STRONG&gt;SELECT KNUMV&lt;BR /&gt;KPOSN&lt;BR /&gt;STUNR&lt;BR /&gt;ZAEHK&lt;BR /&gt;KSCHL&lt;BR /&gt;KBETR&lt;BR /&gt;KWERT&lt;BR /&gt;KINAK FROM KONV INTO CORRESPONDING FIELDS OF TABLE IT_KONV FOR ALL ENTRIES IN IT_VBRK WHERE KNUMV = IT_VBRK-KNUMV.&lt;BR /&gt;&lt;BR /&gt;DELETE IT_KONV WHERE KINAK = 'X'.&lt;/STRONG&gt;&lt;/P&gt;
  &lt;P&gt;&lt;STRONG&gt;delete it_konv where kinak = 'Y'.&lt;BR /&gt;SORT IT_KONV BY KNUMV KPOSN.&lt;/STRONG&gt;&lt;/P&gt;
  &lt;P&gt;&lt;STRONG&gt;&lt;BR /&gt;&lt;/STRONG&gt;&lt;/P&gt;
  &lt;P&gt;How can the data be selected through a join for all these three tables : VBRK , VBRP and KONV table .&lt;/P&gt;
  &lt;P&gt;JOIN select as some suggested me . How the above three queries can be combined .&lt;/P&gt;
  &lt;P&gt;Also I am doing some calculations inside the below loop of IT_KONV table as you already know . &lt;/P&gt;
  &lt;P&gt;How can they be done if all three tables are combined into the one table .In this way the loop will be avoided and hence the read statement will do the work .&lt;/P&gt;
  &lt;P&gt;&lt;/P&gt;
  &lt;P&gt;&lt;/P&gt;
  &lt;P&gt;&lt;BR /&gt;&lt;/P&gt;
  &lt;P&gt;Regards&lt;/P&gt;
  &lt;P&gt;Deep &lt;/P&gt;
  &lt;P&gt;&lt;BR /&gt;&lt;/P&gt;</description>
      <pubDate>Wed, 27 Jun 2018 09:04:36 GMT</pubDate>
      <guid>https://community.sap.com/t5/application-development-and-automation-discussions/how-to-avoid-the-loop-inside-loop/m-p/629711#M26378</guid>
      <dc:creator>former_member220286</dc:creator>
      <dc:date>2018-06-27T09:04:36Z</dc:date>
    </item>
    <item>
      <title>Re: How to avoid the loop inside loop .</title>
      <link>https://community.sap.com/t5/application-development-and-automation-discussions/how-to-avoid-the-loop-inside-loop/m-p/629712#M26379</link>
      <description>&lt;P&gt;Dear  &lt;A href="https://answers.sap.com/users/36313/quynhdoanmanh.html"&gt;Quynh Doan Manh&lt;/A&gt; ,&lt;/P&gt;
  &lt;P&gt;&lt;/P&gt;
  &lt;P&gt;&lt;/P&gt;
  &lt;P&gt;Can the loop on IT_KONV can be avoided .&lt;/P&gt;
  &lt;P&gt;&lt;/P&gt;
  &lt;P&gt;Regards&lt;/P&gt;
  &lt;P&gt;Deep &lt;/P&gt;</description>
      <pubDate>Wed, 27 Jun 2018 11:36:17 GMT</pubDate>
      <guid>https://community.sap.com/t5/application-development-and-automation-discussions/how-to-avoid-the-loop-inside-loop/m-p/629712#M26379</guid>
      <dc:creator>former_member220286</dc:creator>
      <dc:date>2018-06-27T11:36:17Z</dc:date>
    </item>
    <item>
      <title>Re: How to avoid the loop inside loop .</title>
      <link>https://community.sap.com/t5/application-development-and-automation-discussions/how-to-avoid-the-loop-inside-loop/m-p/629713#M26380</link>
      <description>&lt;P&gt;Dear &lt;A href="https://answers.sap.com/users/2688/matthewbillingham.html"&gt;Matthew Billingham&lt;/A&gt; ,&lt;/P&gt;
  &lt;P&gt; &lt;/P&gt;
  &lt;P&gt;It is related question . Please try to understand.If you keep on doing this thing then I am unable to get a resolution for the same .I have updated the reply to  &lt;A href="https://answers.sap.com/users/3144/thomaszloch.html"&gt;Thomas Zloch&lt;/A&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;Regards&lt;/P&gt;
  &lt;P&gt; &lt;/P&gt;
  &lt;P&gt;Deep &lt;/P&gt;</description>
      <pubDate>Wed, 27 Jun 2018 12:00:24 GMT</pubDate>
      <guid>https://community.sap.com/t5/application-development-and-automation-discussions/how-to-avoid-the-loop-inside-loop/m-p/629713#M26380</guid>
      <dc:creator>former_member220286</dc:creator>
      <dc:date>2018-06-27T12:00:24Z</dc:date>
    </item>
    <item>
      <title>Re: How to avoid the loop inside loop .</title>
      <link>https://community.sap.com/t5/application-development-and-automation-discussions/how-to-avoid-the-loop-inside-loop/m-p/629714#M26381</link>
      <description>&lt;P&gt;Hi,&lt;/P&gt;
  &lt;P&gt;If you know the pricing conditions that you need then you can avoid it by looping through the invoice item table and readint it_konv for required data based on pricing condition.&lt;/P&gt;</description>
      <pubDate>Wed, 27 Jun 2018 12:08:33 GMT</pubDate>
      <guid>https://community.sap.com/t5/application-development-and-automation-discussions/how-to-avoid-the-loop-inside-loop/m-p/629714#M26381</guid>
      <dc:creator>former_member539238</dc:creator>
      <dc:date>2018-06-27T12:08:33Z</dc:date>
    </item>
    <item>
      <title>Re: How to avoid the loop inside loop .</title>
      <link>https://community.sap.com/t5/application-development-and-automation-discussions/how-to-avoid-the-loop-inside-loop/m-p/629715#M26382</link>
      <description>&lt;P&gt;Understand that this is how moderation on this site works. I've told you what you need to do. Others seems to be able to follow migrator guidance. &lt;/P&gt;
  &lt;P&gt; &lt;/P&gt;
  &lt;P&gt;Open a new question. You can link to the old one if you want to retain context. &lt;/P&gt;
  &lt;P&gt; &lt;/P&gt;
  &lt;P&gt;This really is for your own benefit. You'll get more and better help if you keep things clear, rather than rambling on with different requirements in different replies in the same question &lt;/P&gt;
  &lt;P&gt;I am not changing established procedures for one person who doesn't want to.&lt;/P&gt;
  &lt;P&gt;I'm locking this question now, and closing the comments. &lt;/P&gt;
  &lt;P&gt; &lt;/P&gt;
  &lt;P&gt; &lt;/P&gt;
  &lt;P&gt; &lt;/P&gt;</description>
      <pubDate>Wed, 27 Jun 2018 12:48:20 GMT</pubDate>
      <guid>https://community.sap.com/t5/application-development-and-automation-discussions/how-to-avoid-the-loop-inside-loop/m-p/629715#M26382</guid>
      <dc:creator>matt</dc:creator>
      <dc:date>2018-06-27T12:48:20Z</dc:date>
    </item>
    <item>
      <title>Re: How to avoid the loop inside loop .</title>
      <link>https://community.sap.com/t5/application-development-and-automation-discussions/how-to-avoid-the-loop-inside-loop/m-p/629716#M26383</link>
      <description>&lt;P&gt;You could SUM in SQL first (its depend on your logic) then you read vbrk to get line item post in USD and convert. It should be better because the calculation is pushed to DB. something like:&lt;/P&gt;
  &lt;P&gt; &lt;/P&gt; 
  &lt;PRE&gt;&lt;CODE&gt;SELECT KNUMV AS KNUMV,
 KPOSN AS KPOSN,
 SUM( KWERT ) AS KWERT
 FROM KONV
 WHERE KSCHL = 'ZF00' OR KSCHL = 'ZF01' OR KSCHL = 'ZF02'
 OR KSCHL = 'ZF03' OR KSCHL = 'ZF04'
 OR KSCHL = 'ZF05' OR KSCHL = 'ZF06'
 OR KSCHL = 'ZF07' OR KSCHL = 'ZFCD'
 OR KSCHL = 'ZFI2' OR KSCHL = 'ZFIM'
 OR KSCHL = 'ZIFI'
 GROUP BY KNUMV, KPOSN
 INTO TABLE @DATA(LT_KONV).&amp;lt;br&amp;gt;
 LOOP AT LT_KONV INTO WA_KONV.
 CHECK line_exists( IT_VBRK[ KNUMV = WA_KONV-KNUMV KPOSN = WA_KONV-POSNR ] ).
 ...
 ENDLOOP.&lt;/CODE&gt;&lt;/PRE&gt;
  &lt;P&gt; &lt;/P&gt;
  &lt;P&gt; &lt;/P&gt;
  &lt;P&gt;you are summing data so you cant avoid loop, can only make it more effective. if you dont loop KONV then you have to loop on vbrk anw.&lt;/P&gt;</description>
      <pubDate>Wed, 27 Jun 2018 15:41:03 GMT</pubDate>
      <guid>https://community.sap.com/t5/application-development-and-automation-discussions/how-to-avoid-the-loop-inside-loop/m-p/629716#M26383</guid>
      <dc:creator>DoanManhQuynh</dc:creator>
      <dc:date>2018-06-27T15:41:03Z</dc:date>
    </item>
  </channel>
</rss>

