<?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/2925424#M689138</link>
    <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi&lt;/P&gt;&lt;P&gt;You are writing so many select statements to BSEG which is not good&lt;/P&gt;&lt;P&gt;and in the where condition give the fey fields first and then other fields&lt;/P&gt;&lt;P&gt;why can't you check the tables BSIK and BSAK fields instead of BSEG and BKPF tables which also holds good the data of Vendor payments&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;see the doc&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;1) Dont use nested select statements&lt;/P&gt;&lt;P&gt;2) If possible use for all entries in addition&lt;/P&gt;&lt;P&gt;3) In the where addition make sure you give all the primary key&lt;/P&gt;&lt;P&gt;4) Use Index for the selection criteria.&lt;/P&gt;&lt;P&gt;5) You can also use inner joins&lt;/P&gt;&lt;P&gt;6) You can try to put the data from the first select statement into an Itab and then in order to select the data from the second table use for all entries in.&lt;/P&gt;&lt;P&gt;7) Use the runtime analysis SE30 and SQL Trace (ST05) to identify the performance and also to identify where the load is heavy, so that you can change the code accordingly&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;A href="https://www.sdn.sap.com/irj/servlet/prt/portal/prtroot/docs/library/uuid/5d0db4c9-0e01-0010-b68f-9b1408d5f234" target="test_blank"&gt;https://www.sdn.sap.com/irj/servlet/prt/portal/prtroot/docs/library/uuid/5d0db4c9-0e01-0010-b68f-9b1408d5f234&lt;/A&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;ABAP performance depends upon various factors and in devicded in three parts:&lt;/P&gt;&lt;P&gt;1. Database&lt;/P&gt;&lt;P&gt;2. ABAP &lt;/P&gt;&lt;P&gt;3. System&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Run Any program using SE30 (performance analys) to improve performance refer to tips and trics section of SE30, Always remember that ABAP perfirmance is improved when there is least load on Database.&lt;/P&gt;&lt;P&gt;u can get an interactive grap in SE30 regarding this with a file.&lt;/P&gt;&lt;P&gt;also if u find runtime of parts of codes then use :&lt;/P&gt;&lt;P&gt;Switch on RTA Dynamically within ABAP Code &lt;/P&gt;&lt;P&gt;*To turn runtim analysis on within ABAP code insert the following code&lt;/P&gt;&lt;P&gt;SET RUN TIME ANALYZER ON.&lt;/P&gt;&lt;P&gt;*To turn runtim analysis off within ABAP code insert the following code&lt;/P&gt;&lt;P&gt;SET RUN TIME ANALYZER OFF.&lt;/P&gt;&lt;P&gt;Always check the driver internal tables is not empty, while using FOR ALL ENTRIES&lt;/P&gt;&lt;P&gt;Avoid for all entries in JOINS&lt;/P&gt;&lt;P&gt;Try to avoid joins and use FOR ALL ENTRIES.&lt;/P&gt;&lt;P&gt;Try to restrict the joins to 1 level only ie only for tables&lt;/P&gt;&lt;P&gt;Avoid using Select *.&lt;/P&gt;&lt;P&gt;Avoid having multiple Selects from the same table in the same object.&lt;/P&gt;&lt;P&gt;Try to minimize the number of variables to save memory. &lt;/P&gt;&lt;P&gt;The sequence of fields in 'where clause' must be as per primary/secondary index ( if any)&lt;/P&gt;&lt;P&gt;Avoid creation of index as far as possible&lt;/P&gt;&lt;P&gt;Avoid operators like &amp;lt;&amp;gt;, &amp;gt; , &amp;lt; &amp;amp; like % in where clause conditions&lt;/P&gt;&lt;P&gt;Avoid select/select single statements in loops.&lt;/P&gt;&lt;P&gt;Try to use 'binary search' in READ internal table. Ensure table is sorted before using BINARY SEARCH.&lt;/P&gt;&lt;P&gt;Avoid using aggregate functions (SUM, MAX etc) in selects ( GROUP BY , HAVING,) &lt;/P&gt;&lt;P&gt;Avoid using ORDER BY in selects&lt;/P&gt;&lt;P&gt;Avoid Nested Selects &lt;/P&gt;&lt;P&gt;Avoid Nested Loops of Internal Tables&lt;/P&gt;&lt;P&gt;Try to use FIELD SYMBOLS.&lt;/P&gt;&lt;P&gt;Try to avoid into Corresponding Fields of&lt;/P&gt;&lt;P&gt;Avoid using Select Distinct, Use DELETE ADJACENT&lt;/P&gt;&lt;P&gt;Check the following Links&lt;/P&gt;&lt;P&gt;&lt;A class="jive_macro jive_macro_message" href="https://community.sap.com/" __jive_macro_name="message" modifiedtitle="true" __default_attr="1591512"&gt;&lt;/A&gt;&lt;/P&gt;&lt;P&gt;&lt;A class="jive_macro jive_macro_message" href="https://community.sap.com/" __jive_macro_name="message" modifiedtitle="true" __default_attr="1429297"&gt;&lt;/A&gt;&lt;/P&gt;&lt;P&gt;&lt;A href="http://www.sapgenie.com/abap/performance.htm" target="test_blank"&gt;http://www.sapgenie.com/abap/performance.htm&lt;/A&gt;&lt;/P&gt;&lt;P&gt;&lt;A href="http://www.thespot4sap.com/Articles/SAPABAPPerformanceTuning_PerformanceAnalysisTools.asp" target="test_blank"&gt;http://www.thespot4sap.com/Articles/SAPABAPPerformanceTuning_PerformanceAnalysisTools.asp&lt;/A&gt;&lt;/P&gt;&lt;P&gt;check the below link&lt;/P&gt;&lt;P&gt;&lt;A href="http://www.sap-img.com/abap/performance-tuning-for-data-selection-statement.htm" target="test_blank"&gt;http://www.sap-img.com/abap/performance-tuning-for-data-selection-statement.htm&lt;/A&gt;&lt;/P&gt;&lt;P&gt;See the following link if it's any help:&lt;/P&gt;&lt;P&gt;&lt;A href="http://www.thespot4sap.com/Articles/SAPABAPPerformanceTuning_PerformanceAnalysisTools.asp" target="test_blank"&gt;http://www.thespot4sap.com/Articles/SAPABAPPerformanceTuning_PerformanceAnalysisTools.asp&lt;/A&gt;&lt;/P&gt;&lt;P&gt;Check also &lt;A href="http://service.sap.com/performance" target="test_blank"&gt;http://service.sap.com/performance&lt;/A&gt;&lt;/P&gt;&lt;P&gt;and &lt;/P&gt;&lt;P&gt;books like&lt;/P&gt;&lt;P&gt;&lt;A href="http://www.sap-press.com/product.cfm?account=&amp;amp;product=H951" target="test_blank"&gt;http://www.sap-press.com/product.cfm?account=&amp;amp;product=H951&lt;/A&gt;&lt;/P&gt;&lt;P&gt;&lt;A href="http://www.sap-press.com/product.cfm?account=&amp;amp;product=H973" target="test_blank"&gt;http://www.sap-press.com/product.cfm?account=&amp;amp;product=H973&lt;/A&gt;&lt;/P&gt;&lt;P&gt;&lt;A href="http://www.sap-img.com/abap/more-than-100-abap-interview-faqs.htm" target="test_blank"&gt;http://www.sap-img.com/abap/more-than-100-abap-interview-faqs.htm&lt;/A&gt;&lt;/P&gt;&lt;P&gt;&lt;A href="http://www.thespot4sap.com/Articles/SAPABAPPerformanceTuning_PerformanceAnalysisTools.asp" target="test_blank"&gt;http://www.thespot4sap.com/Articles/SAPABAPPerformanceTuning_PerformanceAnalysisTools.asp&lt;/A&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Performance tuning for Data Selection Statement &lt;/P&gt;&lt;P&gt;&lt;A href="http://www.sap-img.com/abap/performance-tuning-for-data-selection-statement.htm" target="test_blank"&gt;http://www.sap-img.com/abap/performance-tuning-for-data-selection-statement.htm&lt;/A&gt;&lt;/P&gt;&lt;P&gt;Debugger&lt;/P&gt;&lt;P&gt;&lt;A href="http://help.sap.com/saphelp_47x200/helpdata/en/c6/617ca9e68c11d2b2ab080009b43351/content.htm" target="test_blank"&gt;http://help.sap.com/saphelp_47x200/helpdata/en/c6/617ca9e68c11d2b2ab080009b43351/content.htm&lt;/A&gt;&lt;/P&gt;&lt;P&gt;&lt;A href="http://www.cba.nau.edu/haney-j/CIS497/Assignments/Debugging.doc" target="test_blank"&gt;http://www.cba.nau.edu/haney-j/CIS497/Assignments/Debugging.doc&lt;/A&gt;&lt;/P&gt;&lt;P&gt;&lt;A href="http://help.sap.com/saphelp_erp2005/helpdata/en/b3/d322540c3beb4ba53795784eebb680/frameset.htm" target="test_blank"&gt;http://help.sap.com/saphelp_erp2005/helpdata/en/b3/d322540c3beb4ba53795784eebb680/frameset.htm&lt;/A&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Run Time Analyser&lt;/P&gt;&lt;P&gt;&lt;A href="http://help.sap.com/saphelp_47x200/helpdata/en/c6/617cafe68c11d2b2ab080009b43351/content.htm" target="test_blank"&gt;http://help.sap.com/saphelp_47x200/helpdata/en/c6/617cafe68c11d2b2ab080009b43351/content.htm&lt;/A&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;SQL trace&lt;/P&gt;&lt;P&gt;&lt;A href="http://help.sap.com/saphelp_47x200/helpdata/en/d1/801f7c454211d189710000e8322d00/content.htm" target="test_blank"&gt;http://help.sap.com/saphelp_47x200/helpdata/en/d1/801f7c454211d189710000e8322d00/content.htm&lt;/A&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;CATT - Computer Aided Testing Too&lt;/P&gt;&lt;P&gt;&lt;A href="http://help.sap.com/saphelp_47x200/helpdata/en/b3/410b37233f7c6fe10000009b38f936/frameset.htm" target="test_blank"&gt;http://help.sap.com/saphelp_47x200/helpdata/en/b3/410b37233f7c6fe10000009b38f936/frameset.htm&lt;/A&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Test Workbench&lt;/P&gt;&lt;P&gt;&lt;A href="http://help.sap.com/saphelp_47x200/helpdata/en/a8/157235d0fa8742e10000009b38f889/frameset.htm" target="test_blank"&gt;http://help.sap.com/saphelp_47x200/helpdata/en/a8/157235d0fa8742e10000009b38f889/frameset.htm&lt;/A&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Coverage Analyser&lt;/P&gt;&lt;P&gt;&lt;A href="http://help.sap.com/saphelp_47x200/helpdata/en/c7/af9a79061a11d4b3d4080009b43351/content.htm" target="test_blank"&gt;http://help.sap.com/saphelp_47x200/helpdata/en/c7/af9a79061a11d4b3d4080009b43351/content.htm&lt;/A&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Runtime Monitor&lt;/P&gt;&lt;P&gt;&lt;A href="http://help.sap.com/saphelp_47x200/helpdata/en/b5/fa121cc15911d5993d00508b6b8b11/content.htm" target="test_blank"&gt;http://help.sap.com/saphelp_47x200/helpdata/en/b5/fa121cc15911d5993d00508b6b8b11/content.htm&lt;/A&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Memory Inspector&lt;/P&gt;&lt;P&gt;&lt;A href="http://help.sap.com/saphelp_47x200/helpdata/en/a2/e5fc84cc87964cb2c29f584152d74e/content.htm" target="test_blank"&gt;http://help.sap.com/saphelp_47x200/helpdata/en/a2/e5fc84cc87964cb2c29f584152d74e/content.htm&lt;/A&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;ECATT - Extended Computer Aided testing tool.&lt;/P&gt;&lt;P&gt;&lt;A href="http://help.sap.com/saphelp_47x200/helpdata/en/20/e81c3b84e65e7be10000000a11402f/frameset.htm" target="test_blank"&gt;http://help.sap.com/saphelp_47x200/helpdata/en/20/e81c3b84e65e7be10000000a11402f/frameset.htm&lt;/A&gt;&lt;/P&gt;&lt;P&gt;Just refer to these links...&lt;/P&gt;&lt;P&gt;&lt;A class="jive_macro jive_macro_thread" href="https://community.sap.com/" __jive_macro_name="thread" modifiedtitle="true" __default_attr="84514"&gt;&lt;/A&gt;&lt;/P&gt;&lt;P&gt;&lt;A class="jive_macro jive_macro_thread" href="https://community.sap.com/" __jive_macro_name="thread" modifiedtitle="true" __default_attr="23912"&gt;&lt;/A&gt;&lt;/P&gt;&lt;P&gt;&lt;A class="jive_macro jive_macro_thread" href="https://community.sap.com/" __jive_macro_name="thread" modifiedtitle="true" __default_attr="142272"&gt;&lt;/A&gt;&lt;/P&gt;&lt;P&gt;&lt;A class="jive_macro jive_macro_thread" href="https://community.sap.com/" __jive_macro_name="thread" modifiedtitle="true" __default_attr="131727"&gt;&lt;/A&gt;&lt;/P&gt;&lt;P&gt;&lt;A class="jive_macro jive_macro_thread" href="https://community.sap.com/" __jive_macro_name="thread" modifiedtitle="true" __default_attr="84583"&gt;&lt;/A&gt;&lt;/P&gt;&lt;P&gt;&lt;A class="jive_macro jive_macro_thread" href="https://community.sap.com/" __jive_macro_name="thread" modifiedtitle="true" __default_attr="145177"&gt;&lt;/A&gt;&lt;/P&gt;&lt;P&gt;&lt;A class="jive_macro jive_macro_thread" href="https://community.sap.com/" __jive_macro_name="thread" modifiedtitle="true" __default_attr="148874"&gt;&lt;/A&gt;&lt;/P&gt;&lt;P&gt;&lt;A class="jive_macro jive_macro_thread" href="https://community.sap.com/" __jive_macro_name="thread" modifiedtitle="true" __default_attr="151144"&gt;&lt;/A&gt;&lt;/P&gt;&lt;P&gt;You can go to the transaction SE30 to have the runtime analysis of your program.Also try the transaction SCI , which is SAP Code Inspector.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;1 Always check the driver internal tables is not empty, while using FOR ALL ENTRIES &lt;/P&gt;&lt;P&gt;2 Avoid for all entries in JOINS &lt;/P&gt;&lt;P&gt;3 Try to avoid joins and use FOR ALL ENTRIES. &lt;/P&gt;&lt;P&gt;4 Try to restrict the joins to 1 level only ie only for 2 tables &lt;/P&gt;&lt;P&gt;5 Avoid using Select *. &lt;/P&gt;&lt;P&gt;6 Avoid having multiple Selects from the same table in the same object. &lt;/P&gt;&lt;P&gt;7 Try to minimize the number of variables to save memory. &lt;/P&gt;&lt;P&gt;8 The sequence of fields in 'where clause' must be as per primary/secondary index ( if any) &lt;/P&gt;&lt;P&gt;9 Avoid creation of index as far as possible &lt;/P&gt;&lt;P&gt;10 Avoid operators like &amp;lt;&amp;gt;, &amp;gt; , &amp;lt; &amp;amp; like % in where clause conditions &lt;/P&gt;&lt;P&gt;11 Avoid select/select single statements in loops. &lt;/P&gt;&lt;P&gt;12 Try to use 'binary search' in READ internal table. Ensure table is sorted before using BINARY SEARCH. &lt;/P&gt;&lt;P&gt;13 Avoid using aggregate functions (SUM, MAX etc) in selects ( GROUP BY , HAVING,) &lt;/P&gt;&lt;P&gt;14 Avoid using ORDER BY in selects &lt;/P&gt;&lt;P&gt;15 Avoid Nested Selects &lt;/P&gt;&lt;P&gt;16 Avoid Nested Loops of Internal Tables &lt;/P&gt;&lt;P&gt;17 Try to use FIELD SYMBOLS. &lt;/P&gt;&lt;P&gt;18 Try to avoid into Corresponding Fields of &lt;/P&gt;&lt;P&gt;19 Avoid using Select Distinct, Use DELETE ADJACENT. &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;Anji&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
    <pubDate>Thu, 18 Oct 2007 11:44:54 GMT</pubDate>
    <dc:creator>Former Member</dc:creator>
    <dc:date>2007-10-18T11:44:54Z</dc:date>
    <item>
      <title>Performance</title>
      <link>https://community.sap.com/t5/application-development-and-automation-discussions/performance/m-p/2925420#M689134</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;This is done by one of my collegue, now it needs to be changed due to its bad performance. &lt;/P&gt;&lt;P&gt;Its performance is very poor, can anyone suggest me how and where to adjust to improve the performance of the report. Pls suggest me on this.&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;&lt;STRONG&gt;&amp;amp;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*&amp;amp; Report  ZPV&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;&amp;amp;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;REPORT  zpv_new.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;&amp;amp;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Data Declarations&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;STRONG&gt;&amp;amp;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;TABLES : payr, bkpf,bseg.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*DATA : ibseg  TYPE TABLE OF bseg WITH HEADER LINE.&lt;/P&gt;&lt;P&gt;*DATA : ibsegx TYPE TABLE OF bseg WITH HEADER LINE.&lt;/P&gt;&lt;P&gt;DATA : count TYPE c VALUE 0.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;DATA: BEGIN OF ibseg OCCURS 0,&lt;/P&gt;&lt;P&gt;      shkzg TYPE bseg-shkzg,&lt;/P&gt;&lt;P&gt;      skfbt TYPE bseg-skfbt,&lt;/P&gt;&lt;P&gt;      dmbtr TYPE bseg-dmbtr,&lt;/P&gt;&lt;P&gt;      wskto TYPE bseg-wskto,&lt;/P&gt;&lt;P&gt;      belnr TYPE bseg-belnr,&lt;/P&gt;&lt;P&gt;      gjahr TYPE bseg-gjahr,&lt;/P&gt;&lt;P&gt;      bukrs TYPE bseg-bukrs,&lt;/P&gt;&lt;P&gt;      qbshb TYPE bseg-qbshb,&lt;/P&gt;&lt;P&gt;      lifnr TYPE bseg-lifnr,&lt;/P&gt;&lt;P&gt;      bschl TYPE bseg-bschl,&lt;/P&gt;&lt;P&gt;      NEBTR TYPE BSEG-NEBTR,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;      END OF ibseg.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;DATA: BEGIN OF ibsegx OCCURS 0,&lt;/P&gt;&lt;P&gt;      shkzg TYPE bseg-shkzg,&lt;/P&gt;&lt;P&gt;      skfbt TYPE bseg-skfbt,&lt;/P&gt;&lt;P&gt;      dmbtr TYPE bseg-dmbtr,&lt;/P&gt;&lt;P&gt;      wskto TYPE bseg-wskto,&lt;/P&gt;&lt;P&gt;      belnr TYPE bseg-belnr,&lt;/P&gt;&lt;P&gt;      gjahr TYPE bseg-gjahr,&lt;/P&gt;&lt;P&gt;      bukrs TYPE bseg-bukrs,&lt;/P&gt;&lt;P&gt;      qbshb TYPE bseg-qbshb,&lt;/P&gt;&lt;P&gt;      lifnr TYPE bseg-lifnr,&lt;/P&gt;&lt;P&gt;      bschl TYPE bseg-bschl,&lt;/P&gt;&lt;P&gt;      NEBTR TYPE BSEG-NEBTR,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;      END OF ibsegx.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;DATA: BEGIN OF item OCCURS 0,&lt;/P&gt;&lt;P&gt;      xblnr  TYPE  bkpf-xblnr,   "Reference Document No&lt;/P&gt;&lt;P&gt;      budat  TYPE  bkpf-budat,   "Posting Date&lt;/P&gt;&lt;P&gt;      gamt   TYPE  bseg-wrbtr,   "Gross Amt&lt;/P&gt;&lt;P&gt;      tds    TYPE  bseg-wrbtr,   "TDS&lt;/P&gt;&lt;P&gt;      otd    TYPE  bseg-wrbtr,   "Other Deductions&lt;/P&gt;&lt;P&gt;      namt   TYPE  bseg-wrbtr,   "Netamount&lt;/P&gt;&lt;P&gt;      END OF item.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;DATA: BEGIN OF ibsegy OCCURS 0,&lt;/P&gt;&lt;P&gt;      dmbtr   TYPE  bseg-dmbtr,&lt;/P&gt;&lt;P&gt;      qbshb   TYPE  bseg-qbshb,&lt;/P&gt;&lt;P&gt;      wskto   TYPE  bseg-wskto,&lt;/P&gt;&lt;P&gt;      nebtr   TYPE  bseg-nebtr,&lt;/P&gt;&lt;P&gt;      END OF ibsegy.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;DATA: BEGIN OF ibsegz OCCURS 0,&lt;/P&gt;&lt;P&gt;      shkzg   TYPE  bseg-shkzg,&lt;/P&gt;&lt;P&gt;      dmbtr   TYPE  bseg-dmbtr,&lt;/P&gt;&lt;P&gt;      qbshb   TYPE  bseg-qbshb,&lt;/P&gt;&lt;P&gt;      wskto   TYPE  bseg-wskto,&lt;/P&gt;&lt;P&gt;      nebtr   TYPE  bseg-nebtr,&lt;/P&gt;&lt;P&gt;      END OF ibsegz.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;DATA: v_banks   TYPE  bnka-banks,&lt;/P&gt;&lt;P&gt;      v_bankl   TYPE  bnka-bankl,&lt;/P&gt;&lt;P&gt;      v_banka   TYPE  bnka-bankl,&lt;/P&gt;&lt;P&gt;      v_ort01   TYPE  bnka-brnch,&lt;/P&gt;&lt;P&gt;      v_sfname  TYPE  rs38l_fnam,&lt;/P&gt;&lt;P&gt;      v_shkzg   TYPE  bseg-shkzg,&lt;/P&gt;&lt;P&gt;      lv_dmbtr  TYPE  bseg-dmbtr.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;&amp;amp;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Selection-screen&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;STRONG&gt;&amp;amp;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;SELECTION-SCREEN BEGIN OF BLOCK b1 WITH FRAME TITLE text-000.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;PARAMETERS : p_bukrs  TYPE payr-zbukr OBLIGATORY DEFAULT '1000',&lt;/P&gt;&lt;P&gt;                                                    "Company Code&lt;/P&gt;&lt;P&gt;             p_vblnr  TYPE payr-vblnr OBLIGATORY,   "Voucher No&lt;/P&gt;&lt;P&gt;             p_gjahr  TYPE payr-gjahr OBLIGATORY memory id GJR.&lt;/P&gt;&lt;P&gt;                                                 " DEFAULT sy-datum+0(4)&lt;/P&gt;&lt;P&gt;.&lt;/P&gt;&lt;P&gt;"Fiscal Year&lt;/P&gt;&lt;P&gt;SELECTION-SCREEN END  OF BLOCK b1.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;&amp;amp;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Start-of-selection&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;STRONG&gt;&amp;amp;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;START-OF-SELECTION.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  PERFORM retrieve_data.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  PERFORM dispaly_smartform.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;&amp;amp;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*&amp;amp;      Form  Retrieve_data&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;&amp;amp;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&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 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 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;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;P&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;&amp;amp;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*&amp;amp;      Form  Dispaly_Smartform&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;&amp;amp;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;FORM dispaly_smartform .&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Retrieve Function Module Name&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  CALL FUNCTION 'SSF_FUNCTION_MODULE_NAME'&lt;/P&gt;&lt;P&gt;    EXPORTING&lt;/P&gt;&lt;P&gt;      formname                 =  'ZPV'&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;   VARIANT                  = ' '&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  DIRECT_CALL              = ' '&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;   IMPORTING&lt;/P&gt;&lt;P&gt;     fm_name                  =  v_sfname.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;EXCEPTIONS&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  NO_FORM                  = 1&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  NO_FUNCTION_MODULE       = 2&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  OTHERS                   = 3&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  .&lt;/P&gt;&lt;P&gt;  IF sy-subrc &amp;lt;&amp;gt; 0.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;        WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  ENDIF.&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;Call Function Module&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  CALL FUNCTION v_sfname&lt;/P&gt;&lt;P&gt;    EXPORTING&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  ARCHIVE_INDEX              =&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  ARCHIVE_INDEX_TAB          =&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  ARCHIVE_PARAMETERS         =&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  CONTROL_PARAMETERS         =&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  MAIL_APPL_OBJ              =&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  MAIL_RECIPIENT             =&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  MAIL_SENDER                =&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  OUTPUT_OPTIONS             =&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  USER_SETTINGS              = 'X'&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;      payr                       =   payr&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;IMPORTING&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  DOCUMENT_OUTPUT_INFO       =&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  JOB_OUTPUT_INFO            =&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  JOB_OUTPUT_OPTIONS         =&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;    TABLES&lt;/P&gt;&lt;P&gt;      item                       =  item[]&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;EXCEPTIONS&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  FORMATTING_ERROR           = 1&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  INTERNAL_ERROR             = 2&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  SEND_ERROR                 = 3&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  USER_CANCELED              = 4&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  OTHERS                     = 5&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;            .&lt;/P&gt;&lt;P&gt;  IF sy-subrc &amp;lt;&amp;gt; 0.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;        WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  ENDIF.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;ENDFORM.                    " Dispaly_Smartform&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;&amp;amp;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*&amp;amp;      Form  GET_REFDOC&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;&amp;amp;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;FORM get_refdoc .&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;  IF bseg-rebzg IS INITIAL.&lt;/P&gt;&lt;P&gt;    SELECT SINGLE * FROM bkpf WHERE belnr = bseg-belnr&lt;/P&gt;&lt;P&gt;                                AND gjahr = p_gjahr&lt;/P&gt;&lt;P&gt;                                AND bukrs = p_bukrs.&lt;/P&gt;&lt;P&gt;  ELSE.&lt;/P&gt;&lt;P&gt;    SELECT SINGLE * FROM bkpf WHERE belnr = bseg-rebzg&lt;/P&gt;&lt;P&gt;                                AND gjahr = p_gjahr&lt;/P&gt;&lt;P&gt;                                AND bukrs = p_bukrs.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  ENDIF.   "if bseg-bschl  eq '29'.&lt;/P&gt;&lt;P&gt;ENDFORM.                    " GET_REFDOC&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;&amp;amp;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*&amp;amp;      Form  item_details_29_25&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;&amp;amp;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;FORM item_details_29_25 .&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&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;P&gt;             AND bschl = '29'.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;            AND BSCHL IN ('29','25').&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    IF sy-subrc IS INITIAL.    " kishore 20.06.2006&lt;/P&gt;&lt;P&gt;      count = 1.&lt;/P&gt;&lt;P&gt;    ENDIF.&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;    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-otd     =   bseg-wskto.    "Other Deductions&lt;/P&gt;&lt;P&gt;    item-namt    =   bseg-nebtr.    "Netamount&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 bseg-augbl IS INITIAL .&lt;/P&gt;&lt;/LI&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;    SELECT SINGLE dmbtr shkzg FROM bseg&lt;/P&gt;&lt;P&gt;              INTO (item-tds ,v_shkzg)&lt;/P&gt;&lt;P&gt;             WHERE belnr = p_vblnr&lt;/P&gt;&lt;P&gt;               AND bukrs = p_bukrs&lt;/P&gt;&lt;P&gt;               AND gjahr = p_gjahr&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 IS INITIAL.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;      SELECT SINGLE * FROM bkpf WHERE belnr = bseg-belnr&lt;/P&gt;&lt;P&gt;                                    AND gjahr = p_gjahr&lt;/P&gt;&lt;P&gt;                                    AND bukrs = p_bukrs.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;      IF v_shkzg  EQ 'H'.&lt;/P&gt;&lt;P&gt;        IF bseg-skfbt IS INITIAL.&lt;/P&gt;&lt;P&gt;          item-namt    =  item-namt + ( item-tds  * -1 ).  "Net Amount&lt;/P&gt;&lt;P&gt;        ENDIF.&lt;/P&gt;&lt;P&gt;      ELSE.&lt;/P&gt;&lt;P&gt;        IF bseg-skfbt IS INITIAL.&lt;/P&gt;&lt;P&gt;          item-namt    =  item-namt + item-tds.&lt;/P&gt;&lt;P&gt;        ENDIF.&lt;/P&gt;&lt;P&gt;      ENDIF.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    ELSE.&lt;/P&gt;&lt;P&gt;      item-tds     =   bseg-qbshb.    "TDS&lt;/P&gt;&lt;P&gt;    ENDIF.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt; ENDIF.   "IF bseg-augbl IS INITIAL AND BSEG-BSCHL EQ '29'.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&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;P&gt;ENDFORM.                    " item_details_29_25&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 18 Oct 2007 11:31:27 GMT</pubDate>
      <guid>https://community.sap.com/t5/application-development-and-automation-discussions/performance/m-p/2925420#M689134</guid>
      <dc:creator>Former Member</dc:creator>
      <dc:date>2007-10-18T11:31:27Z</dc:date>
    </item>
    <item>
      <title>Re: Performance</title>
      <link>https://community.sap.com/t5/application-development-and-automation-discussions/performance/m-p/2925421#M689135</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;There is a lot of scope for performance improvement:&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;1. SELECT queries should never have ENDSELECT. INstead retrieve all the data in internal table at one go&lt;/P&gt;&lt;P&gt;2. WHERE CLAUSE of the select query should have fields in the same order as they exist in table.&lt;/P&gt;&lt;P&gt;3. Fileds from TABLE should be retrieved in the same order as they exist in Table.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Best regards,&lt;/P&gt;&lt;P&gt;Prashant&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 18 Oct 2007 11:39:07 GMT</pubDate>
      <guid>https://community.sap.com/t5/application-development-and-automation-discussions/performance/m-p/2925421#M689135</guid>
      <dc:creator>Former Member</dc:creator>
      <dc:date>2007-10-18T11:39:07Z</dc:date>
    </item>
    <item>
      <title>Re: Performance</title>
      <link>https://community.sap.com/t5/application-development-and-automation-discussions/performance/m-p/2925422#M689136</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Whats the better way to improve this report as developed by others.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Can we change the same or create new one.&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 18 Oct 2007 11:41:55 GMT</pubDate>
      <guid>https://community.sap.com/t5/application-development-and-automation-discussions/performance/m-p/2925422#M689136</guid>
      <dc:creator>Former Member</dc:creator>
      <dc:date>2007-10-18T11:41:55Z</dc:date>
    </item>
    <item>
      <title>Re: Performance</title>
      <link>https://community.sap.com/t5/application-development-and-automation-discussions/performance/m-p/2925423#M689137</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi,&lt;/P&gt;&lt;P&gt;In the first query,&lt;/P&gt;&lt;P&gt;1. 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;P&gt;Instead of SELECT SINGLE *, use select statement with fields to retrive.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;2. In the second query,&lt;/P&gt;&lt;P&gt;SELECT shkzg skfbt dmbtr wskto belnr gjahr bukrs qbshb lifnr bschl nebtr&lt;/P&gt;&lt;P&gt;FROM bseg INTO TABLE ibseg WHERE augbl = p_vblnr AND bukrs = p_bukrs&lt;/P&gt;&lt;P&gt;AND koart = 'K' AND auggj = p_gjahr AND belnr NE p_vblnr.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;To retrieve from BSEG table, it takes more time. So pass all the keyfields to retrieve records. Then it will be working fine. Once u finetune this query, this report will work fine.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;3. Before the third query,&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;use delete statement to delete where ibseg-shkzg ne 'H'.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;DELETE IBSEG where ibseg-shkzg ne 'H'.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Then use the following statement.&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;Likewise, try for the remaining.&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 18 Oct 2007 11:43:11 GMT</pubDate>
      <guid>https://community.sap.com/t5/application-development-and-automation-discussions/performance/m-p/2925423#M689137</guid>
      <dc:creator>Former Member</dc:creator>
      <dc:date>2007-10-18T11:43:11Z</dc:date>
    </item>
    <item>
      <title>Re: Performance</title>
      <link>https://community.sap.com/t5/application-development-and-automation-discussions/performance/m-p/2925424#M689138</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi&lt;/P&gt;&lt;P&gt;You are writing so many select statements to BSEG which is not good&lt;/P&gt;&lt;P&gt;and in the where condition give the fey fields first and then other fields&lt;/P&gt;&lt;P&gt;why can't you check the tables BSIK and BSAK fields instead of BSEG and BKPF tables which also holds good the data of Vendor payments&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;see the doc&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;1) Dont use nested select statements&lt;/P&gt;&lt;P&gt;2) If possible use for all entries in addition&lt;/P&gt;&lt;P&gt;3) In the where addition make sure you give all the primary key&lt;/P&gt;&lt;P&gt;4) Use Index for the selection criteria.&lt;/P&gt;&lt;P&gt;5) You can also use inner joins&lt;/P&gt;&lt;P&gt;6) You can try to put the data from the first select statement into an Itab and then in order to select the data from the second table use for all entries in.&lt;/P&gt;&lt;P&gt;7) Use the runtime analysis SE30 and SQL Trace (ST05) to identify the performance and also to identify where the load is heavy, so that you can change the code accordingly&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;A href="https://www.sdn.sap.com/irj/servlet/prt/portal/prtroot/docs/library/uuid/5d0db4c9-0e01-0010-b68f-9b1408d5f234" target="test_blank"&gt;https://www.sdn.sap.com/irj/servlet/prt/portal/prtroot/docs/library/uuid/5d0db4c9-0e01-0010-b68f-9b1408d5f234&lt;/A&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;ABAP performance depends upon various factors and in devicded in three parts:&lt;/P&gt;&lt;P&gt;1. Database&lt;/P&gt;&lt;P&gt;2. ABAP &lt;/P&gt;&lt;P&gt;3. System&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Run Any program using SE30 (performance analys) to improve performance refer to tips and trics section of SE30, Always remember that ABAP perfirmance is improved when there is least load on Database.&lt;/P&gt;&lt;P&gt;u can get an interactive grap in SE30 regarding this with a file.&lt;/P&gt;&lt;P&gt;also if u find runtime of parts of codes then use :&lt;/P&gt;&lt;P&gt;Switch on RTA Dynamically within ABAP Code &lt;/P&gt;&lt;P&gt;*To turn runtim analysis on within ABAP code insert the following code&lt;/P&gt;&lt;P&gt;SET RUN TIME ANALYZER ON.&lt;/P&gt;&lt;P&gt;*To turn runtim analysis off within ABAP code insert the following code&lt;/P&gt;&lt;P&gt;SET RUN TIME ANALYZER OFF.&lt;/P&gt;&lt;P&gt;Always check the driver internal tables is not empty, while using FOR ALL ENTRIES&lt;/P&gt;&lt;P&gt;Avoid for all entries in JOINS&lt;/P&gt;&lt;P&gt;Try to avoid joins and use FOR ALL ENTRIES.&lt;/P&gt;&lt;P&gt;Try to restrict the joins to 1 level only ie only for tables&lt;/P&gt;&lt;P&gt;Avoid using Select *.&lt;/P&gt;&lt;P&gt;Avoid having multiple Selects from the same table in the same object.&lt;/P&gt;&lt;P&gt;Try to minimize the number of variables to save memory. &lt;/P&gt;&lt;P&gt;The sequence of fields in 'where clause' must be as per primary/secondary index ( if any)&lt;/P&gt;&lt;P&gt;Avoid creation of index as far as possible&lt;/P&gt;&lt;P&gt;Avoid operators like &amp;lt;&amp;gt;, &amp;gt; , &amp;lt; &amp;amp; like % in where clause conditions&lt;/P&gt;&lt;P&gt;Avoid select/select single statements in loops.&lt;/P&gt;&lt;P&gt;Try to use 'binary search' in READ internal table. Ensure table is sorted before using BINARY SEARCH.&lt;/P&gt;&lt;P&gt;Avoid using aggregate functions (SUM, MAX etc) in selects ( GROUP BY , HAVING,) &lt;/P&gt;&lt;P&gt;Avoid using ORDER BY in selects&lt;/P&gt;&lt;P&gt;Avoid Nested Selects &lt;/P&gt;&lt;P&gt;Avoid Nested Loops of Internal Tables&lt;/P&gt;&lt;P&gt;Try to use FIELD SYMBOLS.&lt;/P&gt;&lt;P&gt;Try to avoid into Corresponding Fields of&lt;/P&gt;&lt;P&gt;Avoid using Select Distinct, Use DELETE ADJACENT&lt;/P&gt;&lt;P&gt;Check the following Links&lt;/P&gt;&lt;P&gt;&lt;A class="jive_macro jive_macro_message" href="https://community.sap.com/" __jive_macro_name="message" modifiedtitle="true" __default_attr="1591512"&gt;&lt;/A&gt;&lt;/P&gt;&lt;P&gt;&lt;A class="jive_macro jive_macro_message" href="https://community.sap.com/" __jive_macro_name="message" modifiedtitle="true" __default_attr="1429297"&gt;&lt;/A&gt;&lt;/P&gt;&lt;P&gt;&lt;A href="http://www.sapgenie.com/abap/performance.htm" target="test_blank"&gt;http://www.sapgenie.com/abap/performance.htm&lt;/A&gt;&lt;/P&gt;&lt;P&gt;&lt;A href="http://www.thespot4sap.com/Articles/SAPABAPPerformanceTuning_PerformanceAnalysisTools.asp" target="test_blank"&gt;http://www.thespot4sap.com/Articles/SAPABAPPerformanceTuning_PerformanceAnalysisTools.asp&lt;/A&gt;&lt;/P&gt;&lt;P&gt;check the below link&lt;/P&gt;&lt;P&gt;&lt;A href="http://www.sap-img.com/abap/performance-tuning-for-data-selection-statement.htm" target="test_blank"&gt;http://www.sap-img.com/abap/performance-tuning-for-data-selection-statement.htm&lt;/A&gt;&lt;/P&gt;&lt;P&gt;See the following link if it's any help:&lt;/P&gt;&lt;P&gt;&lt;A href="http://www.thespot4sap.com/Articles/SAPABAPPerformanceTuning_PerformanceAnalysisTools.asp" target="test_blank"&gt;http://www.thespot4sap.com/Articles/SAPABAPPerformanceTuning_PerformanceAnalysisTools.asp&lt;/A&gt;&lt;/P&gt;&lt;P&gt;Check also &lt;A href="http://service.sap.com/performance" target="test_blank"&gt;http://service.sap.com/performance&lt;/A&gt;&lt;/P&gt;&lt;P&gt;and &lt;/P&gt;&lt;P&gt;books like&lt;/P&gt;&lt;P&gt;&lt;A href="http://www.sap-press.com/product.cfm?account=&amp;amp;product=H951" target="test_blank"&gt;http://www.sap-press.com/product.cfm?account=&amp;amp;product=H951&lt;/A&gt;&lt;/P&gt;&lt;P&gt;&lt;A href="http://www.sap-press.com/product.cfm?account=&amp;amp;product=H973" target="test_blank"&gt;http://www.sap-press.com/product.cfm?account=&amp;amp;product=H973&lt;/A&gt;&lt;/P&gt;&lt;P&gt;&lt;A href="http://www.sap-img.com/abap/more-than-100-abap-interview-faqs.htm" target="test_blank"&gt;http://www.sap-img.com/abap/more-than-100-abap-interview-faqs.htm&lt;/A&gt;&lt;/P&gt;&lt;P&gt;&lt;A href="http://www.thespot4sap.com/Articles/SAPABAPPerformanceTuning_PerformanceAnalysisTools.asp" target="test_blank"&gt;http://www.thespot4sap.com/Articles/SAPABAPPerformanceTuning_PerformanceAnalysisTools.asp&lt;/A&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Performance tuning for Data Selection Statement &lt;/P&gt;&lt;P&gt;&lt;A href="http://www.sap-img.com/abap/performance-tuning-for-data-selection-statement.htm" target="test_blank"&gt;http://www.sap-img.com/abap/performance-tuning-for-data-selection-statement.htm&lt;/A&gt;&lt;/P&gt;&lt;P&gt;Debugger&lt;/P&gt;&lt;P&gt;&lt;A href="http://help.sap.com/saphelp_47x200/helpdata/en/c6/617ca9e68c11d2b2ab080009b43351/content.htm" target="test_blank"&gt;http://help.sap.com/saphelp_47x200/helpdata/en/c6/617ca9e68c11d2b2ab080009b43351/content.htm&lt;/A&gt;&lt;/P&gt;&lt;P&gt;&lt;A href="http://www.cba.nau.edu/haney-j/CIS497/Assignments/Debugging.doc" target="test_blank"&gt;http://www.cba.nau.edu/haney-j/CIS497/Assignments/Debugging.doc&lt;/A&gt;&lt;/P&gt;&lt;P&gt;&lt;A href="http://help.sap.com/saphelp_erp2005/helpdata/en/b3/d322540c3beb4ba53795784eebb680/frameset.htm" target="test_blank"&gt;http://help.sap.com/saphelp_erp2005/helpdata/en/b3/d322540c3beb4ba53795784eebb680/frameset.htm&lt;/A&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Run Time Analyser&lt;/P&gt;&lt;P&gt;&lt;A href="http://help.sap.com/saphelp_47x200/helpdata/en/c6/617cafe68c11d2b2ab080009b43351/content.htm" target="test_blank"&gt;http://help.sap.com/saphelp_47x200/helpdata/en/c6/617cafe68c11d2b2ab080009b43351/content.htm&lt;/A&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;SQL trace&lt;/P&gt;&lt;P&gt;&lt;A href="http://help.sap.com/saphelp_47x200/helpdata/en/d1/801f7c454211d189710000e8322d00/content.htm" target="test_blank"&gt;http://help.sap.com/saphelp_47x200/helpdata/en/d1/801f7c454211d189710000e8322d00/content.htm&lt;/A&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;CATT - Computer Aided Testing Too&lt;/P&gt;&lt;P&gt;&lt;A href="http://help.sap.com/saphelp_47x200/helpdata/en/b3/410b37233f7c6fe10000009b38f936/frameset.htm" target="test_blank"&gt;http://help.sap.com/saphelp_47x200/helpdata/en/b3/410b37233f7c6fe10000009b38f936/frameset.htm&lt;/A&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Test Workbench&lt;/P&gt;&lt;P&gt;&lt;A href="http://help.sap.com/saphelp_47x200/helpdata/en/a8/157235d0fa8742e10000009b38f889/frameset.htm" target="test_blank"&gt;http://help.sap.com/saphelp_47x200/helpdata/en/a8/157235d0fa8742e10000009b38f889/frameset.htm&lt;/A&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Coverage Analyser&lt;/P&gt;&lt;P&gt;&lt;A href="http://help.sap.com/saphelp_47x200/helpdata/en/c7/af9a79061a11d4b3d4080009b43351/content.htm" target="test_blank"&gt;http://help.sap.com/saphelp_47x200/helpdata/en/c7/af9a79061a11d4b3d4080009b43351/content.htm&lt;/A&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Runtime Monitor&lt;/P&gt;&lt;P&gt;&lt;A href="http://help.sap.com/saphelp_47x200/helpdata/en/b5/fa121cc15911d5993d00508b6b8b11/content.htm" target="test_blank"&gt;http://help.sap.com/saphelp_47x200/helpdata/en/b5/fa121cc15911d5993d00508b6b8b11/content.htm&lt;/A&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Memory Inspector&lt;/P&gt;&lt;P&gt;&lt;A href="http://help.sap.com/saphelp_47x200/helpdata/en/a2/e5fc84cc87964cb2c29f584152d74e/content.htm" target="test_blank"&gt;http://help.sap.com/saphelp_47x200/helpdata/en/a2/e5fc84cc87964cb2c29f584152d74e/content.htm&lt;/A&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;ECATT - Extended Computer Aided testing tool.&lt;/P&gt;&lt;P&gt;&lt;A href="http://help.sap.com/saphelp_47x200/helpdata/en/20/e81c3b84e65e7be10000000a11402f/frameset.htm" target="test_blank"&gt;http://help.sap.com/saphelp_47x200/helpdata/en/20/e81c3b84e65e7be10000000a11402f/frameset.htm&lt;/A&gt;&lt;/P&gt;&lt;P&gt;Just refer to these links...&lt;/P&gt;&lt;P&gt;&lt;A class="jive_macro jive_macro_thread" href="https://community.sap.com/" __jive_macro_name="thread" modifiedtitle="true" __default_attr="84514"&gt;&lt;/A&gt;&lt;/P&gt;&lt;P&gt;&lt;A class="jive_macro jive_macro_thread" href="https://community.sap.com/" __jive_macro_name="thread" modifiedtitle="true" __default_attr="23912"&gt;&lt;/A&gt;&lt;/P&gt;&lt;P&gt;&lt;A class="jive_macro jive_macro_thread" href="https://community.sap.com/" __jive_macro_name="thread" modifiedtitle="true" __default_attr="142272"&gt;&lt;/A&gt;&lt;/P&gt;&lt;P&gt;&lt;A class="jive_macro jive_macro_thread" href="https://community.sap.com/" __jive_macro_name="thread" modifiedtitle="true" __default_attr="131727"&gt;&lt;/A&gt;&lt;/P&gt;&lt;P&gt;&lt;A class="jive_macro jive_macro_thread" href="https://community.sap.com/" __jive_macro_name="thread" modifiedtitle="true" __default_attr="84583"&gt;&lt;/A&gt;&lt;/P&gt;&lt;P&gt;&lt;A class="jive_macro jive_macro_thread" href="https://community.sap.com/" __jive_macro_name="thread" modifiedtitle="true" __default_attr="145177"&gt;&lt;/A&gt;&lt;/P&gt;&lt;P&gt;&lt;A class="jive_macro jive_macro_thread" href="https://community.sap.com/" __jive_macro_name="thread" modifiedtitle="true" __default_attr="148874"&gt;&lt;/A&gt;&lt;/P&gt;&lt;P&gt;&lt;A class="jive_macro jive_macro_thread" href="https://community.sap.com/" __jive_macro_name="thread" modifiedtitle="true" __default_attr="151144"&gt;&lt;/A&gt;&lt;/P&gt;&lt;P&gt;You can go to the transaction SE30 to have the runtime analysis of your program.Also try the transaction SCI , which is SAP Code Inspector.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;1 Always check the driver internal tables is not empty, while using FOR ALL ENTRIES &lt;/P&gt;&lt;P&gt;2 Avoid for all entries in JOINS &lt;/P&gt;&lt;P&gt;3 Try to avoid joins and use FOR ALL ENTRIES. &lt;/P&gt;&lt;P&gt;4 Try to restrict the joins to 1 level only ie only for 2 tables &lt;/P&gt;&lt;P&gt;5 Avoid using Select *. &lt;/P&gt;&lt;P&gt;6 Avoid having multiple Selects from the same table in the same object. &lt;/P&gt;&lt;P&gt;7 Try to minimize the number of variables to save memory. &lt;/P&gt;&lt;P&gt;8 The sequence of fields in 'where clause' must be as per primary/secondary index ( if any) &lt;/P&gt;&lt;P&gt;9 Avoid creation of index as far as possible &lt;/P&gt;&lt;P&gt;10 Avoid operators like &amp;lt;&amp;gt;, &amp;gt; , &amp;lt; &amp;amp; like % in where clause conditions &lt;/P&gt;&lt;P&gt;11 Avoid select/select single statements in loops. &lt;/P&gt;&lt;P&gt;12 Try to use 'binary search' in READ internal table. Ensure table is sorted before using BINARY SEARCH. &lt;/P&gt;&lt;P&gt;13 Avoid using aggregate functions (SUM, MAX etc) in selects ( GROUP BY , HAVING,) &lt;/P&gt;&lt;P&gt;14 Avoid using ORDER BY in selects &lt;/P&gt;&lt;P&gt;15 Avoid Nested Selects &lt;/P&gt;&lt;P&gt;16 Avoid Nested Loops of Internal Tables &lt;/P&gt;&lt;P&gt;17 Try to use FIELD SYMBOLS. &lt;/P&gt;&lt;P&gt;18 Try to avoid into Corresponding Fields of &lt;/P&gt;&lt;P&gt;19 Avoid using Select Distinct, Use DELETE ADJACENT. &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;Anji&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 18 Oct 2007 11:44:54 GMT</pubDate>
      <guid>https://community.sap.com/t5/application-development-and-automation-discussions/performance/m-p/2925424#M689138</guid>
      <dc:creator>Former Member</dc:creator>
      <dc:date>2007-10-18T11:44:54Z</dc:date>
    </item>
    <item>
      <title>Re: Performance</title>
      <link>https://community.sap.com/t5/application-development-and-automation-discussions/performance/m-p/2925425#M689139</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;&amp;lt;a href="http://www.saptechnical.com/Tutorials/ABAP/PerformanceSTDs.htm"&amp;gt;ABAP Performance&amp;lt;/a&amp;gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;reward if useful.&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 18 Oct 2007 11:53:25 GMT</pubDate>
      <guid>https://community.sap.com/t5/application-development-and-automation-discussions/performance/m-p/2925425#M689139</guid>
      <dc:creator>Former Member</dc:creator>
      <dc:date>2007-10-18T11:53:25Z</dc:date>
    </item>
    <item>
      <title>Re: Performance</title>
      <link>https://community.sap.com/t5/application-development-and-automation-discussions/performance/m-p/2925426#M689140</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;There is no need to create a new report. Just fine tune the queries as I have mentioned. Do for all the queries. Ur problem will be solved.&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 18 Oct 2007 11:59:23 GMT</pubDate>
      <guid>https://community.sap.com/t5/application-development-and-automation-discussions/performance/m-p/2925426#M689140</guid>
      <dc:creator>Former Member</dc:creator>
      <dc:date>2007-10-18T11:59:23Z</dc:date>
    </item>
    <item>
      <title>Re: Performance</title>
      <link>https://community.sap.com/t5/application-development-and-automation-discussions/performance/m-p/2925427#M689141</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Run this through ST05. this will show you where the database bottlenecks are.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Rob&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 18 Oct 2007 13:55:34 GMT</pubDate>
      <guid>https://community.sap.com/t5/application-development-and-automation-discussions/performance/m-p/2925427#M689141</guid>
      <dc:creator>Former Member</dc:creator>
      <dc:date>2007-10-18T13:55:34Z</dc:date>
    </item>
  </channel>
</rss>

