<?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 in Application Development and Automation Discussions</title>
    <link>https://community.sap.com/t5/application-development-and-automation-discussions/performance/m-p/2956982#M697562</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;Please remove the SQLs like bseg, bkpf from inside the loop and move it outside&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Thanks&lt;/P&gt;&lt;P&gt;Naren&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
    <pubDate>Fri, 19 Oct 2007 04:09:02 GMT</pubDate>
    <dc:creator>Former Member</dc:creator>
    <dc:date>2007-10-19T04:09:02Z</dc:date>
    <item>
      <title>Performance</title>
      <link>https://community.sap.com/t5/application-development-and-automation-discussions/performance/m-p/2956981#M697561</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi Experts&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;     This is my coding part, Its performance is very bad, Can you tell me what changes needs to be done for improving the performance of the report.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Regards&lt;/P&gt;&lt;P&gt;Rajaram&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;FORM retrieve_data .&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Retrieve Payer Details&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  SELECT SINGLE * FROM  payr  WHERE zbukr =  p_bukrs&lt;/P&gt;&lt;P&gt;                                AND vblnr =  p_vblnr&lt;/P&gt;&lt;P&gt;                                AND gjahr =  p_gjahr&lt;/P&gt;&lt;P&gt;                                AND voidr = '00'.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt; IF sy-subrc IS NOT INITIAL.&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;   SELECT SINGLE * FROM  payr  WHERE zbukr =  p_bukrs&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;                                AND vblnr =  p_vblnr&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;                                AND gjahr =  p_gjahr.&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt; ENDIF.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;For Posting Key 29.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  PERFORM item_details_29_25.&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 level="1" type="ul"&gt;&lt;P&gt;GET data based on Clearing Documents&lt;/P&gt;&lt;/LI&gt;&lt;UL&gt;&lt;UL&gt;&lt;UL&gt;&lt;UL&gt;&lt;UL&gt;&lt;UL&gt;&lt;UL&gt;&lt;UL&gt;&lt;UL&gt;&lt;UL&gt;&lt;UL&gt;&lt;UL&gt;&lt;LI level="13" type="ul"&gt;&lt;P&gt; IF sy-subrc NE 0.            gkb&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;/UL&gt;&lt;/UL&gt;&lt;/UL&gt;&lt;/UL&gt;&lt;/UL&gt;&lt;/UL&gt;&lt;/UL&gt;&lt;/UL&gt;&lt;/UL&gt;&lt;/UL&gt;&lt;/UL&gt;&lt;/UL&gt;&lt;P&gt;  SELECT bukrs&lt;/P&gt;&lt;P&gt;         belnr&lt;/P&gt;&lt;P&gt;         gjahr&lt;/P&gt;&lt;P&gt;         shkzg&lt;/P&gt;&lt;P&gt;         skfbt&lt;/P&gt;&lt;P&gt;         dmbtr&lt;/P&gt;&lt;P&gt;         wskto&lt;/P&gt;&lt;P&gt;         qbshb&lt;/P&gt;&lt;P&gt;         lifnr&lt;/P&gt;&lt;P&gt;         bschl&lt;/P&gt;&lt;P&gt;         nebtr&lt;/P&gt;&lt;P&gt;         FROM bseg&lt;/P&gt;&lt;P&gt;           INTO TABLE ibseg&lt;/P&gt;&lt;P&gt;          WHERE augbl = p_vblnr&lt;/P&gt;&lt;P&gt;            AND bukrs = p_bukrs&lt;/P&gt;&lt;P&gt;            AND koart = 'K'&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;             AND gjahr = p_gjahr   " gkb&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;            AND auggj = p_gjahr&lt;/P&gt;&lt;P&gt;            AND belnr NE p_vblnr.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  LOOP AT ibseg.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;    Net Amount&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;    If Amount is Credited&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;    IF ibseg-shkzg  EQ 'H'.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;      IF ibseg-skfbt IS NOT INITIAL.&lt;/P&gt;&lt;P&gt;        item-gamt    =   ibseg-skfbt.    "Gross Amt&lt;/P&gt;&lt;P&gt;      ELSE.&lt;/P&gt;&lt;P&gt;        item-gamt    =   ibseg-dmbtr.    "Gross Amt   gkb&lt;/P&gt;&lt;P&gt;      ENDIF.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;      item-otd     =   ibseg-wskto.    "Other Deductions&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;      tds&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;      SELECT SINGLE dmbtr FROM bseg INTO item-tds&lt;/P&gt;&lt;P&gt;                                       WHERE belnr EQ ibseg-belnr&lt;/P&gt;&lt;P&gt;                                             AND gjahr EQ ibseg-gjahr&lt;/P&gt;&lt;P&gt;                                             AND bukrs EQ ibseg-bukrs&lt;/P&gt;&lt;P&gt;                                             AND ktosl EQ 'WIT'.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;      IF sy-subrc NE 0.&lt;/P&gt;&lt;P&gt;        item-tds     =   ibseg-qbshb.    "TDS&lt;/P&gt;&lt;P&gt;      ENDIF.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;       ITEM-NAMT    =   IBSEG-DMBTR.    "Net Amount&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;      if tds is available tds = gross amount - other deductions&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;      IF item-otd IS INITIAL.&lt;/P&gt;&lt;P&gt;        item-namt    =   ibseg-dmbtr.    "Net Amount&lt;/P&gt;&lt;P&gt;      ELSE.&lt;/P&gt;&lt;P&gt;        item-namt    =  item-gamt  -  item-otd .&lt;/P&gt;&lt;P&gt;      ENDIF.   "if ITEM-OTD is initial.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;UL&gt;&lt;UL&gt;&lt;LI level="3" type="ul"&gt;&lt;P&gt;added by&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;/UL&gt;&lt;/UL&gt;&lt;P&gt;      IF item-namt is initial.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;         select single dmbtr from bsak into lv_dmbtr&lt;/P&gt;&lt;P&gt;                                      where bukrs = ibseg-bukrs&lt;/P&gt;&lt;P&gt;                                        and lifnr = ibseg-lifnr&lt;/P&gt;&lt;P&gt;                                        and belnr = ibseg-belnr&lt;/P&gt;&lt;P&gt;                                        and gjahr = ibseg-gjahr&lt;/P&gt;&lt;P&gt;                                        and blart LIKE 'C%'.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;           lv_dmbtr = lv_dmbtr * -1.&lt;/P&gt;&lt;P&gt;           MOVE lv_dmbtr to item-namt.&lt;/P&gt;&lt;P&gt;      ENDIF.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;      Retrieve Reference Document no and Posting date&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;      SELECT SINGLE * FROM bkpf WHERE belnr = ibseg-belnr&lt;/P&gt;&lt;P&gt;                                            AND gjahr = ibseg-gjahr.&lt;/P&gt;&lt;P&gt;      IF sy-subrc IS INITIAL.&lt;/P&gt;&lt;P&gt;        item-xblnr   =   bkpf-xblnr.    " Refernce Number&lt;/P&gt;&lt;P&gt;        item-budat   =   bkpf-budat.    "Posting Date&lt;/P&gt;&lt;P&gt;      ENDIF.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;    If amount is debited&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;    ELSEIF ibseg-shkzg  EQ 'S'.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;      IF Posting  equal to 25&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;      IF ibseg-bschl EQ  '25' .&lt;/P&gt;&lt;P&gt;        item-gamt    =   ibseg-dmbtr.    "Gross Amt&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;        tds&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;        SELECT SINGLE dmbtr FROM bseg INTO item-tds&lt;/P&gt;&lt;P&gt;                                         WHERE belnr EQ ibseg-belnr&lt;/P&gt;&lt;P&gt;                                             AND gjahr EQ ibseg-gjahr&lt;/P&gt;&lt;P&gt;                                             AND bukrs EQ ibseg-bukrs&lt;/P&gt;&lt;P&gt;                                               AND ktosl EQ 'WIT'.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;        IF sy-subrc NE 0.&lt;/P&gt;&lt;P&gt;          item-tds     =   ibseg-qbshb.    "TDS&lt;/P&gt;&lt;P&gt;        ENDIF.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;         ITEM-TDS     =   IBSEG-QBSHB.    "TDS&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;        item-otd     =   ibseg-wskto.    "Other Deductions&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;        ITEM-NAMT    =   IBSEG-NEBTR * -1.    " Net Amount&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;       if tds Value is vailable&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;        IF item-otd IS INITIAL.&lt;/P&gt;&lt;P&gt;          item-namt    =   ibseg-nebtr * -1.    "Net Amount&lt;/P&gt;&lt;P&gt;        ELSE.&lt;/P&gt;&lt;P&gt;          item-namt    =  item-gamt  -  item-otd  * -1.&lt;/P&gt;&lt;P&gt;        ENDIF.   "if ITEM-OTD is initial.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;      IF item-namt is initial.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;         select single dmbtr from bsak into lv_dmbtr&lt;/P&gt;&lt;P&gt;                                      where bukrs = ibseg-bukrs&lt;/P&gt;&lt;P&gt;                                        and lifnr = ibseg-lifnr&lt;/P&gt;&lt;P&gt;                                        and belnr = ibseg-belnr&lt;/P&gt;&lt;P&gt;                                        and gjahr = ibseg-gjahr&lt;/P&gt;&lt;P&gt;                                        and blart LIKE 'C%'.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;           lv_dmbtr = lv_dmbtr * -1.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;           MOVE lv_dmbtr to item-namt.&lt;/P&gt;&lt;P&gt;      ENDIF.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;        Retrieve Header Details&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;        SELECT SINGLE * FROM bkpf WHERE belnr = ibseg-belnr&lt;/P&gt;&lt;P&gt;                                    AND gjahr = ibseg-gjahr.&lt;/P&gt;&lt;P&gt;        IF sy-subrc IS INITIAL.&lt;/P&gt;&lt;P&gt;          item-xblnr   =   bkpf-xblnr.    " Refernce Number&lt;/P&gt;&lt;P&gt;          item-budat   =   bkpf-budat.    "Posting Date&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;     elseif ibseg-bschl eq  '27' .&lt;/P&gt;&lt;P&gt;        item-gamt    =   ibseg-dmbtr.    "Gross Amt&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;        tds&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;        select single dmbtr from bseg into item-tds&lt;/P&gt;&lt;P&gt;                                         where belnr eq ibseg-belnr&lt;/P&gt;&lt;P&gt;                                             and gjahr eq ibseg-gjahr&lt;/P&gt;&lt;P&gt;                                             and bukrs eq ibseg-bukrs&lt;/P&gt;&lt;P&gt;                                               and ktosl eq 'WIT'.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;        if sy-subrc ne 0.&lt;/P&gt;&lt;P&gt;          item-tds     =   ibseg-qbshb.    "TDS&lt;/P&gt;&lt;P&gt;        endif.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;         ITEM-TDS     =   IBSEG-QBSHB.    "TDS&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;        item-otd     =   ibseg-wskto.    "Other Deductions&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;        ITEM-NAMT    =   IBSEG-NEBTR * -1.    " Net Amount&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;       if tds Value is vailable&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;        if item-otd is initial.&lt;/P&gt;&lt;P&gt;          item-namt    =   ibseg-nebtr * -1.    "Net Amount&lt;/P&gt;&lt;P&gt;        else.&lt;/P&gt;&lt;P&gt;          item-namt    =  item-gamt  -  item-otd  * -1.&lt;/P&gt;&lt;P&gt;        endif.   "if ITEM-OTD is initial.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;      if item-namt is initial.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;         select single dmbtr from bsak into lv_dmbtr&lt;/P&gt;&lt;P&gt;                                      where bukrs = ibseg-bukrs&lt;/P&gt;&lt;P&gt;                                        and lifnr = ibseg-lifnr&lt;/P&gt;&lt;P&gt;                                        and belnr = ibseg-belnr&lt;/P&gt;&lt;P&gt;                                        and gjahr = ibseg-gjahr&lt;/P&gt;&lt;P&gt;                                        and blart like 'C%'.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;           lv_dmbtr = lv_dmbtr * -1.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;           move lv_dmbtr to item-namt.&lt;/P&gt;&lt;P&gt;      endif.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;        Retrieve Header Details&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;        select single * from bkpf where belnr = ibseg-belnr&lt;/P&gt;&lt;P&gt;                                    and gjahr = ibseg-gjahr.&lt;/P&gt;&lt;P&gt;        if sy-subrc is initial.&lt;/P&gt;&lt;P&gt;          item-xblnr   =   bkpf-xblnr.    " Refernce Number&lt;/P&gt;&lt;P&gt;          item-budat   =   bkpf-budat.    "Posting Date&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;      ELSEIF ibseg-bschl EQ  '29' .&lt;/P&gt;&lt;P&gt;        item-gamt    =   ibseg-nebtr.    "Gross Amt&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;        tds&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;        SELECT SINGLE dmbtr FROM bseg INTO item-tds&lt;/P&gt;&lt;P&gt;                                         WHERE belnr EQ ibseg-belnr&lt;/P&gt;&lt;P&gt;                                             AND gjahr EQ ibseg-gjahr&lt;/P&gt;&lt;P&gt;                                             AND bukrs EQ ibseg-bukrs&lt;/P&gt;&lt;P&gt;                                               AND ktosl EQ 'WIT'.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;        IF sy-subrc NE 0.&lt;/P&gt;&lt;P&gt;          item-tds     =   ibseg-qbshb.    "TDS&lt;/P&gt;&lt;P&gt;        ENDIF.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;         ITEM-TDS     =   IBSEG-QBSHB.    "TDS&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;        item-otd     =   ibseg-wskto.    "Other Deductions&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;        ITEM-NAMT    =   IBSEG-NEBTR * -1.    " Net Amount&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;       if tds Value is vailable&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;        IF item-otd IS INITIAL.&lt;/P&gt;&lt;P&gt;          item-namt    =   ibseg-dmbtr * -1.    "Net Amount&lt;/P&gt;&lt;P&gt;        ELSE.&lt;/P&gt;&lt;P&gt;          item-namt    =  item-gamt  -  item-otd  * -1.&lt;/P&gt;&lt;P&gt;        ENDIF.   "if ITEM-OTD is initial.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;        Retrieve Header Details&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;        SELECT SINGLE * FROM bkpf WHERE belnr = ibseg-belnr&lt;/P&gt;&lt;P&gt;                                    AND gjahr = ibseg-gjahr.&lt;/P&gt;&lt;P&gt;        IF sy-subrc IS INITIAL.&lt;/P&gt;&lt;P&gt;          item-xblnr   =   bkpf-xblnr.    " Refernce Number&lt;/P&gt;&lt;P&gt;          item-budat   =   bkpf-budat.    "Posting Date&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;        ENDIF.&lt;/P&gt;&lt;P&gt;****gkb&lt;/P&gt;&lt;P&gt;      ELSEIF ibseg-bschl EQ  '21' .&lt;/P&gt;&lt;P&gt;        item-gamt    =   ibseg-dmbtr.    "Gross Amt&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;        tds&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;        SELECT SINGLE dmbtr FROM bseg INTO item-tds&lt;/P&gt;&lt;P&gt;                                         WHERE belnr EQ ibseg-belnr&lt;/P&gt;&lt;P&gt;                                             AND gjahr EQ ibseg-gjahr&lt;/P&gt;&lt;P&gt;                                             AND bukrs EQ ibseg-bukrs&lt;/P&gt;&lt;P&gt;                                               AND ktosl EQ 'WIT'.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;        IF sy-subrc NE 0.&lt;/P&gt;&lt;P&gt;          item-tds     =   ibseg-qbshb.    "TDS&lt;/P&gt;&lt;P&gt;        ENDIF.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;         ITEM-TDS     =   IBSEG-QBSHB.    "TDS&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;        item-otd     =   ibseg-wskto.    "Other Deductions&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;        ITEM-NAMT    =   IBSEG-NEBTR * -1.    " Net Amount&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;       if tds Value is vailable&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;        IF item-otd IS INITIAL.&lt;/P&gt;&lt;P&gt;          item-namt    =   ibseg-dmbtr * -1.    "Net Amount&lt;/P&gt;&lt;P&gt;        ELSE.&lt;/P&gt;&lt;P&gt;          item-namt    =  item-gamt  -  item-otd  * -1.&lt;/P&gt;&lt;P&gt;        ENDIF.   "if ITEM-OTD is initial.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;        Retrieve Header Details&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;        SELECT SINGLE * FROM bkpf WHERE belnr = ibseg-belnr&lt;/P&gt;&lt;P&gt;                                    AND gjahr = ibseg-gjahr.&lt;/P&gt;&lt;P&gt;        IF sy-subrc IS INITIAL.&lt;/P&gt;&lt;P&gt;          item-xblnr   =   bkpf-xblnr.    " Refernce Number&lt;/P&gt;&lt;P&gt;          item-budat   =   bkpf-budat.    "Posting Date&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;        ENDIF.&lt;/P&gt;&lt;P&gt;****gkb&lt;/P&gt;&lt;P&gt;      ELSEIF ibseg-bschl EQ  '26'.&lt;/P&gt;&lt;P&gt;        CLEAR bseg.&lt;/P&gt;&lt;P&gt;        SELECT SINGLE * FROM bseg&lt;/P&gt;&lt;P&gt;                        WHERE augbl = ibseg-belnr&lt;/P&gt;&lt;P&gt;                          AND bukrs = p_bukrs&lt;/P&gt;&lt;P&gt;                          AND gjahr = ibseg-gjahr&lt;/P&gt;&lt;P&gt;                          AND belnr NE ibseg-belnr.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;        SELECT shkzg&lt;/P&gt;&lt;P&gt;               dmbtr&lt;/P&gt;&lt;P&gt;               qbshb&lt;/P&gt;&lt;P&gt;               wskto&lt;/P&gt;&lt;P&gt;               nebtr&lt;/P&gt;&lt;P&gt;             FROM bseg&lt;/P&gt;&lt;P&gt;             INTO CORRESPONDING FIELDS OF TABLE ibsegz&lt;/P&gt;&lt;P&gt;                        WHERE augbl = ibseg-belnr&lt;/P&gt;&lt;P&gt;                          AND bukrs = p_bukrs&lt;/P&gt;&lt;P&gt;                          AND auggj = ibseg-gjahr&lt;/P&gt;&lt;P&gt;                          AND belnr NE ibseg-belnr.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;        LOOP AT ibsegz.&lt;/P&gt;&lt;P&gt;          ibsegy-dmbtr  = ibsegz-dmbtr .&lt;/P&gt;&lt;P&gt;          ibsegy-qbshb  = ibsegz-qbshb.&lt;/P&gt;&lt;P&gt;          ibsegy-wskto  = ibsegz-wskto.&lt;/P&gt;&lt;P&gt;          ibsegy-nebtr  = ibsegz-nebtr.&lt;/P&gt;&lt;P&gt;          COLLECT ibsegy.&lt;/P&gt;&lt;UL&gt;&lt;UL&gt;&lt;LI level="2" type="ul"&gt;&lt;P&gt;         COLLECT ibsegz into ibsegy.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;/UL&gt;&lt;P&gt;          CLEAR : ibsegz.&lt;/P&gt;&lt;P&gt;        ENDLOOP.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;        LOOP AT ibsegy.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;          item-gamt    =   ibsegy-dmbtr.    "Gross Amt&lt;/P&gt;&lt;P&gt;          item-tds     =   ibsegy-qbshb.    "TDS&lt;/P&gt;&lt;P&gt;          item-otd     =   ibsegy-wskto.    "Other Deductions&lt;/P&gt;&lt;P&gt;          item-namt    =   ibsegy-nebtr *  -1.    "Net Amount&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;          IF ibsegy-dmbtr EQ ibsegy-nebtr.&lt;/P&gt;&lt;P&gt;            ibsegy-nebtr = ibsegy-dmbtr - ibsegy-qbshb.&lt;/P&gt;&lt;P&gt;          ENDIF.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;        if tds is not initial.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;          IF item-otd IS INITIAL.&lt;/P&gt;&lt;P&gt;            item-namt    =   ibsegy-dmbtr *  -1.    "Net Amount&lt;/P&gt;&lt;P&gt;          ELSE.&lt;/P&gt;&lt;P&gt;            item-namt    =  item-gamt  -  item-otd  * -1.&lt;/P&gt;&lt;P&gt;          ENDIF.   "if ITEM-OTD is initial.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;          CLEAR: ibsegy.&lt;/P&gt;&lt;P&gt;        ENDLOOP.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;        Retrieve Header Details&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;        SELECT SINGLE * FROM bkpf WHERE belnr = bseg-belnr&lt;/P&gt;&lt;P&gt;                                     AND gjahr = bseg-gjahr.&lt;/P&gt;&lt;P&gt;        IF sy-subrc IS INITIAL.&lt;/P&gt;&lt;P&gt;          item-xblnr   =   bkpf-xblnr.    " Refernce Number&lt;/P&gt;&lt;P&gt;          item-budat   =   bkpf-budat.    "Posting Date&lt;/P&gt;&lt;P&gt;        ENDIF.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;        REFRESH : ibsegy,&lt;/P&gt;&lt;P&gt;                  ibsegz.&lt;/P&gt;&lt;P&gt;****gkb&lt;/P&gt;&lt;P&gt;      ELSE.&lt;/P&gt;&lt;P&gt;        CLEAR bseg.&lt;/P&gt;&lt;P&gt;        SELECT SINGLE * FROM bseg&lt;/P&gt;&lt;P&gt;                        WHERE augbl = ibseg-belnr&lt;/P&gt;&lt;P&gt;                          AND bukrs = p_bukrs&lt;/P&gt;&lt;P&gt;                          AND gjahr = ibseg-gjahr&lt;/P&gt;&lt;P&gt;                          AND belnr NE ibseg-belnr.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;        SELECT shkzg&lt;/P&gt;&lt;P&gt;               dmbtr&lt;/P&gt;&lt;P&gt;               qbshb&lt;/P&gt;&lt;P&gt;               wskto&lt;/P&gt;&lt;P&gt;               nebtr&lt;/P&gt;&lt;P&gt;        FROM bseg&lt;/P&gt;&lt;P&gt;        INTO CORRESPONDING FIELDS OF TABLE ibsegz&lt;/P&gt;&lt;P&gt;                        WHERE augbl = ibseg-belnr&lt;/P&gt;&lt;P&gt;                          AND bukrs = p_bukrs&lt;/P&gt;&lt;P&gt;                          AND auggj = ibseg-gjahr&lt;/P&gt;&lt;P&gt;                          AND belnr NE ibseg-belnr.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;        LOOP AT ibsegz.&lt;/P&gt;&lt;P&gt;          IF ibsegz-shkzg = 'H'.&lt;/P&gt;&lt;P&gt;            ibsegy-dmbtr  = ibsegz-dmbtr * -1 .&lt;/P&gt;&lt;P&gt;          ELSE.&lt;/P&gt;&lt;P&gt;            ibsegy-dmbtr  = ibsegz-dmbtr .&lt;/P&gt;&lt;P&gt;          ENDIF.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;          ibsegy-qbshb  = ibsegz-qbshb.&lt;/P&gt;&lt;P&gt;          ibsegy-wskto  = ibsegz-wskto.&lt;/P&gt;&lt;P&gt;          ibsegy-nebtr  = ibsegz-nebtr.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;          COLLECT ibsegy.&lt;/P&gt;&lt;P&gt;          CLEAR : ibsegz.&lt;/P&gt;&lt;P&gt;        ENDLOOP.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;        LOOP AT ibsegy.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;          item-gamt    =   ibsegy-dmbtr.    "Gross Amt&lt;/P&gt;&lt;P&gt;          item-tds     =   ibsegy-qbshb.    "TDS&lt;/P&gt;&lt;P&gt;          item-otd     =   ibsegy-wskto.    "Other Deductions&lt;/P&gt;&lt;UL&gt;&lt;UL&gt;&lt;UL&gt;&lt;UL&gt;&lt;LI level="4" type="ul"&gt;&lt;P&gt;         item-namt    =   ibsegy-nebtr *  -1.    "Net Amount&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;/UL&gt;&lt;/UL&gt;&lt;/UL&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;          IF ibsegy-dmbtr EQ ibsegy-nebtr.&lt;/P&gt;&lt;P&gt;            ibsegy-nebtr = ibsegy-dmbtr - ibsegy-qbshb.&lt;/P&gt;&lt;P&gt;          ENDIF.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;        if tds is not initial.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;          IF item-otd IS INITIAL.&lt;/P&gt;&lt;UL&gt;&lt;UL&gt;&lt;LI level="2" type="ul"&gt;&lt;P&gt;           item-namt    =   ibsegy-nebtr *  -1.    "Net Amount&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;/UL&gt;&lt;P&gt;            item-namt    =   ibsegy-dmbtr *  -1.    "Net Amount&lt;/P&gt;&lt;P&gt;          ELSE.&lt;/P&gt;&lt;P&gt;            item-namt    =  item-gamt  -  item-otd  * -1.&lt;/P&gt;&lt;P&gt;          ENDIF.   "if ITEM-OTD is initial.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;          CLEAR: ibsegy.&lt;/P&gt;&lt;P&gt;        ENDLOOP.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;        Retrieve Header Details&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;        SELECT SINGLE * FROM bkpf WHERE belnr = bseg-belnr&lt;/P&gt;&lt;P&gt;                                     AND gjahr = bseg-gjahr.&lt;/P&gt;&lt;P&gt;        IF sy-subrc IS INITIAL.&lt;/P&gt;&lt;P&gt;          item-xblnr   =   bkpf-xblnr.    " Refernce Number&lt;/P&gt;&lt;P&gt;          item-budat   =   bkpf-budat.    "Posting Date&lt;/P&gt;&lt;P&gt;        ENDIF.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;        REFRESH : ibsegy,&lt;/P&gt;&lt;P&gt;                  ibsegz.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;      ENDIF.   "IF IBSEG-BSCHL EQ  '25'&lt;/P&gt;&lt;P&gt;    ENDIF.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    APPEND item.&lt;/P&gt;&lt;P&gt;    CLEAR item.&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;*****&lt;/P&gt;&lt;P&gt;  IF count = 0.&lt;/P&gt;&lt;P&gt;    SELECT shkzg&lt;/P&gt;&lt;P&gt;           skfbt&lt;/P&gt;&lt;P&gt;           dmbtr&lt;/P&gt;&lt;P&gt;           wskto&lt;/P&gt;&lt;P&gt;           belnr&lt;/P&gt;&lt;P&gt;           gjahr&lt;/P&gt;&lt;P&gt;           bukrs&lt;/P&gt;&lt;P&gt;           qbshb&lt;/P&gt;&lt;P&gt;           lifnr&lt;/P&gt;&lt;P&gt;           bschl&lt;/P&gt;&lt;P&gt;           nebtr&lt;/P&gt;&lt;P&gt;            FROM bseg&lt;/P&gt;&lt;P&gt;             INTO TABLE ibsegx&lt;/P&gt;&lt;P&gt;              WHERE bukrs = p_bukrs&lt;/P&gt;&lt;P&gt;              AND belnr = p_vblnr&lt;/P&gt;&lt;P&gt;              AND gjahr = p_gjahr&lt;/P&gt;&lt;P&gt;              AND bschl = '50'&lt;/P&gt;&lt;P&gt;              AND qsskz NE ' '.&lt;/P&gt;&lt;P&gt;  ENDIF.&lt;/P&gt;&lt;P&gt;****&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  IF NOT ibsegx[] IS INITIAL.&lt;/P&gt;&lt;P&gt;    LOOP AT ibsegx.&lt;/P&gt;&lt;P&gt;      item-tds     =   ibsegx-dmbtr.    "TDS&lt;/P&gt;&lt;P&gt;      item-namt    =   ibsegx-dmbtr  * -1.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;        Retrieve Header Details&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;      SELECT SINGLE * FROM bkpf WHERE belnr = ibsegx-belnr&lt;/P&gt;&lt;P&gt;                                  AND gjahr = ibsegx-gjahr.&lt;/P&gt;&lt;P&gt;      IF sy-subrc IS INITIAL.&lt;/P&gt;&lt;P&gt;        IF NOT bkpf-xblnr IS INITIAL.&lt;/P&gt;&lt;P&gt;          item-xblnr   =   bkpf-xblnr.    " Refernce Number&lt;/P&gt;&lt;P&gt;        ELSE.&lt;/P&gt;&lt;P&gt;          item-xblnr   = 'TDS on Payment'.&lt;/P&gt;&lt;P&gt;        ENDIF.&lt;/P&gt;&lt;P&gt;        item-budat   =   bkpf-budat.    "Posting Date&lt;/P&gt;&lt;P&gt;      ENDIF.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;      APPEND item.&lt;/P&gt;&lt;P&gt;      CLEAR item.&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;&lt;/P&gt;&lt;UL&gt;&lt;UL&gt;&lt;UL&gt;&lt;UL&gt;&lt;UL&gt;&lt;UL&gt;&lt;UL&gt;&lt;LI level="7" type="ul"&gt;&lt;P&gt; ENDIF.                      gkb&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;/UL&gt;&lt;/UL&gt;&lt;/UL&gt;&lt;/UL&gt;&lt;/UL&gt;&lt;/UL&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;IF item[] IS INITIAL.&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;RETRIEVE ITEM DETAILS.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  SELECT * FROM bseg&lt;/P&gt;&lt;P&gt;           WHERE belnr = p_vblnr&lt;/P&gt;&lt;P&gt;             AND gjahr = p_gjahr&lt;/P&gt;&lt;P&gt;             AND koart = 'K'&lt;/P&gt;&lt;P&gt;             AND bukrs = p_bukrs&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;              AND bschl = '25'.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;           AND bschl IN ('25','38')&lt;/P&gt;&lt;P&gt;           AND augbl NE p_vblnr.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    PERFORM get_refdoc.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    item-xblnr   =   bkpf-xblnr.    " Refernce Number&lt;/P&gt;&lt;P&gt;    item-budat   =   bkpf-budat.    "Posting Date&lt;/P&gt;&lt;P&gt;    item-gamt    =   bseg-dmbtr.    "Gross Amt&lt;/P&gt;&lt;P&gt;    item-tds     =   bseg-qbshb.    "TDS&lt;/P&gt;&lt;P&gt;    item-otd     =   bseg-wskto.    "Other Deductions&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;     ITEM-NAMT    =   BSEG-NEBTR.    " Net Amount&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;    if tds is not initial&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    IF item-otd IS INITIAL.&lt;/P&gt;&lt;P&gt;      item-namt    =   bseg-nebtr.    "Net Amount&lt;/P&gt;&lt;P&gt;    ELSE.&lt;/P&gt;&lt;P&gt;      item-namt    =  item-gamt  -  item-otd.&lt;/P&gt;&lt;P&gt;    ENDIF.   "if ITEM-OTD is initial.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    COLLECT item.&lt;/P&gt;&lt;P&gt;    CLEAR item.&lt;/P&gt;&lt;P&gt;  ENDSELECT.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt; ENDIF.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt; IF TDS IS DEDUCTED DURING PAYMENT DOCUMENT CREATION -&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;ENDFORM.                    " Retrieve_data&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Fri, 19 Oct 2007 04:07:26 GMT</pubDate>
      <guid>https://community.sap.com/t5/application-development-and-automation-discussions/performance/m-p/2956981#M697561</guid>
      <dc:creator>Former Member</dc:creator>
      <dc:date>2007-10-19T04:07:26Z</dc:date>
    </item>
    <item>
      <title>Re: Performance</title>
      <link>https://community.sap.com/t5/application-development-and-automation-discussions/performance/m-p/2956982#M697562</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;Please remove the SQLs like bseg, bkpf from inside the loop and move it outside&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Thanks&lt;/P&gt;&lt;P&gt;Naren&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Fri, 19 Oct 2007 04:09:02 GMT</pubDate>
      <guid>https://community.sap.com/t5/application-development-and-automation-discussions/performance/m-p/2956982#M697562</guid>
      <dc:creator>Former Member</dc:creator>
      <dc:date>2007-10-19T04:09:02Z</dc:date>
    </item>
    <item>
      <title>Re: Performance</title>
      <link>https://community.sap.com/t5/application-development-and-automation-discussions/performance/m-p/2956983#M697563</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Instead of removing it from loop, can i use BSIK and BSAK tables inside the loop.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;because i need to do these operations within the loop.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;And what are the other statements which mainly affect the performance badly.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;And give me the suggestions to improve it.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Regards&lt;/P&gt;&lt;P&gt;Rajaram&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Fri, 19 Oct 2007 04:16:09 GMT</pubDate>
      <guid>https://community.sap.com/t5/application-development-and-automation-discussions/performance/m-p/2956983#M697563</guid>
      <dc:creator>Former Member</dc:creator>
      <dc:date>2007-10-19T04:16:09Z</dc:date>
    </item>
    <item>
      <title>Re: Performance</title>
      <link>https://community.sap.com/t5/application-development-and-automation-discussions/performance/m-p/2956984#M697564</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;If your starting point for the selection is Clearing document number, then first select records from BSAK. From BSAK go to BSEG and use all the keys. BSEG is a cluster table , never try to fetch records from here without all the keys.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Avoid repeated select in BSEG.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;if you do this , the performance will improve 90 percent.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Dont forget to reward with points .&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Fri, 19 Oct 2007 06:55:41 GMT</pubDate>
      <guid>https://community.sap.com/t5/application-development-and-automation-discussions/performance/m-p/2956984#M697564</guid>
      <dc:creator>Former Member</dc:creator>
      <dc:date>2007-10-19T06:55:41Z</dc:date>
    </item>
    <item>
      <title>Re: Performance</title>
      <link>https://community.sap.com/t5/application-development-and-automation-discussions/performance/m-p/2956985#M697565</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi Rajaram,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;First, you should clean up your code and modularize your code so it is easier to understand and maintain. Then you may see problem areas easier.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;For example, your main ibseg loop should look like:&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;LOOP AT ibseg.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;If Amount is Credited&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  IF ibseg-shkzg EQ 'H'.&lt;/P&gt;&lt;P&gt;    PERFORM DO_CREDIT.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;If amount is debited&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  ELSEIF ibseg-shkzg EQ 'S'.&lt;/P&gt;&lt;P&gt;    PERFORM DO_DEBIT.&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;  APPEND item.&lt;/P&gt;&lt;P&gt;  CLEAR item.&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;Your forms shouldn't be more than a couple of pages long.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Also, I went through your code and you can reduce the amount of code by 70%. There is a lot of redundant code in your program.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Your     IF ibseg-bschl EQ '25'  and     &lt;/P&gt;&lt;P&gt;           ELSEIF ibseg-bschl EQ '27'  are identical and can be reduced to one routine.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Your "TDS" routine occurs 5 times in your code. Code it once in a form and call the form.&lt;/P&gt;&lt;P&gt;     SELECT SINGLE dmbtr FROM bseg INTO item-tds&lt;/P&gt;&lt;P&gt;        WHERE belnr EQ ibseg-belnr&lt;/P&gt;&lt;P&gt;          AND gjahr EQ ibseg-gjahr&lt;/P&gt;&lt;P&gt;          AND bukrs EQ ibseg-bukrs&lt;/P&gt;&lt;P&gt;          AND ktosl EQ 'WIT'.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;     IF sy-subrc NE 0.&lt;/P&gt;&lt;P&gt;       item-tds = ibseg-qbshb. "TDS&lt;/P&gt;&lt;P&gt;     ENDIF.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Your Get Header Details occurs 8 times, 5 times are identical, 2 are the same and 1 is slightly different.&lt;/P&gt;&lt;P&gt;If you call it from a routine and pass the belnr and gjahr, you can create one form with parameters and call it 8 times.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;      SELECT SINGLE * FROM bkpf &lt;/P&gt;&lt;P&gt;          WHERE belnr = ibseg-belnr&lt;/P&gt;&lt;P&gt;            AND gjahr = ibseg-gjahr.&lt;/P&gt;&lt;P&gt;      IF sy-subrc IS INITIAL.&lt;/P&gt;&lt;P&gt;         item-xblnr = bkpf-xblnr. " Refernce Number&lt;/P&gt;&lt;P&gt;         item-budat = bkpf-budat. "Posting Date&lt;/P&gt;&lt;P&gt;      ENDIF.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;I'm not sure how your program works with sy-subrc is initial. Initial is not the same as 0. You should change it regardless &lt;/P&gt;&lt;P&gt;as initial normally means empty not 0.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;These suggestions don't necessarily make the code faster, just better coding practice.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Some performance suggestions though:&lt;/P&gt;&lt;P&gt;- use INTO TABLE rather than CORRESPONDING FIELDS OF. This means you have to change the fields of your internal table to &lt;/P&gt;&lt;P&gt;  match the order of your fields in the SELECT statement.&lt;/P&gt;&lt;P&gt;- using LIKE 'C%' is not recommended. Instead you should put all the doc types in a range table or code it like:&lt;/P&gt;&lt;P&gt;  AND BLART in ('C1', 'C2', 'C3') and so on, how ever many you have. &lt;/P&gt;&lt;P&gt;- as suggested use other tables rather than BSEG when possible.&lt;/P&gt;&lt;P&gt;- use of Select * is not preferred, specifying fields is better, but Select single * is not too bad&lt;/P&gt;&lt;P&gt;- look at your Selects and try to make sure the tables you use have indexes on the fields in your where clause. You&lt;/P&gt;&lt;P&gt;  may need to create new indexes but this is a last resort and requires careful examination of your code.&lt;/P&gt;&lt;P&gt;  &lt;/P&gt;&lt;P&gt;Well, I hope this helps. &lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Filler&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Sun, 21 Oct 2007 06:46:56 GMT</pubDate>
      <guid>https://community.sap.com/t5/application-development-and-automation-discussions/performance/m-p/2956985#M697565</guid>
      <dc:creator>Former Member</dc:creator>
      <dc:date>2007-10-21T06:46:56Z</dc:date>
    </item>
    <item>
      <title>Re: Performance</title>
      <link>https://community.sap.com/t5/application-development-and-automation-discussions/performance/m-p/2956986#M697566</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Please run this through ST05. This will help you find any SQL problems.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Rob&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Sun, 21 Oct 2007 15:42:32 GMT</pubDate>
      <guid>https://community.sap.com/t5/application-development-and-automation-discussions/performance/m-p/2956986#M697566</guid>
      <dc:creator>Former Member</dc:creator>
      <dc:date>2007-10-21T15:42:32Z</dc:date>
    </item>
  </channel>
</rss>

