<?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 issues in Application Development and Automation Discussions</title>
    <link>https://community.sap.com/t5/application-development-and-automation-discussions/performance-issues/m-p/3539850#M851650</link>
    <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi Sekhar,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;1. When trying to fetch records based on the select options, always check if the selectoptions is not initial. &lt;/P&gt;&lt;P&gt;2. If the table used in 'IN' clause contains large number of data, it results in performance issue. Try to use 'FOR ALL ENTRIES IN....WHERE..'   if possible.&lt;/P&gt;&lt;P&gt;3. DONOT put a select query inside a LOOP.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;UR CODE -&lt;/P&gt;&lt;P&gt;*loop at itab.&lt;/P&gt;&lt;P&gt;    &lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;select single maktx from makt into v_maktx&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;where matnr eq itab-matnr.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;*endloop.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Instead, Fetch records from maktx for all emtries in itab WHERE matnr eq itab-matnr.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;4. Instead of putting teh internal table in a loop, you can directly use - DELETE &amp;lt;internal table&amp;gt; WHERE field1 = 'abc'&amp;lt;condition&amp;gt;.&lt;/P&gt;&lt;P&gt;5. Try to use primary keys or keys with indexes created on them.&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
    <pubDate>Fri, 07 Mar 2008 10:46:34 GMT</pubDate>
    <dc:creator>Former Member</dc:creator>
    <dc:date>2008-03-07T10:46:34Z</dc:date>
    <item>
      <title>performance issues</title>
      <link>https://community.sap.com/t5/application-development-and-automation-discussions/performance-issues/m-p/3539849#M851649</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;hi all,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;here is my program ... please tell me some performnce tips in this program . because it long time to execute.&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; Report  ZMAP_VARIANCE&lt;/P&gt;&lt;P&gt;*&amp;amp;&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; Request  : REDK904796&lt;/P&gt;&lt;P&gt;*&amp;amp; Dev.Class: ZGST&lt;/P&gt;&lt;P&gt;*&amp;amp; Description : Report for MAP Variance.&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  ZMAP_VARIANCE.&lt;/P&gt;&lt;P&gt;type-pools : vrm,&lt;/P&gt;&lt;P&gt;             slis.&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;Types Declaration *****&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;/UL&gt;&lt;/UL&gt;&lt;/UL&gt;&lt;P&gt;types: begin of ty_main,&lt;/P&gt;&lt;P&gt;         werks type ekpo-werks,&lt;/P&gt;&lt;P&gt;         name1 type t001w-name1,&lt;/P&gt;&lt;P&gt;         matnr type ekpo-matnr,&lt;/P&gt;&lt;P&gt;         txz01 type ekpo-txz01,&lt;/P&gt;&lt;P&gt;         verpr type mbew-verpr,&lt;/P&gt;&lt;P&gt;         netpr type ekpo-netpr,&lt;/P&gt;&lt;P&gt;         dfval type ekpo-netpr,&lt;/P&gt;&lt;P&gt;         varns type ekpo-netpr,&lt;/P&gt;&lt;P&gt;         labst type mard-labst,&lt;/P&gt;&lt;P&gt;         varvl type ekpo-netpr,&lt;/P&gt;&lt;P&gt;       end of ty_main,&lt;/P&gt;&lt;P&gt;       begin of ty_ekpo,&lt;/P&gt;&lt;P&gt;         werks type ekpo-werks,&lt;/P&gt;&lt;P&gt;         matnr type ekpo-matnr,&lt;/P&gt;&lt;P&gt;         txz01 type ekpo-txz01,&lt;/P&gt;&lt;P&gt;         netpr type ekpo-netpr,&lt;/P&gt;&lt;P&gt;         aedat type ekpo-aedat,&lt;/P&gt;&lt;P&gt;       end of ty_ekpo,&lt;/P&gt;&lt;P&gt;       begin of ty_t001,&lt;/P&gt;&lt;P&gt;         werks type t001w-werks,&lt;/P&gt;&lt;P&gt;         name1 type t001w-name1,&lt;/P&gt;&lt;P&gt;       end of ty_t001,&lt;/P&gt;&lt;P&gt;       begin of ty_mbew,&lt;/P&gt;&lt;P&gt;         matnr type mbew-matnr,&lt;/P&gt;&lt;P&gt;         bwkey type mbew-bwkey,&lt;/P&gt;&lt;P&gt;         verpr type mbew-verpr,&lt;/P&gt;&lt;P&gt;       end of ty_mbew,&lt;/P&gt;&lt;P&gt;       begin of ty_mard,&lt;/P&gt;&lt;P&gt;         matnr type mard-matnr,&lt;/P&gt;&lt;P&gt;         werks type mard-werks,&lt;/P&gt;&lt;P&gt;         lgort type mard-lgort,&lt;/P&gt;&lt;P&gt;         labst type mard-labst,&lt;/P&gt;&lt;P&gt;       end of ty_mard.&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;Internal Tables for Data Processing ****&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;/UL&gt;&lt;/UL&gt;&lt;/UL&gt;&lt;P&gt;data: begin of itab occurs 0,&lt;/P&gt;&lt;P&gt;        matnr type mara-matnr,&lt;/P&gt;&lt;P&gt;        werks type marc-werks,&lt;/P&gt;&lt;P&gt;      end of itab,&lt;/P&gt;&lt;P&gt;      v_maktx type makt-maktx,&lt;/P&gt;&lt;P&gt;      v_year type MSEG-MJAHR,&lt;/P&gt;&lt;P&gt;      v_mblnr type mseg-mblnr.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;data: it_main type table of ty_main,&lt;/P&gt;&lt;P&gt;      wa_main type ty_main,&lt;/P&gt;&lt;P&gt;      it_temp type table of ty_main,&lt;/P&gt;&lt;P&gt;      wa_temp type ty_main,&lt;/P&gt;&lt;P&gt;      it_ekpo type table of ty_ekpo,&lt;/P&gt;&lt;P&gt;      it_ekpo1 type table of ty_ekpo,&lt;/P&gt;&lt;P&gt;      wa_ekpo type ty_ekpo,&lt;/P&gt;&lt;P&gt;      it_mbew type table of ty_mbew,&lt;/P&gt;&lt;P&gt;      wa_mbew type ty_mbew,&lt;/P&gt;&lt;P&gt;      it_mard type table of ty_mard,&lt;/P&gt;&lt;P&gt;      wa_mard type ty_mard,&lt;/P&gt;&lt;P&gt;      it_t001 type table of ty_t001,&lt;/P&gt;&lt;P&gt;      wa_t001 type ty_t001,&lt;/P&gt;&lt;P&gt;      v_matnr type mara-matnr,&lt;/P&gt;&lt;P&gt;      v_werks type marc-werks.&lt;/P&gt;&lt;P&gt;&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;ALV Tables Declaration ****&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;/UL&gt;&lt;/UL&gt;&lt;/UL&gt;&lt;P&gt;data: it_fldcat type slis_t_fieldcat_alv with header line,&lt;/P&gt;&lt;P&gt;      wa_layout type slis_layout_alv.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;DATA : BEGIN OF IT_MKPF OCCURS 0,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;       MBLNR TYPE MSEG-MBLNR,&lt;/P&gt;&lt;P&gt;       MENGE TYPE MSEG-MENGE,&lt;/P&gt;&lt;P&gt;       MATNR(18)," type mseg-matnr,&lt;/P&gt;&lt;P&gt;       WERKS TYPE MSEG-WERKS,&lt;/P&gt;&lt;P&gt;       DMBTR TYPE MBEW-VERPR,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;       BUDAT TYPE MKPF-BUDAT,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;       CPUTM TYPE MKPF-CPUTM,&lt;/P&gt;&lt;P&gt;       END OF IT_MKPF.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;DATA: BEGIN OF I_REGIO OCCURS 0,&lt;/P&gt;&lt;P&gt;      WERKS LIKE T001W-WERKS,&lt;/P&gt;&lt;P&gt;      END OF I_REGIO,&lt;/P&gt;&lt;P&gt;      v_regio type T001W-REGIO.&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;LI level="4" type="ul"&gt;&lt;P&gt;Data for Drop Down Menu in Selection Screen ****&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;/UL&gt;&lt;/UL&gt;&lt;/UL&gt;&lt;P&gt;DATA: name TYPE vrm_id,&lt;/P&gt;&lt;P&gt;list TYPE vrm_values,&lt;/P&gt;&lt;P&gt;value LIKE LINE OF list,&lt;/P&gt;&lt;P&gt;name1 TYPE vrm_id,&lt;/P&gt;&lt;P&gt;list1 TYPE vrm_values,&lt;/P&gt;&lt;P&gt;value1 LIKE LINE OF list.&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;LI level="4" type="ul"&gt;&lt;P&gt;Selection Screen Design ****&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;/UL&gt;&lt;/UL&gt;&lt;/UL&gt;&lt;P&gt;selection-screen begin of block b1 with frame title text-001.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  select-options : s_werks for v_werks,&lt;/P&gt;&lt;P&gt;                   s_matnr for v_matnr.&lt;/P&gt;&lt;P&gt;  selection-screen begin of line.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    selection-screen comment (31) comm1.&lt;/P&gt;&lt;P&gt;    parameters : p_frwd(2) AS LISTBOX VISIBLE LENGTH 4,&lt;/P&gt;&lt;P&gt;                 p_verpr type mbew-verpr.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  selection-screen end of line.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  selection-screen begin of line.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    selection-screen comment (31) comm2.&lt;/P&gt;&lt;P&gt;    parameters : p_frwd1(2) AS LISTBOX VISIBLE LENGTH 4,&lt;/P&gt;&lt;P&gt;                 p_varns type ekpo-netpr.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  selection-screen end of line.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt; PARAMETERS: p_varns type ekpo-netpr.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;selection-screen end of block b1.&lt;/P&gt;&lt;P&gt;&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;Logic for Dropdown Menu in Selectin Screen ****&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;/UL&gt;&lt;/UL&gt;&lt;/UL&gt;&lt;P&gt;AT SELECTION-SCREEN OUTPUT.&lt;/P&gt;&lt;P&gt;  comm1 = 'MAP'.&lt;/P&gt;&lt;P&gt;  comm2 = 'Variance'.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  name = 'P_FRWD'.&lt;/P&gt;&lt;P&gt;  value-key = '01'.&lt;/P&gt;&lt;P&gt;  value-text = '&amp;gt;'.&lt;/P&gt;&lt;P&gt;  APPEND value TO list.&lt;/P&gt;&lt;P&gt;  value-key = '02'.&lt;/P&gt;&lt;P&gt;  value-text = '&amp;lt;'.&lt;/P&gt;&lt;P&gt;  APPEND value TO list.&lt;/P&gt;&lt;P&gt;  value-key = '03'.&lt;/P&gt;&lt;P&gt;  value-text = '&amp;gt;='.&lt;/P&gt;&lt;P&gt;  APPEND value TO list.&lt;/P&gt;&lt;P&gt;  value-key = '04'.&lt;/P&gt;&lt;P&gt;  value-text = '&amp;lt;='.&lt;/P&gt;&lt;P&gt;  APPEND value TO list.&lt;/P&gt;&lt;P&gt;  value-key = '05'.&lt;/P&gt;&lt;P&gt;  value-text = '='.&lt;/P&gt;&lt;P&gt;  APPEND value TO list.&lt;/P&gt;&lt;P&gt;  value-key = '06'.&lt;/P&gt;&lt;P&gt;  value-text = '&amp;lt;&amp;gt;'.&lt;/P&gt;&lt;P&gt;  APPEND value TO list.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  CALL FUNCTION 'VRM_SET_VALUES'&lt;/P&gt;&lt;P&gt;    EXPORTING&lt;/P&gt;&lt;P&gt;    ID = name&lt;/P&gt;&lt;P&gt;    VALUES = list.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  name1 = 'P_FRWD1'.&lt;/P&gt;&lt;P&gt;  value1-key = '01'.&lt;/P&gt;&lt;P&gt;  value1-text = '&amp;gt;'.&lt;/P&gt;&lt;P&gt;  APPEND value1 TO list1.&lt;/P&gt;&lt;P&gt;  value1-key = '02'.&lt;/P&gt;&lt;P&gt;  value1-text = '&amp;lt;'.&lt;/P&gt;&lt;P&gt;  APPEND value1 TO list1.&lt;/P&gt;&lt;P&gt;  value1-key = '03'.&lt;/P&gt;&lt;P&gt;  value1-text = '&amp;gt;='.&lt;/P&gt;&lt;P&gt;  APPEND value1 TO list1.&lt;/P&gt;&lt;P&gt;  value1-key = '04'.&lt;/P&gt;&lt;P&gt;  value1-text = '&amp;lt;='.&lt;/P&gt;&lt;P&gt;  APPEND value1 TO list1.&lt;/P&gt;&lt;P&gt;  value1-key = '05'.&lt;/P&gt;&lt;P&gt;  value1-text = '='.&lt;/P&gt;&lt;P&gt;  APPEND value1 TO list1.&lt;/P&gt;&lt;P&gt;  value1-key = '06'.&lt;/P&gt;&lt;P&gt;  value1-text = '&amp;lt;&amp;gt;'.&lt;/P&gt;&lt;P&gt;  APPEND value1 TO list1.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  CALL FUNCTION 'VRM_SET_VALUES'&lt;/P&gt;&lt;P&gt;    EXPORTING&lt;/P&gt;&lt;P&gt;    ID = name1&lt;/P&gt;&lt;P&gt;    VALUES = list1.&lt;/P&gt;&lt;P&gt;&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;Selection Screen Fields Validations ****&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;/UL&gt;&lt;/UL&gt;&lt;/UL&gt;&lt;P&gt;at selection-screen.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  select single werks&lt;/P&gt;&lt;P&gt;         from t001w&lt;/P&gt;&lt;P&gt;         into wa_main-werks&lt;/P&gt;&lt;P&gt;         where werks in s_werks.&lt;/P&gt;&lt;P&gt;  if sy-subrc &amp;lt;&amp;gt; 0.&lt;/P&gt;&lt;P&gt;    message text-002 type 'E'.&lt;/P&gt;&lt;P&gt;  endif.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  select single matnr&lt;/P&gt;&lt;P&gt;         from mara&lt;/P&gt;&lt;P&gt;         into wa_main-matnr&lt;/P&gt;&lt;P&gt;         where matnr in s_matnr.&lt;/P&gt;&lt;P&gt;  if sy-subrc &amp;lt;&amp;gt; 0.&lt;/P&gt;&lt;P&gt;    message text-003 type 'E'.&lt;/P&gt;&lt;P&gt;  endif.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  if s_werks is initial and s_matnr is initial.&lt;/P&gt;&lt;P&gt;    message text-004 type 'E'.&lt;/P&gt;&lt;P&gt;  ENDIF.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  if not p_verpr is initial and p_frwd is initial.&lt;/P&gt;&lt;P&gt;    message text-005 type 'E'.&lt;/P&gt;&lt;P&gt;  elseif p_verpr is initial and not p_frwd is initial.&lt;/P&gt;&lt;P&gt;    message text-006 type 'E'.&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;LI level="4" type="ul"&gt;&lt;P&gt;Start of Selection ****&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;/UL&gt;&lt;/UL&gt;&lt;/UL&gt;&lt;P&gt;start-of-selection.&lt;/P&gt;&lt;P&gt;&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;Data Fetching ****&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;/UL&gt;&lt;/UL&gt;&lt;/UL&gt;&lt;P&gt;  perform get_data.&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;Processing Building Final Internal Table ****&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;/UL&gt;&lt;/UL&gt;&lt;/UL&gt;&lt;P&gt;  perform build_itab.&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;Generating Field Catalog itab ****&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;/UL&gt;&lt;/UL&gt;&lt;/UL&gt;&lt;P&gt;  perform build_fldcat.&lt;/P&gt;&lt;P&gt;&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;Dropdown Options for MAP ****&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;/UL&gt;&lt;/UL&gt;&lt;/UL&gt;&lt;P&gt;    case p_frwd.&lt;/P&gt;&lt;P&gt;      when '01'.&lt;/P&gt;&lt;P&gt;        perform gt_list.&lt;/P&gt;&lt;P&gt;      when '02'.&lt;/P&gt;&lt;P&gt;        perform lt_list.&lt;/P&gt;&lt;P&gt;      when '03'.&lt;/P&gt;&lt;P&gt;        perform ge_list.&lt;/P&gt;&lt;P&gt;      when '04'.&lt;/P&gt;&lt;P&gt;        perform le_list.&lt;/P&gt;&lt;P&gt;      when '05'.&lt;/P&gt;&lt;P&gt;        perform eq_list.&lt;/P&gt;&lt;P&gt;      when '06'.&lt;/P&gt;&lt;P&gt;        perform ne_list.&lt;/P&gt;&lt;P&gt;      when others.&lt;/P&gt;&lt;P&gt;        perform disp_list.&lt;/P&gt;&lt;P&gt;    endcase.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;&amp;amp;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*&amp;amp;      Form  gt_list&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;      Subroutine for List having more than MAP&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;STRONG&gt;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="-----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;FORM gt_list .&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  it_temp[] = it_main[].&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt; if not p_varns is initial.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;    delete it_temp where verpr &amp;lt;= p_verpr.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;   delete it_temp where varns &amp;lt;&amp;gt; p_varns.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;    perform variance_col.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;UL&gt;&lt;LI level="2" type="ul"&gt;&lt;P&gt; else.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;   delete it_temp where verpr &amp;lt;= p_verpr.&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;  PERFORM grid_display.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;ENDFORM.                    " gt_list&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  lt_list&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;      Subroutine for List having less than MAP&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;STRONG&gt;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="-----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;FORM lt_list .&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  it_temp[] = it_main[].&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt; if not p_varns is initial.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;    delete it_temp where verpr &amp;gt;= p_verpr.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;   delete it_temp where varns &amp;lt;&amp;gt; p_varns.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;     perform variance_col.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt; else.&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;   delete it_temp where verpr &amp;gt;= p_verpr.&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;  PERFORM grid_display.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;ENDFORM.                    " lt_list&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  ge_list&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;      Subroutine for List having more than or equal to MAP&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;STRONG&gt;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="-----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;FORM ge_list .&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  it_temp[] = it_main[].&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt; if not p_varns is initial.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;    delete it_temp where verpr &amp;lt; p_verpr. " and varns &amp;lt;&amp;gt; p_varns.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;   delete it_temp where varns &amp;lt;&amp;gt; p_varns.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;    perform variance_col.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt; else.&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;   delete it_temp where verpr &amp;lt; p_verpr.&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;  PERFORM grid_display.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;ENDFORM.                    " ge_list&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  le_list&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;      Subroutine for List having less than or equal to MAP&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;STRONG&gt;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="-----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;FORM le_list .&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  it_temp[] = it_main[].&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt; if not p_varns is initial.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;    delete it_temp where verpr &amp;gt; p_verpr.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;   delete it_temp where varns &amp;lt;&amp;gt; p_varns. " and varns &amp;lt;&amp;gt; p_varns.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;    perform variance_col.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt; else.&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;   delete it_temp where verpr &amp;gt; p_verpr.&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;  PERFORM grid_display.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;ENDFORM.                    " le_list&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  eq_list&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;      Subroutine for List having equal to MAP&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;STRONG&gt;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="-----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;FORM eq_list .&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  it_temp[] = it_main[].&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt; if not p_varns is initial.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;    delete it_temp where verpr &amp;lt;&amp;gt; p_verpr.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;   delete it_temp where varns &amp;lt;&amp;gt; p_varns. "and varns &amp;lt;&amp;gt; p_varns.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;    perform variance_col.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt; else.&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;   delete it_temp where verpr &amp;lt;&amp;gt; p_verpr.&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;  PERFORM grid_display.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;ENDFORM.                    " eq_list&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  ne_list&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;      Subroutine for List having not equal to MAP&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;STRONG&gt;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="-----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;FORM ne_list .&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  it_temp[] = it_main[].&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt; if not p_varns is initial.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;    delete it_temp where verpr = p_verpr. " and varns &amp;lt;&amp;gt; p_varns.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;   delete it_temp where varns &amp;lt;&amp;gt; p_varns.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;    perform variance_col.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt; else.&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;   delete it_temp where verpr = p_verpr.&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;  PERFORM grid_display.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;ENDFORM.                    " ne_list&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  disp_list&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;      Subroutine for Displaying List&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;STRONG&gt;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="-----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;FORM disp_list .&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  it_temp[] = it_main[].&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt; if not p_varns is initial.&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;   delete it_temp where varns &amp;lt;&amp;gt; p_varns.&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;   delete it_temp where varns &amp;lt;&amp;gt; p_varns.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;    perform variance_col.&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;UL&gt;&lt;UL&gt;&lt;UL&gt;&lt;UL&gt;&lt;LI level="4" type="ul"&gt;&lt;P&gt;Grid Display ****&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;/UL&gt;&lt;/UL&gt;&lt;/UL&gt;&lt;P&gt;  PERFORM grid_display.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;ENDFORM.                    " disp_list&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_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;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;      Data Fetching&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;STRONG&gt;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="-----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;FORM get_data .&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;**************&lt;STRONG&gt;Commented By Pawan&lt;/STRONG&gt;***************************&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt; select werks&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;        matnr&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;        txz01&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;        netpr&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;        aedat&lt;/P&gt;&lt;/LI&gt;&lt;UL&gt;&lt;LI level="2" type="ul"&gt;&lt;P&gt;        up to 15 rows&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;        from ekpo&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;        into table it_ekpo&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;        where werks in s_werks&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;        and matnr in s_matnr.&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 not s_werks is initial and s_matnr is initial.&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;   sort it_ekpo by werks matnr aedat descending.&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;   delete adjacent DUPLICATES FROM it_ekpo comparing werks matnr.&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt; elseif not s_matnr is initial and s_werks is initial.&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;   sort it_ekpo by matnr werks aedat descending.&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;   delete adjacent DUPLICATES FROM it_ekpo comparing matnr werks.&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt; endif.&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt; if not s_werks is initial and not s_matnr is initial.&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;   sort it_ekpo by werks matnr aedat descending.&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;   delete adjacent DUPLICATES FROM it_ekpo comparing matnr werks.&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;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;LI level="14" type="ul"&gt;&lt;P&gt;changes for getting all articles ***************&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;/UL&gt;&lt;P&gt;************&lt;STRONG&gt;Commened By Pawan&lt;/STRONG&gt;******************************&lt;/P&gt;&lt;P&gt;*select mara~matnr werks&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;      from mara inner join marc&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;      on mara&lt;SUB&gt;matnr eq marc&lt;/SUB&gt;matnr&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;      into table itab&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;      where mara~matnr in s_matnr&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;      and werks in s_werks.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;*****************************************************************&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;select werks matnr from marc into table it_ekpo where matnr in s_matnr&lt;/P&gt;&lt;P&gt;                                              and werks in s_werks.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*********************&lt;STRONG&gt;Commented By Pawan&lt;/STRONG&gt;***************************************&lt;/P&gt;&lt;P&gt;*loop at itab.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;   read table it_ekpo into wa_ekpo with key matnr = itab-matnr. " werks = itab-werks.&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;   if sy-subrc &amp;lt;&amp;gt; 0.&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;   wa_ekpo-matnr = itab-matnr.&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;   wa_ekpo-werks = itab-werks.&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;   select single maktx from makt into v_maktx&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;   where matnr eq itab-matnr.&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;   wa_ekpo-txz01 = v_maktx.&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;   append wa_ekpo to it_ekpo1.&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;   clear: wa_ekpo, v_maktx.&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;*endloop.&lt;/P&gt;&lt;P&gt;**********************************************************************************&lt;/P&gt;&lt;P&gt;*append lines of it_ekpo1 TO it_ekpo.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*append lines of itab to it_ekpo.&lt;/P&gt;&lt;P&gt;****************************************************************&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  if not it_ekpo is initial.&lt;/P&gt;&lt;P&gt;  select werks&lt;/P&gt;&lt;P&gt;         name1&lt;/P&gt;&lt;P&gt;         from t001w&lt;/P&gt;&lt;P&gt;         into table it_t001&lt;/P&gt;&lt;P&gt;         for all entries in it_ekpo&lt;/P&gt;&lt;P&gt;         where werks eq it_ekpo-werks.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  select matnr&lt;/P&gt;&lt;P&gt;         bwkey&lt;/P&gt;&lt;P&gt;         verpr&lt;/P&gt;&lt;P&gt;         from mbew&lt;/P&gt;&lt;P&gt;         into table it_mbew&lt;/P&gt;&lt;P&gt;         for all entries in it_ekpo&lt;/P&gt;&lt;P&gt;         where bwkey eq it_ekpo-werks&lt;/P&gt;&lt;P&gt;         and matnr eq it_ekpo-matnr.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  select matnr&lt;/P&gt;&lt;P&gt;         werks&lt;/P&gt;&lt;P&gt;         lgort&lt;/P&gt;&lt;P&gt;         labst&lt;/P&gt;&lt;P&gt;         from mard&lt;/P&gt;&lt;P&gt;         into table it_mard&lt;/P&gt;&lt;P&gt;         for all entries in it_ekpo&lt;/P&gt;&lt;P&gt;         where matnr eq it_ekpo-matnr&lt;/P&gt;&lt;P&gt;         and werks eq it_ekpo-werks.&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;&lt;/P&gt;&lt;P&gt;ENDFORM.                    " get_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;*&amp;amp;      Form  build_itab&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;      Generating Main Internal table&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;STRONG&gt;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="-----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;FORM build_itab .&lt;/P&gt;&lt;P&gt;sort : it_mard by matnr werks,&lt;/P&gt;&lt;P&gt;       it_t001 by werks,&lt;/P&gt;&lt;P&gt;       it_mbew by matnr.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*sort it_ekpo by werks matnr.&lt;/P&gt;&lt;P&gt;  loop at it_ekpo into wa_ekpo.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    wa_main-werks = wa_ekpo-werks.&lt;/P&gt;&lt;P&gt;    wa_main-matnr = wa_ekpo-matnr.&lt;/P&gt;&lt;P&gt;    select single maktx from makt into wa_ekpo-txz01 where matnr = wa_ekpo-matnr.&lt;/P&gt;&lt;P&gt;    if sy-subrc = 0.&lt;/P&gt;&lt;P&gt;    wa_main-txz01 = wa_ekpo-txz01.&lt;/P&gt;&lt;P&gt;    endif.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;   wa_main-netpr = wa_ekpo-netpr.&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;   select mblnr&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;          menge&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;          dmbtr&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;          from mseg&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;          into table it_mseg&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;          where matnr eq wa_ekpo-matnr&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;          and werks eq wa_ekpo-werks.&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;   sort it_mseg by mblnr descending.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&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;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="17" type="ul"&gt;&lt;P&gt;Chnages done for Latest Purchase Price ***************&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;/UL&gt;&lt;/UL&gt;&lt;/UL&gt;&lt;/UL&gt;&lt;P&gt;*SELECT MBLNR MENGE MATNR WERKS DMBTR FROM MSEG&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;    INTO CORRESPONDING FIELDS OF table IT_MKPF&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;      WHERE MATNR = wa_ekpo-MATNR&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;     AND WERKS = wa_ekpo-werks&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;     AND BWART = '101'.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;*if sy-subrc = 0.&lt;/P&gt;&lt;UL&gt;&lt;UL&gt;&lt;LI level="2" type="ul"&gt;&lt;P&gt;     append it_mkpf.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;/UL&gt;&lt;P&gt;*&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;   LOOP AT IT_MKPF.&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;     SELECT SINGLE BUDAT CPUTM FROM MKPF&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;     INTO (IT_MKPF-BUDAT, IT_MKPF-CPUTM)&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;     WHERE MBLNR = IT_MKPF-MBLNR.&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;     MODIFY IT_MKPF.&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  ENDLOOP.&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;     SORT IT_MKPF BY  MATNR BUDAT DESCENDING CPUTM ASCENDING.&lt;/P&gt;&lt;/LI&gt;&lt;UL&gt;&lt;LI level="2" type="ul"&gt;&lt;P&gt;     READ TABLE IT_MKPF INDEX 1.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;     loop at it_mkpf where dmbtr &amp;lt;&amp;gt; 0 and menge &amp;lt;&amp;gt; 0.&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;       at first.&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;         read table it_mkpf index sy-tabix.&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;         wa_main-netpr = it_mkpf-dmbtr / it_mkpf-menge.&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;       endat.&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;     endloop.&lt;/P&gt;&lt;/LI&gt;&lt;UL&gt;&lt;LI level="2" type="ul"&gt;&lt;P&gt;     if it_mkpf-menge &amp;lt;&amp;gt; 0.&lt;/P&gt;&lt;/LI&gt;&lt;LI level="2" type="ul"&gt;&lt;P&gt;       wa_main-netpr = IT_MKPF-DMBTR / IT_MKPF-MENGE .&lt;/P&gt;&lt;/LI&gt;&lt;LI level="2" type="ul"&gt;&lt;P&gt;     endif.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;/UL&gt;&lt;P&gt;*endif.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;     clear it_mkpf.&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;     refresh it_mkpf.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    SELECT MBLNR MENGE MATNR WERKS DMBTR FROM MSEG&lt;/P&gt;&lt;P&gt;     INTO table IT_MKPF&lt;/P&gt;&lt;P&gt;       WHERE MATNR = wa_ekpo-MATNR&lt;/P&gt;&lt;P&gt;      AND WERKS = wa_ekpo-werks&lt;/P&gt;&lt;P&gt;      AND BWART = '101'.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    IF SY-SUBRC &amp;lt;&amp;gt; 0.&lt;/P&gt;&lt;P&gt;      REFRESH I_REGIO.&lt;/P&gt;&lt;P&gt;&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;TO SELECT GRN LATEST DOCUMENT FROM DIFFERENT SITE IN SAME REGION&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;&lt;/P&gt;&lt;P&gt;      SELECT SINGLE REGIO FROM T001W INTO v_REGIO WHERE WERKS = wa_ekpo-werks.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;      SELECT WERKS FROM T001W&lt;/P&gt;&lt;P&gt;      INTO TABLE I_REGIO WHERE REGIO = v_REGIO.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;      LOOP AT I_REGIO.&lt;/P&gt;&lt;P&gt;        SELECT MBLNR MENGE MATNR WERKS DMBTR FROM MSEG&lt;/P&gt;&lt;P&gt;         INTO table IT_MKPF&lt;/P&gt;&lt;P&gt;         WHERE MATNR = wa_ekpo-MATNR&lt;/P&gt;&lt;P&gt;         AND WERKS = I_REGIO-WERKS&lt;/P&gt;&lt;P&gt;         AND BWART = '101'&lt;/P&gt;&lt;P&gt;         AND DMBTR NE '0.00'.&lt;/P&gt;&lt;P&gt;          if sy-subrc = 0.&lt;/P&gt;&lt;P&gt;             exit.&lt;/P&gt;&lt;P&gt;             endif.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;        APPEND IT_MKPF.&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;       ENDSELECT.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;      ENDLOOP.&lt;/P&gt;&lt;P&gt;   ENDIF.&lt;/P&gt;&lt;P&gt;*FOR LATEST DOCUMENT&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;      LOOP AT IT_MKPF.&lt;/P&gt;&lt;P&gt;        SELECT SINGLE BUDAT CPUTM FROM MKPF&lt;/P&gt;&lt;P&gt;        INTO (IT_MKPF-BUDAT, IT_MKPF-CPUTM)&lt;/P&gt;&lt;P&gt;        WHERE MBLNR = IT_MKPF-MBLNR.&lt;/P&gt;&lt;P&gt;        MODIFY IT_MKPF.&lt;/P&gt;&lt;P&gt;      ENDLOOP.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;      SORT IT_MKPF BY  MATNR BUDAT DESCENDING CPUTM ASCENDING.&lt;/P&gt;&lt;P&gt;      READ TABLE IT_MKPF INDEX 1.&lt;/P&gt;&lt;P&gt;      wa_main-netpr = IT_MKPF-DMBTR / IT_MKPF-MENGE .&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;LI level="1" type="ul"&gt;&lt;P&gt;   REFRESH IT_MKPF.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&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;UL&gt;&lt;UL&gt;&lt;UL&gt;&lt;UL&gt;&lt;UL&gt;&lt;UL&gt;&lt;UL&gt;&lt;LI level="14" type="ul"&gt;&lt;P&gt;If purchase Price not available in both site and region level&lt;/P&gt;&lt;/LI&gt;&lt;LI level="14" type="ul"&gt;&lt;P&gt;PP taken from latest GRN in current year.&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;/UL&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;      if it_mkpf-dmbtr = 0.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;        CALL FUNCTION 'GET_CURRENT_YEAR'&lt;/P&gt;&lt;P&gt;         EXPORTING&lt;/P&gt;&lt;P&gt;           BUKRS         = '1000'&lt;/P&gt;&lt;P&gt;           DATE          = SY-DATUM&lt;/P&gt;&lt;P&gt;         IMPORTING&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;          CURRM         =&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;           CURRY         = v_year&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;          PREVM         =&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;          PREVY         =&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;                  .&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;       v_year = sy-datum+4(4).&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;        select max( mblnr )&lt;/P&gt;&lt;P&gt;               from mseg&lt;/P&gt;&lt;P&gt;               into v_mblnr&lt;/P&gt;&lt;P&gt;               where matnr eq wa_ekpo-matnr&lt;/P&gt;&lt;P&gt;               and bwart eq '101'&lt;/P&gt;&lt;P&gt;               and gjahr eq v_year&lt;/P&gt;&lt;P&gt;               and dmbtr &amp;gt; 0&lt;/P&gt;&lt;P&gt;               and menge &amp;gt; 0.&lt;/P&gt;&lt;P&gt;        if not v_mblnr is initial.&lt;/P&gt;&lt;P&gt;        select single&lt;/P&gt;&lt;P&gt;               dmbtr&lt;/P&gt;&lt;P&gt;               menge&lt;/P&gt;&lt;P&gt;               from mseg&lt;/P&gt;&lt;P&gt;               into (it_mkpf-dmbtr, it_mkpf-menge)&lt;/P&gt;&lt;P&gt;               where mblnr eq v_mblnr.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;        wa_main-netpr = it_mkpf-dmbtr / it_mkpf-menge.&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;  clear it_mkpf.&lt;/P&gt;&lt;P&gt;  refresh it_mkpf.&lt;/P&gt;&lt;P&gt;****************************************&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    read table it_t001 into wa_t001 with key werks = wa_ekpo-werks binary search.&lt;/P&gt;&lt;P&gt;    wa_main-name1 = wa_t001-name1.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    read table it_mbew into wa_mbew with key matnr = wa_ekpo-matnr bwkey = wa_ekpo-werks binary search.&lt;/P&gt;&lt;P&gt;    wa_main-verpr = wa_mbew-verpr.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    wa_main-dfval = wa_main-verpr - wa_main-netpr.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    if wa_main-verpr &amp;lt;&amp;gt; 0.&lt;/P&gt;&lt;P&gt;      wa_main-varns = wa_main-dfval / wa_main-verpr * 100.&lt;/P&gt;&lt;P&gt;    else.&lt;/P&gt;&lt;P&gt;      wa_main-varns = 0.&lt;/P&gt;&lt;P&gt;    endif.&lt;/P&gt;&lt;P&gt;   loop at it_mard into wa_mard where matnr = wa_ekpo-matnr and werks = wa_ekpo-werks.&lt;/P&gt;&lt;P&gt;   wa_main-labst = wa_main-labst + wa_mard-labst.&lt;/P&gt;&lt;P&gt;   endloop.&lt;/P&gt;&lt;P&gt;    wa_main-varvl = wa_main-dfval * wa_main-labst.&lt;/P&gt;&lt;P&gt;*new code added&lt;/P&gt;&lt;P&gt;    if wa_main-labst &amp;lt;&amp;gt; 0.&lt;/P&gt;&lt;P&gt;     append wa_main to it_main.&lt;/P&gt;&lt;P&gt;     endif.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    clear: wa_main,&lt;/P&gt;&lt;P&gt;           wa_ekpo,&lt;/P&gt;&lt;P&gt;           wa_mbew,&lt;/P&gt;&lt;P&gt;           wa_t001,&lt;/P&gt;&lt;P&gt;           wa_mard.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  endloop.&lt;/P&gt;&lt;P&gt;***this is commented by amit.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt; loop AT it_main into wa_main.&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;   if wa_main-labst = 0.&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;     delete it_main index sy-tabix.&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;   endif.&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt; endloop.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  sort it_main by werks matnr.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;ENDFORM.                    " build_itab&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  build_fldcat&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;      Generating Field Catalog&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;STRONG&gt;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="-----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;FORM build_fldcat .&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  wa_layout-zebra = 'X'.&lt;/P&gt;&lt;P&gt;  WA_LAYOUT-COLWIDTH_OPTIMIZE = 'X'.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  it_fldcat-fieldname = 'WERKS'.&lt;/P&gt;&lt;P&gt;  it_fldcat-tabname = 'IT_TEMP'.&lt;/P&gt;&lt;P&gt;  it_fldcat-seltext_m = 'Site Code'.&lt;/P&gt;&lt;P&gt;  append it_fldcat.&lt;/P&gt;&lt;P&gt;  clear it_fldcat.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  it_fldcat-fieldname = 'NAME1'.&lt;/P&gt;&lt;P&gt;  it_fldcat-tabname = 'IT_TEMP'.&lt;/P&gt;&lt;P&gt;  it_fldcat-seltext_m = 'Site Name'.&lt;/P&gt;&lt;P&gt;  append it_fldcat.&lt;/P&gt;&lt;P&gt;  clear it_fldcat.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  it_fldcat-fieldname = 'MATNR'.&lt;/P&gt;&lt;P&gt;  it_fldcat-tabname = 'IT_TEMP'.&lt;/P&gt;&lt;P&gt;  it_fldcat-seltext_m = 'Article Code'.&lt;/P&gt;&lt;P&gt;  append it_fldcat.&lt;/P&gt;&lt;P&gt;  clear it_fldcat.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  it_fldcat-fieldname = 'TXZ01'.&lt;/P&gt;&lt;P&gt;  it_fldcat-tabname = 'IT_TEMP'.&lt;/P&gt;&lt;P&gt;  it_fldcat-seltext_m = 'Article Description'.&lt;/P&gt;&lt;P&gt;  append it_fldcat.&lt;/P&gt;&lt;P&gt;  clear it_fldcat.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  it_fldcat-fieldname = 'VERPR'.&lt;/P&gt;&lt;P&gt;  it_fldcat-tabname = 'IT_TEMP'.&lt;/P&gt;&lt;P&gt;  it_fldcat-seltext_m = 'MAP'.&lt;/P&gt;&lt;P&gt;  append it_fldcat.&lt;/P&gt;&lt;P&gt;  clear it_fldcat.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  it_fldcat-fieldname = 'NETPR'.&lt;/P&gt;&lt;P&gt;  it_fldcat-tabname = 'IT_TEMP'.&lt;/P&gt;&lt;P&gt;  it_fldcat-seltext_m = 'Latest Purchase Price'.&lt;/P&gt;&lt;P&gt;  append it_fldcat.&lt;/P&gt;&lt;P&gt;  clear it_fldcat.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  it_fldcat-fieldname = 'DFVAL'.&lt;/P&gt;&lt;P&gt;  it_fldcat-tabname = 'IT_TEMP'.&lt;/P&gt;&lt;P&gt;  it_fldcat-seltext_m = 'Difference Value'.&lt;/P&gt;&lt;P&gt;  append it_fldcat.&lt;/P&gt;&lt;P&gt;  clear it_fldcat.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  it_fldcat-fieldname = 'VARNS'.&lt;/P&gt;&lt;P&gt;  it_fldcat-tabname = 'IT_TEMP'.&lt;/P&gt;&lt;P&gt;  it_fldcat-seltext_m = 'Variance%'.&lt;/P&gt;&lt;P&gt;  append it_fldcat.&lt;/P&gt;&lt;P&gt;  clear it_fldcat.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  it_fldcat-fieldname = 'LABST'.&lt;/P&gt;&lt;P&gt;  it_fldcat-tabname = 'IT_TEMP'.&lt;/P&gt;&lt;P&gt;  it_fldcat-seltext_m = 'Closing Stock'.&lt;/P&gt;&lt;P&gt;  append it_fldcat.&lt;/P&gt;&lt;P&gt;  clear it_fldcat.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  it_fldcat-fieldname = 'VARVL'.&lt;/P&gt;&lt;P&gt;  it_fldcat-tabname = 'IT_TEMP'.&lt;/P&gt;&lt;P&gt;  it_fldcat-seltext_m = 'Variance Value'.&lt;/P&gt;&lt;P&gt;  append it_fldcat.&lt;/P&gt;&lt;P&gt;  clear it_fldcat.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;ENDFORM.                    " build_fldcat&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  grid_display&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;      Grid Display&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;STRONG&gt;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="-----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;FORM grid_display .&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'&lt;/P&gt;&lt;P&gt; EXPORTING&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  I_INTERFACE_CHECK                 = ' '&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  I_BYPASSING_BUFFER                = ' '&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  I_BUFFER_ACTIVE                   = ' '&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;   I_CALLBACK_PROGRAM                = sy-cprog&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  I_CALLBACK_PF_STATUS_SET          = ' '&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  I_CALLBACK_USER_COMMAND           = ' '&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  I_CALLBACK_TOP_OF_PAGE            = ' '&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  I_CALLBACK_HTML_TOP_OF_PAGE       = ' '&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  I_CALLBACK_HTML_END_OF_LIST       = ' '&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  I_STRUCTURE_NAME                  =&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  I_BACKGROUND_ID                   = ' '&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;   I_GRID_TITLE                      = 'MAP VARIANCE REPORT'&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  I_GRID_SETTINGS                   =&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;   IS_LAYOUT                         = wa_layout&lt;/P&gt;&lt;P&gt;   IT_FIELDCAT                       = it_fldcat[]&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  IT_EXCLUDING                      =&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  IT_SPECIAL_GROUPS                 =&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  IT_SORT                           =&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  IT_FILTER                         =&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  IS_SEL_HIDE                       =&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  I_DEFAULT                         = 'X'&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  I_SAVE                            = ' '&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  IS_VARIANT                        =&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  IT_EVENTS                         =&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  IT_EVENT_EXIT                     =&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  IS_PRINT                          =&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  IS_REPREP_ID                      =&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  I_SCREEN_START_COLUMN             = 0&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  I_SCREEN_START_LINE               = 0&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  I_SCREEN_END_COLUMN               = 0&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  I_SCREEN_END_LINE                 = 0&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  I_HTML_HEIGHT_TOP                 = 0&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  I_HTML_HEIGHT_END                 = 0&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  IT_ALV_GRAPHICS                   =&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  IT_HYPERLINK                      =&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  IT_ADD_FIELDCAT                   =&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  IT_EXCEPT_QINFO                   =&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  IR_SALV_FULLSCREEN_ADAPTER        =&lt;/P&gt;&lt;/LI&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;  E_EXIT_CAUSED_BY_CALLER           =&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  ES_EXIT_CAUSED_BY_USER            =&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  TABLES&lt;/P&gt;&lt;P&gt;    T_OUTTAB                          = it_temp&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;  PROGRAM_ERROR                     = 1&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  OTHERS                            = 2&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;ENDFORM.                    " grid_display&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  variance_col&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;      text&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;STRONG&gt;----&lt;/STRONG&gt;&lt;/P&gt;&lt;HR originaltext="-----------------------------------------------------------------" /&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;FORM variance_col .&lt;/P&gt;&lt;P&gt;&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;Dropdown Options for Variance ****&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;/UL&gt;&lt;/UL&gt;&lt;/UL&gt;&lt;P&gt;    case p_frwd1.&lt;/P&gt;&lt;P&gt;      when '01'.&lt;/P&gt;&lt;P&gt;        delete it_temp where varns &amp;lt;= p_varns.&lt;/P&gt;&lt;P&gt;      when '02'.&lt;/P&gt;&lt;P&gt;        delete it_temp where varns &amp;gt;= p_varns.&lt;/P&gt;&lt;P&gt;      when '03'.&lt;/P&gt;&lt;P&gt;        delete it_temp where varns &amp;lt; p_varns.&lt;/P&gt;&lt;P&gt;      when '04'.&lt;/P&gt;&lt;P&gt;        delete it_temp where varns &amp;gt; p_varns.&lt;/P&gt;&lt;P&gt;      when '05'.&lt;/P&gt;&lt;P&gt;        delete it_temp where varns &amp;lt;&amp;gt; p_varns.&lt;/P&gt;&lt;P&gt;      when '06'.&lt;/P&gt;&lt;P&gt;        delete it_temp where varns = p_varns.&lt;/P&gt;&lt;P&gt;      when others.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    endcase.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;ENDFORM.                    " variance_col&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 06 Mar 2008 05:32:02 GMT</pubDate>
      <guid>https://community.sap.com/t5/application-development-and-automation-discussions/performance-issues/m-p/3539849#M851649</guid>
      <dc:creator>Former Member</dc:creator>
      <dc:date>2008-03-06T05:32:02Z</dc:date>
    </item>
    <item>
      <title>Re: performance issues</title>
      <link>https://community.sap.com/t5/application-development-and-automation-discussions/performance-issues/m-p/3539850#M851650</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi Sekhar,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;1. When trying to fetch records based on the select options, always check if the selectoptions is not initial. &lt;/P&gt;&lt;P&gt;2. If the table used in 'IN' clause contains large number of data, it results in performance issue. Try to use 'FOR ALL ENTRIES IN....WHERE..'   if possible.&lt;/P&gt;&lt;P&gt;3. DONOT put a select query inside a LOOP.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;UR CODE -&lt;/P&gt;&lt;P&gt;*loop at itab.&lt;/P&gt;&lt;P&gt;    &lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;select single maktx from makt into v_maktx&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;where matnr eq itab-matnr.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;*endloop.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Instead, Fetch records from maktx for all emtries in itab WHERE matnr eq itab-matnr.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;4. Instead of putting teh internal table in a loop, you can directly use - DELETE &amp;lt;internal table&amp;gt; WHERE field1 = 'abc'&amp;lt;condition&amp;gt;.&lt;/P&gt;&lt;P&gt;5. Try to use primary keys or keys with indexes created on them.&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Fri, 07 Mar 2008 10:46:34 GMT</pubDate>
      <guid>https://community.sap.com/t5/application-development-and-automation-discussions/performance-issues/m-p/3539850#M851650</guid>
      <dc:creator>Former Member</dc:creator>
      <dc:date>2008-03-07T10:46:34Z</dc:date>
    </item>
  </channel>
</rss>

