<?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: ALV display in Application Development and Automation Discussions</title>
    <link>https://community.sap.com/t5/application-development-and-automation-discussions/alv-display/m-p/2729309#M633485</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;&lt;/P&gt;&lt;P&gt;&lt;B&gt;&lt;/B&gt;&lt;/P&gt;&lt;P&gt;Line Color in ALV Example&lt;/P&gt; &lt;BR /&gt;&lt;B&gt;&lt;P&gt;An example of using linecolor (ALV).&lt;/P&gt;&lt;/B&gt; &lt;P&gt;&lt;/P&gt;&lt;P&gt;Here you have a good example of coloring rows, columns and specific cells in alvs. It comes in an example of how to use hashed tables.  &lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;For coloured rows and cols check gp_bymat&lt;/P&gt;&lt;P&gt;for coloured specific rows uncheck gp_bymat. &lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;report zuseofhashedtables.&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;Program: ZUseOfHashedTables                                        **&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;/UL&gt;&lt;P&gt;************************************************************************&lt;/P&gt;&lt;UL&gt;&lt;UL&gt;&lt;LI level="2" type="ul"&gt;&lt;P&gt;Author: Horacio Zapettini                                          **&lt;/P&gt;&lt;/LI&gt;&lt;LI level="2" type="ul"&gt;&lt;P&gt;                                                                   **&lt;/P&gt;&lt;/LI&gt;&lt;LI level="2" type="ul"&gt;&lt;P&gt;Versions: 4.6b - 4.6c                                              **&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;/UL&gt;&lt;P&gt;************************************************************************&lt;/P&gt;&lt;UL&gt;&lt;UL&gt;&lt;LI level="2" type="ul"&gt;&lt;P&gt;Notes:                                                             **&lt;/P&gt;&lt;/LI&gt;&lt;LI level="2" type="ul"&gt;&lt;P&gt;    this program shows how we can use hashed tables to improve     **&lt;/P&gt;&lt;/LI&gt;&lt;LI level="2" type="ul"&gt;&lt;P&gt;    the responce time.                                             **&lt;/P&gt;&lt;/LI&gt;&lt;LI level="2" type="ul"&gt;&lt;P&gt;    It shows,                                                      **&lt;/P&gt;&lt;/LI&gt;&lt;LI level="2" type="ul"&gt;&lt;P&gt;       1. how to declare hashed tables                             **&lt;/P&gt;&lt;/LI&gt;&lt;LI level="2" type="ul"&gt;&lt;P&gt;       2. a cache-like technique to improve access to master data  **&lt;/P&gt;&lt;/LI&gt;&lt;LI level="2" type="ul"&gt;&lt;P&gt;       3. how to collect data using hashed tables                  **&lt;/P&gt;&lt;/LI&gt;&lt;LI level="2" type="ul"&gt;&lt;P&gt;       4. how to avoid deletions of unwanted data                  **&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;/UL&gt;&lt;P&gt;************************************************************************&lt;/P&gt;&lt;UL&gt;&lt;UL&gt;&lt;LI level="2" type="ul"&gt;&lt;P&gt;Results: the test we run read about 31000 rows from mkpf, 150000   **&lt;/P&gt;&lt;/LI&gt;&lt;LI level="2" type="ul"&gt;&lt;P&gt;         rows from mseg, 500 rows from makt and 400 from lfa1.     **&lt;/P&gt;&lt;/LI&gt;&lt;LI level="2" type="ul"&gt;&lt;P&gt;         it filled ht_lst with 24500 rows and displayed them in    **&lt;/P&gt;&lt;/LI&gt;&lt;LI level="2" type="ul"&gt;&lt;P&gt;         alv grid format.                                          **&lt;/P&gt;&lt;/LI&gt;&lt;LI level="2" type="ul"&gt;&lt;P&gt;                                                                   **&lt;/P&gt;&lt;/LI&gt;&lt;LI level="2" type="ul"&gt;&lt;P&gt;         It took about 65 secodns to perform this task (first time **&lt;/P&gt;&lt;/LI&gt;&lt;LI level="2" type="ul"&gt;&lt;P&gt;         we run it when all the db buffers are empty.              **&lt;/P&gt;&lt;/LI&gt;&lt;LI level="2" type="ul"&gt;&lt;P&gt;                                                                   **&lt;/P&gt;&lt;/LI&gt;&lt;LI level="2" type="ul"&gt;&lt;P&gt;         The same program with standard tables needed 140 seconds  **&lt;/P&gt;&lt;/LI&gt;&lt;LI level="2" type="ul"&gt;&lt;P&gt;         to run with the same recordset and with buffers filled in **&lt;/P&gt;&lt;/LI&gt;&lt;LI level="2" type="ul"&gt;&lt;P&gt;                                                                   **&lt;/P&gt;&lt;/LI&gt;&lt;LI level="2" type="ul"&gt;&lt;P&gt;         A simmilar test over more than a million rows&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;/UL&gt;&lt;P&gt;************************************************************************&lt;/P&gt;&lt;UL&gt;&lt;UL&gt;&lt;LI level="2" type="ul"&gt;&lt;P&gt;Objetive: show a list that consists of  all the material movements **&lt;/P&gt;&lt;/LI&gt;&lt;LI level="2" type="ul"&gt;&lt;P&gt;         '101' - '901' for a certain range of dates in mkpf-budat. **&lt;/P&gt;&lt;/LI&gt;&lt;LI level="2" type="ul"&gt;&lt;P&gt;the columns to be displayed are:                                   **&lt;/P&gt;&lt;/LI&gt;&lt;LI level="2" type="ul"&gt;&lt;P&gt;         mkpf-budat,                                               **&lt;/P&gt;&lt;/LI&gt;&lt;LI level="2" type="ul"&gt;&lt;P&gt;         mkpf-mblnr,                                               **&lt;/P&gt;&lt;/LI&gt;&lt;LI level="2" type="ul"&gt;&lt;P&gt;         mseg-lifnr,                                               **&lt;/P&gt;&lt;/LI&gt;&lt;LI level="2" type="ul"&gt;&lt;P&gt;         lfa1-name1,                                               **&lt;/P&gt;&lt;/LI&gt;&lt;LI level="2" type="ul"&gt;&lt;P&gt;         mkpf-xblnr,                                               **&lt;/P&gt;&lt;/LI&gt;&lt;LI level="2" type="ul"&gt;&lt;P&gt;         mseg-zeile                                                **&lt;/P&gt;&lt;/LI&gt;&lt;LI level="2" type="ul"&gt;&lt;P&gt;         mseg-charg,                                               **&lt;/P&gt;&lt;/LI&gt;&lt;LI level="2" type="ul"&gt;&lt;P&gt;         mseg-matnr,                                               **&lt;/P&gt;&lt;/LI&gt;&lt;LI level="2" type="ul"&gt;&lt;P&gt;         makt-maktx,                                               **&lt;/P&gt;&lt;/LI&gt;&lt;LI level="2" type="ul"&gt;&lt;P&gt;         mseg-erfmg,                                               **&lt;/P&gt;&lt;/LI&gt;&lt;LI level="2" type="ul"&gt;&lt;P&gt;         mseg-erfme.                                               **&lt;/P&gt;&lt;/LI&gt;&lt;LI level="2" type="ul"&gt;&lt;P&gt;or show a sumary list by matnr - menge                             **&lt;/P&gt;&lt;/LI&gt;&lt;LI level="2" type="ul"&gt;&lt;P&gt;                                                                   **&lt;/P&gt;&lt;/LI&gt;&lt;LI level="2" type="ul"&gt;&lt;P&gt;You'll have to create a pf-status called vista -                   **&lt;/P&gt;&lt;/LI&gt;&lt;LI level="2" type="ul"&gt;&lt;P&gt;See form set_pf_status for details                                 **&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;/UL&gt;&lt;P&gt;************************************************************************&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;tables used -&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;/UL&gt;&lt;P&gt;tables: mkpf,&lt;/P&gt;&lt;P&gt;        mseg,&lt;/P&gt;&lt;P&gt;        lfa1,&lt;/P&gt;&lt;P&gt;        makt.&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;global hashed tables used&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;/UL&gt;&lt;P&gt;*&lt;/P&gt;&lt;P&gt;data: begin of wa_mkpf, "header&lt;/P&gt;&lt;P&gt;      mblnr like mkpf-mblnr,&lt;/P&gt;&lt;P&gt;      mjahr like mkpf-mjahr,&lt;/P&gt;&lt;P&gt;      budat like mkpf-budat,&lt;/P&gt;&lt;P&gt;      xblnr like mkpf-xblnr,&lt;/P&gt;&lt;P&gt;      end of wa_mkpf.&lt;/P&gt;&lt;P&gt;data: ht_mkpf like hashed table of wa_mkpf&lt;/P&gt;&lt;P&gt;      with unique key mblnr mjahr&lt;/P&gt;&lt;P&gt;      with header line.&lt;/P&gt;&lt;P&gt;data: st_mkpf like standard table of wa_mkpf&lt;/P&gt;&lt;P&gt;      with header line.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*&lt;/P&gt;&lt;P&gt;data: begin of wa_mseg, " line items&lt;/P&gt;&lt;P&gt;      mblnr like mseg-mblnr,&lt;/P&gt;&lt;P&gt;      mjahr like mseg-mjahr,&lt;/P&gt;&lt;P&gt;      zeile like mseg-zeile,&lt;/P&gt;&lt;P&gt;      bwart like mseg-bwart,&lt;/P&gt;&lt;P&gt;      charg like mseg-charg,&lt;/P&gt;&lt;P&gt;      matnr like mseg-matnr,&lt;/P&gt;&lt;P&gt;      lifnr like mseg-lifnr,&lt;/P&gt;&lt;P&gt;      erfmg like mseg-erfmg,&lt;/P&gt;&lt;P&gt;      erfme like mseg-erfme,&lt;/P&gt;&lt;P&gt;      end of wa_mseg.&lt;/P&gt;&lt;P&gt;data ht_mseg like hashed table of wa_mseg&lt;/P&gt;&lt;P&gt;      with unique key mblnr mjahr zeile&lt;/P&gt;&lt;P&gt;      with header line.&lt;/P&gt;&lt;P&gt;data st_mseg like standard table of wa_mseg&lt;/P&gt;&lt;P&gt;      with header line.&lt;/P&gt;&lt;P&gt;&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;cache structure for lfa1 records&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;/UL&gt;&lt;P&gt;data: begin of wa_lfa1,&lt;/P&gt;&lt;P&gt;      lifnr like lfa1-lifnr,&lt;/P&gt;&lt;P&gt;      name1 like lfa1-name1,&lt;/P&gt;&lt;P&gt;      end of wa_lfa1.&lt;/P&gt;&lt;P&gt;data ht_lfa1 like hashed table of wa_lfa1&lt;/P&gt;&lt;P&gt;      with unique key lifnr&lt;/P&gt;&lt;P&gt;      with header line.&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;cache structure for material related data&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;/UL&gt;&lt;P&gt;data: begin of wa_material,&lt;/P&gt;&lt;P&gt;      matnr like makt-matnr,&lt;/P&gt;&lt;P&gt;      maktx like makt-maktx,&lt;/P&gt;&lt;P&gt;      end of wa_material.&lt;/P&gt;&lt;P&gt;data: ht_material like hashed table of wa_material&lt;/P&gt;&lt;P&gt;        with unique key matnr&lt;/P&gt;&lt;P&gt;        with header line.&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;result table&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;/UL&gt;&lt;P&gt;data: begin of wa_lst, "&lt;/P&gt;&lt;P&gt;      budat like mkpf-budat,&lt;/P&gt;&lt;P&gt;      mblnr like mseg-mblnr,&lt;/P&gt;&lt;P&gt;      lifnr like mseg-lifnr,&lt;/P&gt;&lt;P&gt;      name1 like lfa1-name1,    &lt;/P&gt;&lt;P&gt;      xblnr like mkpf-xblnr,&lt;/P&gt;&lt;P&gt;      zeile like mseg-zeile,&lt;/P&gt;&lt;P&gt;      charg like mseg-charg,&lt;/P&gt;&lt;P&gt;      matnr like mseg-matnr,&lt;/P&gt;&lt;P&gt;      maktx like makt-maktx,&lt;/P&gt;&lt;P&gt;      erfmg like mseg-erfmg,&lt;/P&gt;&lt;P&gt;      erfme like mseg-erfme,&lt;/P&gt;&lt;P&gt;      mjahr like mseg-mjahr,&lt;/P&gt;&lt;P&gt;      end of wa_lst.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;data: ht_lst like hashed table of wa_lst&lt;/P&gt;&lt;P&gt;        with unique key mblnr mjahr zeile&lt;/P&gt;&lt;P&gt;        with header line.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;data: begin of wa_lst1, " sumary by material&lt;/P&gt;&lt;P&gt;      matnr like mseg-matnr,&lt;/P&gt;&lt;P&gt;      maktx like makt-maktx,&lt;/P&gt;&lt;P&gt;      erfmg like mseg-erfmg,&lt;/P&gt;&lt;P&gt;      erfme like mseg-erfme,&lt;/P&gt;&lt;P&gt;      color_line(4) TYPE c,           " Line color&lt;/P&gt;&lt;P&gt;      color_cell    TYPE lvc_t_scol,  " Cell color&lt;/P&gt;&lt;P&gt;      celltab type LVC_T_STYL,&lt;/P&gt;&lt;P&gt;      end of wa_lst1.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;data: ht_lst1 like hashed table of wa_lst1&lt;/P&gt;&lt;P&gt;        with unique key matnr&lt;/P&gt;&lt;P&gt;        with header line.&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;structures for alv grid display.&lt;/P&gt;&lt;/LI&gt;&lt;LI level="2" type="ul"&gt;&lt;P&gt;itabs&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;/UL&gt;&lt;P&gt;type-pools: slis.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;data: it_lst            like standard table of wa_lst with header line,&lt;/P&gt;&lt;P&gt;      it_fieldcat_lst   type slis_t_fieldcat_alv with header line,&lt;/P&gt;&lt;P&gt;      it_sort_lst       type slis_t_sortinfo_alv,&lt;/P&gt;&lt;P&gt;      it_lst1           like standard table of wa_lst1 with header line,&lt;/P&gt;&lt;P&gt;      it_fieldcat_lst1  type slis_t_fieldcat_alv with header line,&lt;/P&gt;&lt;P&gt;      it_sort_lst1      type slis_t_sortinfo_alv.&lt;/P&gt;&lt;UL&gt;&lt;UL&gt;&lt;LI level="2" type="ul"&gt;&lt;P&gt;structures&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;/UL&gt;&lt;P&gt;data: wa_sort         type slis_sortinfo_alv,&lt;/P&gt;&lt;P&gt;      ls_layout       type slis_layout_alv.&lt;/P&gt;&lt;UL&gt;&lt;UL&gt;&lt;LI level="2" type="ul"&gt;&lt;P&gt;color management.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;/UL&gt;&lt;P&gt;DATA  : wa_color    TYPE lvc_s_scol.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Internal table for color management.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;DATA : it_color    TYPE TABLE          OF lvc_s_scol.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;itab for input enabling.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;DATA: lt_celltab TYPE lvc_t_styl. "&lt;/P&gt;&lt;P&gt;&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;global varialbes&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;/UL&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;data: g_lines type i.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;data: g_repid like sy-repid,&lt;/P&gt;&lt;P&gt;      ok_code       like sy-ucomm.&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;selection-screen&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;/UL&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;"text: Dates:&lt;/P&gt;&lt;P&gt;select-options: so_budat for mkpf-budat default sy-datum.&lt;/P&gt;&lt;P&gt;"text: Material numbers.&lt;/P&gt;&lt;P&gt;select-options: so_matnr for mseg-matnr.&lt;/P&gt;&lt;P&gt;selection-screen uline.&lt;/P&gt;&lt;P&gt;selection-screen skip 1.&lt;/P&gt;&lt;P&gt;"Text: show summary by material.&lt;/P&gt;&lt;P&gt;parameters: gp_bymat as checkbox default ''.&lt;/P&gt;&lt;P&gt;parameters: gp_hier  as checkbox default 'X'.&lt;/P&gt;&lt;P&gt;start-of-selection.&lt;/P&gt;&lt;P&gt;  perform get_data.&lt;/P&gt;&lt;P&gt;  perform show_data.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;end-of-selection.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&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;      FORM get_data                                                 *&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&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;      ........                                                      *&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&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;        select mblnr mjahr budat xblnr&lt;/P&gt;&lt;P&gt;            into table ht_mkpf&lt;/P&gt;&lt;P&gt;           from mkpf&lt;/P&gt;&lt;P&gt;          where budat in so_budat. " make use of std index.&lt;/P&gt;&lt;UL&gt;&lt;UL&gt;&lt;LI level="2" type="ul"&gt;&lt;P&gt;have we retrieved data from mkpf?&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;/UL&gt;&lt;P&gt;  describe table ht_mkpf lines g_lines.&lt;/P&gt;&lt;P&gt;  if g_lines &amp;gt; 0.&lt;/P&gt;&lt;UL&gt;&lt;UL&gt;&lt;LI level="2" type="ul"&gt;&lt;P&gt;if true then retrieve all related records from mseg.&lt;/P&gt;&lt;/LI&gt;&lt;LI level="2" type="ul"&gt;&lt;P&gt;Doing this way we make sure that the access is by primary key&lt;/P&gt;&lt;/LI&gt;&lt;LI level="2" type="ul"&gt;&lt;P&gt;of mseg.&lt;/P&gt;&lt;/LI&gt;&lt;LI level="2" type="ul"&gt;&lt;P&gt;The reason is that is faster to filter them in memory&lt;/P&gt;&lt;/LI&gt;&lt;LI level="2" type="ul"&gt;&lt;P&gt;than to allow the db server to do it.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;/UL&gt;&lt;P&gt;    select mblnr mjahr zeile bwart charg&lt;/P&gt;&lt;P&gt;             matnr lifnr erfmg erfme&lt;/P&gt;&lt;P&gt;      into table ht_mseg&lt;/P&gt;&lt;P&gt;      from mseg&lt;/P&gt;&lt;P&gt;        for all entries in ht_mkpf&lt;/P&gt;&lt;P&gt;     where mblnr = ht_mkpf-mblnr&lt;/P&gt;&lt;P&gt;       and mjahr = ht_mkpf-mjahr.&lt;/P&gt;&lt;P&gt;  endif.&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;fill t_lst or t_lst1 according to user's choice.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;/UL&gt;&lt;P&gt;  if gp_bymat = ' '.&lt;/P&gt;&lt;P&gt;    perform fill_ht_lst.&lt;/P&gt;&lt;P&gt;  else.&lt;/P&gt;&lt;P&gt;    perform fill_ht_lst1.&lt;/P&gt;&lt;P&gt;  endif.&lt;/P&gt;&lt;P&gt;endform.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;form fill_ht_lst.&lt;/P&gt;&lt;P&gt;  refresh ht_lst.&lt;/P&gt;&lt;UL&gt;&lt;UL&gt;&lt;LI level="2" type="ul"&gt;&lt;P&gt;Example: how to discard unwanted data in an efficient way.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;/UL&gt;&lt;P&gt;  loop at ht_mseg.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  filter unwanted data&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;    check ht_mseg-bwart = '101' or ht_mseg-bwart = '901'.&lt;/P&gt;&lt;P&gt;    check ht_mseg-matnr in so_matnr.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  read header line.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;    read table ht_mkpf with table key mblnr = ht_mseg-mblnr&lt;/P&gt;&lt;P&gt;    mjahr = ht_mseg-mjahr.&lt;/P&gt;&lt;P&gt;    clear ht_lst.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt; * note : this may be faster if you specify field by field.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;    move-corresponding ht_mkpf to ht_lst.&lt;/P&gt;&lt;P&gt;    move-corresponding ht_mseg to ht_lst.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    perform read_lfa1 using ht_mseg-lifnr changing ht_lst-name1.&lt;/P&gt;&lt;P&gt;    perform read_material using ht_mseg-matnr changing ht_lst-maktx.&lt;/P&gt;&lt;P&gt;    insert table ht_lst.&lt;/P&gt;&lt;P&gt;  endloop.&lt;/P&gt;&lt;P&gt;endform.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;form fill_ht_lst1.&lt;/P&gt;&lt;P&gt;data: colorear.&lt;/P&gt;&lt;P&gt;  refresh ht_lst1.&lt;/P&gt;&lt;UL&gt;&lt;UL&gt;&lt;LI level="2" type="ul"&gt;&lt;P&gt;Example: how to discard unwanted data in an efficient way.&lt;/P&gt;&lt;/LI&gt;&lt;LI level="2" type="ul"&gt;&lt;P&gt;         hot to simulate a collect in a faster way&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;/UL&gt;&lt;P&gt;  loop at ht_mseg.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  filter unwanted data&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;    check ht_mseg-bwart = '101' or ht_mseg-bwart = '901'.&lt;/P&gt;&lt;P&gt;    check ht_mseg-matnr in so_matnr.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt; * note : this may be faster if you specify field by field.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    read table ht_lst1 with table key matnr = ht_mseg-matnr&lt;/P&gt;&lt;P&gt;    transporting erfmg.&lt;/P&gt;&lt;P&gt;    if sy-subrc &amp;lt;&amp;gt; 0. " if matnr doesn't exist in sumary table&lt;/P&gt;&lt;P&gt;    " insert a new record&lt;/P&gt;&lt;P&gt;      clear ht_lst1.&lt;/P&gt;&lt;P&gt;      ht_lst1-matnr = ht_mseg-matnr.&lt;/P&gt;&lt;P&gt;      perform read_material using ht_mseg-matnr changing ht_lst1-maktx.&lt;/P&gt;&lt;P&gt;      ht_lst1-erfmg = ht_mseg-erfmg.&lt;/P&gt;&lt;P&gt;      ht_lst1-erfme = ht_mseg-erfme.&lt;/P&gt;&lt;P&gt;      if colorear = ''.&lt;/P&gt;&lt;P&gt;        colorear = 'X'.&lt;/P&gt;&lt;P&gt;        refresh it_color.&lt;/P&gt;&lt;P&gt;        ht_lst1-color_cell[] = it_color[].&lt;/P&gt;&lt;P&gt;        MOVE 'C410' TO ht_lst1-color_line.&lt;/P&gt;&lt;P&gt;      else.&lt;/P&gt;&lt;P&gt;        colorear = ' '.&lt;/P&gt;&lt;P&gt;        refresh it_color. clear it_color.&lt;/P&gt;&lt;P&gt;        MOVE 'MATNR' TO wa_color-fname.&lt;/P&gt;&lt;P&gt;        MOVE '6'         TO wa_color-color-col.&lt;/P&gt;&lt;P&gt;        MOVE '1'         TO wa_color-color-int.&lt;/P&gt;&lt;P&gt;        MOVE '1'         TO wa_color-color-inv.&lt;/P&gt;&lt;P&gt;        APPEND wa_color TO it_color.&lt;/P&gt;&lt;P&gt;        MOVE 'MAKTX' TO wa_color-fname.&lt;/P&gt;&lt;P&gt;        MOVE '3'         TO wa_color-color-col.&lt;/P&gt;&lt;P&gt;        MOVE '1'         TO wa_color-color-int.&lt;/P&gt;&lt;P&gt;        MOVE '1'         TO wa_color-color-inv.&lt;/P&gt;&lt;P&gt;        APPEND wa_color TO it_color.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;        MOVE 'ERFMG' TO wa_color-fname.&lt;/P&gt;&lt;P&gt;        MOVE '5'         TO wa_color-color-col.&lt;/P&gt;&lt;P&gt;        MOVE '1'         TO wa_color-color-int.&lt;/P&gt;&lt;P&gt;        MOVE '1'         TO wa_color-color-inv.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;        APPEND wa_color TO it_color.&lt;/P&gt;&lt;P&gt;        ht_lst1-color_cell[] = it_color[].&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;        clear ht_lst1-color_line.&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;      insert table ht_lst1.&lt;/P&gt;&lt;P&gt;    else." a record was found.&lt;/P&gt;&lt;P&gt;    " collect erfmg.  To do so, fill in the unique key and add&lt;/P&gt;&lt;P&gt;    " the numeric fields.&lt;/P&gt;&lt;P&gt;      ht_lst1-matnr = ht_mseg-matnr.&lt;/P&gt;&lt;P&gt;      add ht_mseg-erfmg to ht_lst1-erfmg.&lt;/P&gt;&lt;P&gt;      modify table ht_lst1 transporting erfmg.&lt;/P&gt;&lt;P&gt;    endif.&lt;/P&gt;&lt;P&gt;  endloop.&lt;/P&gt;&lt;P&gt;endform.&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;implementation of cache for lfa1.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;/UL&gt;&lt;P&gt;form read_lfa1 using p_lifnr changing p_name1.&lt;/P&gt;&lt;P&gt;        read table ht_lfa1 with table key lifnr = p_lifnr&lt;/P&gt;&lt;P&gt;        transporting name1.&lt;/P&gt;&lt;P&gt;  if sy-subrc &amp;lt;&amp;gt; 0.&lt;/P&gt;&lt;P&gt;    clear ht_lfa1.&lt;/P&gt;&lt;P&gt;    ht_lfa1-lifnr = p_lifnr.&lt;/P&gt;&lt;P&gt;    select single name1&lt;/P&gt;&lt;P&gt;       into ht_lfa1-name1&lt;/P&gt;&lt;P&gt;      from lfa1&lt;/P&gt;&lt;P&gt;    where lifnr = p_lifnr.&lt;/P&gt;&lt;P&gt;    if sy-subrc &amp;lt;&amp;gt; 0. ht_lfa1-name1 = 'n/a in lfa1'. endif.&lt;/P&gt;&lt;P&gt;    insert table ht_lfa1.&lt;/P&gt;&lt;P&gt;  endif.&lt;/P&gt;&lt;P&gt;  p_name1 = ht_lfa1-name1.&lt;/P&gt;&lt;P&gt;endform.&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;implementation of cache for material data&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;/UL&gt;&lt;P&gt;form read_material using p_matnr changing p_maktx.&lt;/P&gt;&lt;P&gt;  read table ht_material with table key matnr = p_matnr&lt;/P&gt;&lt;P&gt;  transporting maktx.&lt;/P&gt;&lt;P&gt;  if sy-subrc &amp;lt;&amp;gt; 0.&lt;/P&gt;&lt;P&gt;    ht_material-matnr = p_matnr.&lt;/P&gt;&lt;P&gt;    select single maktx into  ht_material-maktx&lt;/P&gt;&lt;P&gt;      from makt&lt;/P&gt;&lt;P&gt;     where spras = sy-langu&lt;/P&gt;&lt;P&gt;       and matnr = p_matnr.&lt;/P&gt;&lt;P&gt;    if sy-subrc &amp;lt;&amp;gt; 0. ht_material-maktx = 'n/a in makt'. endif.&lt;/P&gt;&lt;P&gt;    insert table ht_material.&lt;/P&gt;&lt;P&gt;  endif.&lt;/P&gt;&lt;P&gt;  p_maktx = ht_material-maktx.&lt;/P&gt;&lt;P&gt;endform.&lt;/P&gt;&lt;P&gt;form show_data.&lt;/P&gt;&lt;P&gt;  if gp_hier = 'X'. "no anda.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;   perform show_hierarchicalALV.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  else.&lt;/P&gt;&lt;P&gt;    if gp_bymat = ' '.&lt;/P&gt;&lt;P&gt;      perform show_ht_lst.&lt;/P&gt;&lt;P&gt;    else.&lt;/P&gt;&lt;P&gt;      perform show_ht_lst1.&lt;/P&gt;&lt;P&gt;    endif.&lt;/P&gt;&lt;P&gt;  endif.&lt;/P&gt;&lt;P&gt;endform.&lt;/P&gt;&lt;P&gt;form show_hierarchicalALV.&lt;/P&gt;&lt;P&gt;st_mkpf[] = ht_mkpf[].&lt;/P&gt;&lt;P&gt;st_mseg[] = ht_mseg[].&lt;/P&gt;&lt;P&gt;call function 'REUSE_ALV_HIERSEQ_LIST_DISPLAY'&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt; exporting&lt;/P&gt;&lt;/LI&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_CALLBACK_PROGRAM             =&lt;/P&gt;&lt;/LI&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;  IS_LAYOUT                      =&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  IT_FIELDCAT                    =&lt;/P&gt;&lt;/LI&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_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_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;   i_tabname_header               =&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;   i_tabname_item                 =&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  I_STRUCTURE_NAME_HEADER        =&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  I_STRUCTURE_NAME_ITEM          =&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;   is_keyinfo                     =&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_BUFFER_ACTIVE                =&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;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_header                = st_mkpf&lt;/P&gt;&lt;P&gt;    t_outtab_item                  = st_mseg&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.&lt;/P&gt;&lt;P&gt;form show_ht_lst.&lt;/P&gt;&lt;P&gt;  "needed because the FM can't use a hashed table.&lt;/P&gt;&lt;P&gt;  it_lst[] = ht_lst[].&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  perform fill_layout using 'full display'&lt;/P&gt;&lt;P&gt;                       changing ls_layout.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  perform fill_columns_lst.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt; perform sort_lst.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  g_repid = sy-repid.&lt;/P&gt;&lt;P&gt;  call function 'REUSE_ALV_GRID_DISPLAY'&lt;/P&gt;&lt;P&gt;       exporting&lt;/P&gt;&lt;P&gt;            i_callback_program       = g_repid&lt;/P&gt;&lt;P&gt;            i_callback_pf_status_set = 'SET_PF_STATUS'&lt;/P&gt;&lt;P&gt;            is_layout                = ls_layout&lt;/P&gt;&lt;P&gt;            it_fieldcat              = it_fieldcat_lst[]&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;           it_sort                  = it_sort_lst&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;       tables&lt;/P&gt;&lt;P&gt;            t_outtab                 = it_lst&lt;/P&gt;&lt;P&gt;       exceptions&lt;/P&gt;&lt;P&gt;            program_error            = 1&lt;/P&gt;&lt;P&gt;            others                   = 2.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;endform.&lt;/P&gt;&lt;P&gt;form show_ht_lst1.&lt;/P&gt;&lt;P&gt;  "needed because the FM can't use a hashed table.&lt;/P&gt;&lt;P&gt;  it_lst1[] = ht_lst1[].&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  perform fill_layout using 'Sumary by matnr'&lt;/P&gt;&lt;P&gt;                       changing ls_layout.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  perform fill_columns_lst1.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt; perform sort_lst.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  g_repid = sy-repid.&lt;/P&gt;&lt;P&gt;  call function 'REUSE_ALV_GRID_DISPLAY'&lt;/P&gt;&lt;P&gt;       exporting&lt;/P&gt;&lt;P&gt;            i_callback_program       = g_repid&lt;/P&gt;&lt;P&gt;            i_callback_pf_status_set = 'SET_PF_STATUS'&lt;/P&gt;&lt;P&gt;            is_layout                = ls_layout&lt;/P&gt;&lt;P&gt;            it_fieldcat              = it_fieldcat_lst1[]&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;           it_sort                  = it_sort_lst&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;       tables&lt;/P&gt;&lt;P&gt;            t_outtab                 = it_lst1&lt;/P&gt;&lt;P&gt;       exceptions&lt;/P&gt;&lt;P&gt;            program_error            = 1&lt;/P&gt;&lt;P&gt;            others                   = 2.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;endform.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;form fill_layout using p_window_titlebar&lt;/P&gt;&lt;P&gt;               changing cs_layo type slis_layout_alv.&lt;/P&gt;&lt;P&gt;  clear cs_layo.&lt;/P&gt;&lt;P&gt;  cs_layo-window_titlebar        = p_window_titlebar.&lt;/P&gt;&lt;P&gt;  cs_layo-edit                   = 'X'.&lt;/P&gt;&lt;P&gt;  cs_layo-edit_mode              = space.&lt;/P&gt;&lt;P&gt;  MOVE 'COLOR_LINE' TO cs_layo-info_fieldname.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Field that identify cell color in inetrnal table&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  MOVE 'COLOR_CELL' TO cs_layo-coltab_fieldname.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt; move 'CELLTAB' TO cs_layo-stylefname.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;endform.                    " armar_layout_stock&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;form set_pf_status using rt_extab type slis_t_extab.&lt;/P&gt;&lt;UL&gt;&lt;UL&gt;&lt;LI level="2" type="ul"&gt;&lt;P&gt;create a new status&lt;/P&gt;&lt;/LI&gt;&lt;LI level="2" type="ul"&gt;&lt;P&gt;and then select extras -&amp;gt; adjust template -&amp;gt; listviewer&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;/UL&gt;&lt;P&gt;  set pf-status 'VISTA'.&lt;/P&gt;&lt;P&gt;endform.        "set_pf_status&lt;/P&gt;&lt;P&gt;define add_lst.&lt;/P&gt;&lt;P&gt;  clear it_fieldcat_lst.&lt;/P&gt;&lt;P&gt;  it_fieldcat_lst-fieldname     = &amp;amp;1.&lt;/P&gt;&lt;P&gt;  it_fieldcat_lst-outputlen     = &amp;amp;2.&lt;/P&gt;&lt;P&gt;  it_fieldcat_lst-ddictxt       = 'L'.&lt;/P&gt;&lt;P&gt;  it_fieldcat_lst-seltext_l       = &amp;amp;1.&lt;/P&gt;&lt;P&gt;  it_fieldcat_lst-seltext_m       = &amp;amp;1.&lt;/P&gt;&lt;P&gt;  it_fieldcat_lst-seltext_m       = &amp;amp;1.&lt;/P&gt;&lt;P&gt;  if &amp;amp;1 = 'MATNR'.&lt;/P&gt;&lt;P&gt;    it_fieldcat_lst-emphasize = 'C111'.&lt;/P&gt;&lt;P&gt;  endif.&lt;/P&gt;&lt;P&gt;  append it_fieldcat_lst.&lt;/P&gt;&lt;P&gt;end-of-definition.&lt;/P&gt;&lt;P&gt;define add_lst1.&lt;/P&gt;&lt;P&gt;  clear it_fieldcat_lst.&lt;/P&gt;&lt;P&gt;  it_fieldcat_lst1-fieldname     = &amp;amp;1.&lt;/P&gt;&lt;P&gt;  it_fieldcat_lst1-outputlen     = &amp;amp;2.&lt;/P&gt;&lt;P&gt;  it_fieldcat_lst1-ddictxt       = 'L'.&lt;/P&gt;&lt;P&gt;  it_fieldcat_lst1-seltext_l       = &amp;amp;1.&lt;/P&gt;&lt;P&gt;  it_fieldcat_lst1-seltext_m       = &amp;amp;1.&lt;/P&gt;&lt;P&gt;  it_fieldcat_lst1-seltext_m       = &amp;amp;1.&lt;/P&gt;&lt;P&gt;  append it_fieldcat_lst1.&lt;/P&gt;&lt;P&gt;end-of-definition.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;form fill_columns_lst.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;set columns for output.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  refresh it_fieldcat_lst.&lt;/P&gt;&lt;P&gt;*&lt;/P&gt;&lt;P&gt;  add_lst 'BUDAT' 10.&lt;/P&gt;&lt;P&gt;  add_lst   'MBLNR' 10.&lt;/P&gt;&lt;P&gt;  add_lst  'LIFNR' 10.&lt;/P&gt;&lt;P&gt;  add_lst  'NAME1' 35.&lt;/P&gt;&lt;P&gt;  add_lst  'XBLNR' 15.&lt;/P&gt;&lt;P&gt;  add_lst    'ZEILE' 5.&lt;/P&gt;&lt;P&gt;  add_lst    'CHARG' 10.&lt;/P&gt;&lt;P&gt;  add_lst   'MATNR' 18.&lt;/P&gt;&lt;P&gt;  add_lst   'MAKTX' 30.&lt;/P&gt;&lt;P&gt;  add_lst   'ERFMG' 17.&lt;/P&gt;&lt;P&gt;  add_lst   'ERFME' 5.&lt;/P&gt;&lt;P&gt;  add_lst   'MJAHR' 4.&lt;/P&gt;&lt;P&gt;endform.&lt;/P&gt;&lt;P&gt;form fill_columns_lst1.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;set columns for output.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  refresh it_fieldcat_lst1.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  add_lst1 'MATNR' 18.&lt;/P&gt;&lt;P&gt;  add_lst1 'MAKTX' 30.&lt;/P&gt;&lt;P&gt;  add_lst1 'ERFMG' 17.&lt;/P&gt;&lt;P&gt;  add_lst1 'ERFME' 5..&lt;/P&gt;&lt;P&gt;endform.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Horacio Zapettini&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;-&lt;/P&gt;&lt;P&gt;-&lt;/P&gt;&lt;HR originaltext="------------------------------" /&gt;&lt;P&gt;Program to Calculate FI Opening Balance&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;How to find the Opening balance for a given period in FI Module for a Particular GL A/c.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;I was calculated opening balance, code is below maybe it will be helpful.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*find period.&lt;/P&gt;&lt;P&gt;  CALL FUNCTION 'DATE_TO_PERIOD_CONVERT'&lt;/P&gt;&lt;P&gt;    EXPORTING&lt;/P&gt;&lt;P&gt;      i_date         = s_budat-low&lt;/P&gt;&lt;P&gt;      i_periv        = i_tab-periv                          "'K4'&lt;/P&gt;&lt;P&gt;    IMPORTING&lt;/P&gt;&lt;P&gt;      e_buper        = v_donem&lt;/P&gt;&lt;P&gt;      e_gjahr        = v_gjahr&lt;/P&gt;&lt;P&gt;    EXCEPTIONS&lt;/P&gt;&lt;P&gt;      input_false    = 1&lt;/P&gt;&lt;P&gt;      t009_notfound  = 2&lt;/P&gt;&lt;P&gt;      t009b_notfound = 3&lt;/P&gt;&lt;P&gt;      OTHERS         = 4.&lt;/P&gt;&lt;P&gt;*calc opening balance hesabý&lt;/P&gt;&lt;P&gt;  SELECT * FROM knc1 WHERE kunnr = i_tab-kunnr&lt;/P&gt;&lt;P&gt;                     AND bukrs = i_tab-bukrs " s_bukrs&lt;/P&gt;&lt;P&gt;                     AND gjahr EQ v_gjahr.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    v_dnm = v_donem.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;opening balance first calc &amp;gt; old year ,&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;    WHILE v_dnm &amp;gt; 1.&lt;/P&gt;&lt;P&gt;      v_dnm = v_dnm - 1.&lt;/P&gt;&lt;P&gt;      CONCATENATE 'knc1-um' v_dnm 's' INTO v_field_name_borc.&lt;/P&gt;&lt;P&gt;      CONCATENATE 'knc1-um' v_dnm 'h' INTO v_field_name_alacak.&lt;/P&gt;&lt;P&gt;      ASSIGN (v_field_name_borc) TO  old&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;add days which is from selected date-low month&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;    IF v_donem &amp;gt; 1.&lt;/P&gt;&lt;P&gt;      v_dnm = v_donem - 1.&lt;/P&gt;&lt;P&gt;    ELSE.&lt;/P&gt;&lt;P&gt;      v_dnm = v_donem.&lt;/P&gt;&lt;P&gt;    ENDIF.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    SELECT SINGLE * FROM t009b WHERE periv = i_tab-periv    "'K4'&lt;/P&gt;&lt;P&gt;                                 AND bdatj = s_budat-low+0(4)&lt;/P&gt;&lt;P&gt;                                 AND poper = v_dnm.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    t009b-butag = t009b-butag + 1.&lt;/P&gt;&lt;P&gt;    IF s_budat-low+6(2) NE t009b-butag.&lt;/P&gt;&lt;P&gt;      v_date_high = s_budat-low - 1.&lt;/P&gt;&lt;P&gt;      IF v_donem = 1.&lt;/P&gt;&lt;P&gt;        v_date_low = s_budat-low.&lt;/P&gt;&lt;P&gt;        v_date_low+4(4)  = '0101'.&lt;/P&gt;&lt;P&gt;      ELSE.&lt;/P&gt;&lt;P&gt;        CONCATENATE t009b-bdatj t009b-bumon t009b-butag INTO&lt;/P&gt;&lt;P&gt;        v_date_low.&lt;/P&gt;&lt;P&gt;      ENDIF.&lt;/P&gt;&lt;P&gt;      SELECT *  FROM bsad WHERE bukrs EQ i_tab-bukrs "IN s_bukrs&lt;/P&gt;&lt;P&gt;                            AND kunnr = i_tab-kunnr&lt;/P&gt;&lt;P&gt;                            AND budat BETWEEN v_date_low AND&lt;/P&gt;&lt;P&gt;                            v_date_high&lt;/P&gt;&lt;P&gt;                            AND umskz = space&lt;/P&gt;&lt;P&gt;                            AND blart IN s_blart.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;        IF bsad-shkzg = 'S'.&lt;/P&gt;&lt;P&gt;          i_tab-dmbtr_s = i_tab-dmbtr_s + ( bsad-dmbtr ).&lt;/P&gt;&lt;P&gt;        ELSEIF bsad-shkzg = 'H'.&lt;/P&gt;&lt;P&gt;          i_tab-dmbtr_h = i_tab-dmbtr_h + ( bsad-dmbtr   ).&lt;/P&gt;&lt;P&gt;        ENDIF.&lt;/P&gt;&lt;P&gt;      ENDSELECT.&lt;/P&gt;&lt;P&gt;      SELECT *  FROM bsid WHERE bukrs EQ i_tab-bukrs "IN s_bukrs&lt;/P&gt;&lt;P&gt;                           AND kunnr = i_tab-kunnr&lt;/P&gt;&lt;P&gt;                           AND budat BETWEEN v_date_low AND&lt;/P&gt;&lt;P&gt;                           v_date_high&lt;/P&gt;&lt;P&gt;                           AND umskz = space&lt;/P&gt;&lt;P&gt;                           AND blart IN s_blart.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;                             AND gsber IN gsber.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;        IF bsid-shkzg = 'S'.&lt;/P&gt;&lt;P&gt;          i_tab-dmbtr_s = i_tab-dmbtr_s + ( bsid-dmbtr   ).&lt;/P&gt;&lt;P&gt;        ELSEIF bsid-shkzg = 'H'.&lt;/P&gt;&lt;P&gt;          i_tab-dmbtr_h = i_tab-dmbtr_h + ( bsid-dmbtr   ).&lt;/P&gt;&lt;P&gt;        ENDIF.&lt;/P&gt;&lt;P&gt;      ENDSELECT.&lt;/P&gt;&lt;P&gt;    ENDIF.&lt;/P&gt;&lt;P&gt;    "opening balance ( þirket bazlý )z1 degeri&lt;/P&gt;&lt;P&gt;   i_tab-z1 = i_tab-z1 + ( knc1-umsav + i_tab-dmbtr_s - i_tab-dmbtr_h ).&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;for israel&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;    i_tab-dmbtril_s = i_tab-dmbtr_s .&lt;/P&gt;&lt;P&gt;    i_tab-dmbtril_h = i_tab-dmbtr_h .&lt;/P&gt;&lt;P&gt;  ENDSELECT.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Regards&lt;/P&gt;&lt;P&gt; Sudheer&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
    <pubDate>Tue, 04 Sep 2007 15:56:35 GMT</pubDate>
    <dc:creator>Former Member</dc:creator>
    <dc:date>2007-09-04T15:56:35Z</dc:date>
    <item>
      <title>ALV display</title>
      <link>https://community.sap.com/t5/application-development-and-automation-discussions/alv-display/m-p/2729308#M633484</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;In my program output is getting displayed in Reuse_alv_list_display, data from my int. table ITAB. Here in ITAB , i have took sum of all values and taken it's average and APPEND the value into ITAB . Now i want this particular average value ROW  which is getting appear in output, should come in some particular color . IS it possible in ALV to color a particular row. Please Suggest your valuable suggestions.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Thanks in advance,&lt;/P&gt;&lt;P&gt;Regards,&lt;/P&gt;&lt;P&gt;Vivek&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Tue, 04 Sep 2007 15:54:19 GMT</pubDate>
      <guid>https://community.sap.com/t5/application-development-and-automation-discussions/alv-display/m-p/2729308#M633484</guid>
      <dc:creator>Former Member</dc:creator>
      <dc:date>2007-09-04T15:54:19Z</dc:date>
    </item>
    <item>
      <title>Re: ALV display</title>
      <link>https://community.sap.com/t5/application-development-and-automation-discussions/alv-display/m-p/2729309#M633485</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;&lt;/P&gt;&lt;P&gt;&lt;B&gt;&lt;/B&gt;&lt;/P&gt;&lt;P&gt;Line Color in ALV Example&lt;/P&gt; &lt;BR /&gt;&lt;B&gt;&lt;P&gt;An example of using linecolor (ALV).&lt;/P&gt;&lt;/B&gt; &lt;P&gt;&lt;/P&gt;&lt;P&gt;Here you have a good example of coloring rows, columns and specific cells in alvs. It comes in an example of how to use hashed tables.  &lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;For coloured rows and cols check gp_bymat&lt;/P&gt;&lt;P&gt;for coloured specific rows uncheck gp_bymat. &lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;report zuseofhashedtables.&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;Program: ZUseOfHashedTables                                        **&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;/UL&gt;&lt;P&gt;************************************************************************&lt;/P&gt;&lt;UL&gt;&lt;UL&gt;&lt;LI level="2" type="ul"&gt;&lt;P&gt;Author: Horacio Zapettini                                          **&lt;/P&gt;&lt;/LI&gt;&lt;LI level="2" type="ul"&gt;&lt;P&gt;                                                                   **&lt;/P&gt;&lt;/LI&gt;&lt;LI level="2" type="ul"&gt;&lt;P&gt;Versions: 4.6b - 4.6c                                              **&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;/UL&gt;&lt;P&gt;************************************************************************&lt;/P&gt;&lt;UL&gt;&lt;UL&gt;&lt;LI level="2" type="ul"&gt;&lt;P&gt;Notes:                                                             **&lt;/P&gt;&lt;/LI&gt;&lt;LI level="2" type="ul"&gt;&lt;P&gt;    this program shows how we can use hashed tables to improve     **&lt;/P&gt;&lt;/LI&gt;&lt;LI level="2" type="ul"&gt;&lt;P&gt;    the responce time.                                             **&lt;/P&gt;&lt;/LI&gt;&lt;LI level="2" type="ul"&gt;&lt;P&gt;    It shows,                                                      **&lt;/P&gt;&lt;/LI&gt;&lt;LI level="2" type="ul"&gt;&lt;P&gt;       1. how to declare hashed tables                             **&lt;/P&gt;&lt;/LI&gt;&lt;LI level="2" type="ul"&gt;&lt;P&gt;       2. a cache-like technique to improve access to master data  **&lt;/P&gt;&lt;/LI&gt;&lt;LI level="2" type="ul"&gt;&lt;P&gt;       3. how to collect data using hashed tables                  **&lt;/P&gt;&lt;/LI&gt;&lt;LI level="2" type="ul"&gt;&lt;P&gt;       4. how to avoid deletions of unwanted data                  **&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;/UL&gt;&lt;P&gt;************************************************************************&lt;/P&gt;&lt;UL&gt;&lt;UL&gt;&lt;LI level="2" type="ul"&gt;&lt;P&gt;Results: the test we run read about 31000 rows from mkpf, 150000   **&lt;/P&gt;&lt;/LI&gt;&lt;LI level="2" type="ul"&gt;&lt;P&gt;         rows from mseg, 500 rows from makt and 400 from lfa1.     **&lt;/P&gt;&lt;/LI&gt;&lt;LI level="2" type="ul"&gt;&lt;P&gt;         it filled ht_lst with 24500 rows and displayed them in    **&lt;/P&gt;&lt;/LI&gt;&lt;LI level="2" type="ul"&gt;&lt;P&gt;         alv grid format.                                          **&lt;/P&gt;&lt;/LI&gt;&lt;LI level="2" type="ul"&gt;&lt;P&gt;                                                                   **&lt;/P&gt;&lt;/LI&gt;&lt;LI level="2" type="ul"&gt;&lt;P&gt;         It took about 65 secodns to perform this task (first time **&lt;/P&gt;&lt;/LI&gt;&lt;LI level="2" type="ul"&gt;&lt;P&gt;         we run it when all the db buffers are empty.              **&lt;/P&gt;&lt;/LI&gt;&lt;LI level="2" type="ul"&gt;&lt;P&gt;                                                                   **&lt;/P&gt;&lt;/LI&gt;&lt;LI level="2" type="ul"&gt;&lt;P&gt;         The same program with standard tables needed 140 seconds  **&lt;/P&gt;&lt;/LI&gt;&lt;LI level="2" type="ul"&gt;&lt;P&gt;         to run with the same recordset and with buffers filled in **&lt;/P&gt;&lt;/LI&gt;&lt;LI level="2" type="ul"&gt;&lt;P&gt;                                                                   **&lt;/P&gt;&lt;/LI&gt;&lt;LI level="2" type="ul"&gt;&lt;P&gt;         A simmilar test over more than a million rows&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;/UL&gt;&lt;P&gt;************************************************************************&lt;/P&gt;&lt;UL&gt;&lt;UL&gt;&lt;LI level="2" type="ul"&gt;&lt;P&gt;Objetive: show a list that consists of  all the material movements **&lt;/P&gt;&lt;/LI&gt;&lt;LI level="2" type="ul"&gt;&lt;P&gt;         '101' - '901' for a certain range of dates in mkpf-budat. **&lt;/P&gt;&lt;/LI&gt;&lt;LI level="2" type="ul"&gt;&lt;P&gt;the columns to be displayed are:                                   **&lt;/P&gt;&lt;/LI&gt;&lt;LI level="2" type="ul"&gt;&lt;P&gt;         mkpf-budat,                                               **&lt;/P&gt;&lt;/LI&gt;&lt;LI level="2" type="ul"&gt;&lt;P&gt;         mkpf-mblnr,                                               **&lt;/P&gt;&lt;/LI&gt;&lt;LI level="2" type="ul"&gt;&lt;P&gt;         mseg-lifnr,                                               **&lt;/P&gt;&lt;/LI&gt;&lt;LI level="2" type="ul"&gt;&lt;P&gt;         lfa1-name1,                                               **&lt;/P&gt;&lt;/LI&gt;&lt;LI level="2" type="ul"&gt;&lt;P&gt;         mkpf-xblnr,                                               **&lt;/P&gt;&lt;/LI&gt;&lt;LI level="2" type="ul"&gt;&lt;P&gt;         mseg-zeile                                                **&lt;/P&gt;&lt;/LI&gt;&lt;LI level="2" type="ul"&gt;&lt;P&gt;         mseg-charg,                                               **&lt;/P&gt;&lt;/LI&gt;&lt;LI level="2" type="ul"&gt;&lt;P&gt;         mseg-matnr,                                               **&lt;/P&gt;&lt;/LI&gt;&lt;LI level="2" type="ul"&gt;&lt;P&gt;         makt-maktx,                                               **&lt;/P&gt;&lt;/LI&gt;&lt;LI level="2" type="ul"&gt;&lt;P&gt;         mseg-erfmg,                                               **&lt;/P&gt;&lt;/LI&gt;&lt;LI level="2" type="ul"&gt;&lt;P&gt;         mseg-erfme.                                               **&lt;/P&gt;&lt;/LI&gt;&lt;LI level="2" type="ul"&gt;&lt;P&gt;or show a sumary list by matnr - menge                             **&lt;/P&gt;&lt;/LI&gt;&lt;LI level="2" type="ul"&gt;&lt;P&gt;                                                                   **&lt;/P&gt;&lt;/LI&gt;&lt;LI level="2" type="ul"&gt;&lt;P&gt;You'll have to create a pf-status called vista -                   **&lt;/P&gt;&lt;/LI&gt;&lt;LI level="2" type="ul"&gt;&lt;P&gt;See form set_pf_status for details                                 **&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;/UL&gt;&lt;P&gt;************************************************************************&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;tables used -&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;/UL&gt;&lt;P&gt;tables: mkpf,&lt;/P&gt;&lt;P&gt;        mseg,&lt;/P&gt;&lt;P&gt;        lfa1,&lt;/P&gt;&lt;P&gt;        makt.&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;global hashed tables used&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;/UL&gt;&lt;P&gt;*&lt;/P&gt;&lt;P&gt;data: begin of wa_mkpf, "header&lt;/P&gt;&lt;P&gt;      mblnr like mkpf-mblnr,&lt;/P&gt;&lt;P&gt;      mjahr like mkpf-mjahr,&lt;/P&gt;&lt;P&gt;      budat like mkpf-budat,&lt;/P&gt;&lt;P&gt;      xblnr like mkpf-xblnr,&lt;/P&gt;&lt;P&gt;      end of wa_mkpf.&lt;/P&gt;&lt;P&gt;data: ht_mkpf like hashed table of wa_mkpf&lt;/P&gt;&lt;P&gt;      with unique key mblnr mjahr&lt;/P&gt;&lt;P&gt;      with header line.&lt;/P&gt;&lt;P&gt;data: st_mkpf like standard table of wa_mkpf&lt;/P&gt;&lt;P&gt;      with header line.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*&lt;/P&gt;&lt;P&gt;data: begin of wa_mseg, " line items&lt;/P&gt;&lt;P&gt;      mblnr like mseg-mblnr,&lt;/P&gt;&lt;P&gt;      mjahr like mseg-mjahr,&lt;/P&gt;&lt;P&gt;      zeile like mseg-zeile,&lt;/P&gt;&lt;P&gt;      bwart like mseg-bwart,&lt;/P&gt;&lt;P&gt;      charg like mseg-charg,&lt;/P&gt;&lt;P&gt;      matnr like mseg-matnr,&lt;/P&gt;&lt;P&gt;      lifnr like mseg-lifnr,&lt;/P&gt;&lt;P&gt;      erfmg like mseg-erfmg,&lt;/P&gt;&lt;P&gt;      erfme like mseg-erfme,&lt;/P&gt;&lt;P&gt;      end of wa_mseg.&lt;/P&gt;&lt;P&gt;data ht_mseg like hashed table of wa_mseg&lt;/P&gt;&lt;P&gt;      with unique key mblnr mjahr zeile&lt;/P&gt;&lt;P&gt;      with header line.&lt;/P&gt;&lt;P&gt;data st_mseg like standard table of wa_mseg&lt;/P&gt;&lt;P&gt;      with header line.&lt;/P&gt;&lt;P&gt;&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;cache structure for lfa1 records&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;/UL&gt;&lt;P&gt;data: begin of wa_lfa1,&lt;/P&gt;&lt;P&gt;      lifnr like lfa1-lifnr,&lt;/P&gt;&lt;P&gt;      name1 like lfa1-name1,&lt;/P&gt;&lt;P&gt;      end of wa_lfa1.&lt;/P&gt;&lt;P&gt;data ht_lfa1 like hashed table of wa_lfa1&lt;/P&gt;&lt;P&gt;      with unique key lifnr&lt;/P&gt;&lt;P&gt;      with header line.&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;cache structure for material related data&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;/UL&gt;&lt;P&gt;data: begin of wa_material,&lt;/P&gt;&lt;P&gt;      matnr like makt-matnr,&lt;/P&gt;&lt;P&gt;      maktx like makt-maktx,&lt;/P&gt;&lt;P&gt;      end of wa_material.&lt;/P&gt;&lt;P&gt;data: ht_material like hashed table of wa_material&lt;/P&gt;&lt;P&gt;        with unique key matnr&lt;/P&gt;&lt;P&gt;        with header line.&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;result table&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;/UL&gt;&lt;P&gt;data: begin of wa_lst, "&lt;/P&gt;&lt;P&gt;      budat like mkpf-budat,&lt;/P&gt;&lt;P&gt;      mblnr like mseg-mblnr,&lt;/P&gt;&lt;P&gt;      lifnr like mseg-lifnr,&lt;/P&gt;&lt;P&gt;      name1 like lfa1-name1,    &lt;/P&gt;&lt;P&gt;      xblnr like mkpf-xblnr,&lt;/P&gt;&lt;P&gt;      zeile like mseg-zeile,&lt;/P&gt;&lt;P&gt;      charg like mseg-charg,&lt;/P&gt;&lt;P&gt;      matnr like mseg-matnr,&lt;/P&gt;&lt;P&gt;      maktx like makt-maktx,&lt;/P&gt;&lt;P&gt;      erfmg like mseg-erfmg,&lt;/P&gt;&lt;P&gt;      erfme like mseg-erfme,&lt;/P&gt;&lt;P&gt;      mjahr like mseg-mjahr,&lt;/P&gt;&lt;P&gt;      end of wa_lst.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;data: ht_lst like hashed table of wa_lst&lt;/P&gt;&lt;P&gt;        with unique key mblnr mjahr zeile&lt;/P&gt;&lt;P&gt;        with header line.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;data: begin of wa_lst1, " sumary by material&lt;/P&gt;&lt;P&gt;      matnr like mseg-matnr,&lt;/P&gt;&lt;P&gt;      maktx like makt-maktx,&lt;/P&gt;&lt;P&gt;      erfmg like mseg-erfmg,&lt;/P&gt;&lt;P&gt;      erfme like mseg-erfme,&lt;/P&gt;&lt;P&gt;      color_line(4) TYPE c,           " Line color&lt;/P&gt;&lt;P&gt;      color_cell    TYPE lvc_t_scol,  " Cell color&lt;/P&gt;&lt;P&gt;      celltab type LVC_T_STYL,&lt;/P&gt;&lt;P&gt;      end of wa_lst1.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;data: ht_lst1 like hashed table of wa_lst1&lt;/P&gt;&lt;P&gt;        with unique key matnr&lt;/P&gt;&lt;P&gt;        with header line.&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;structures for alv grid display.&lt;/P&gt;&lt;/LI&gt;&lt;LI level="2" type="ul"&gt;&lt;P&gt;itabs&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;/UL&gt;&lt;P&gt;type-pools: slis.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;data: it_lst            like standard table of wa_lst with header line,&lt;/P&gt;&lt;P&gt;      it_fieldcat_lst   type slis_t_fieldcat_alv with header line,&lt;/P&gt;&lt;P&gt;      it_sort_lst       type slis_t_sortinfo_alv,&lt;/P&gt;&lt;P&gt;      it_lst1           like standard table of wa_lst1 with header line,&lt;/P&gt;&lt;P&gt;      it_fieldcat_lst1  type slis_t_fieldcat_alv with header line,&lt;/P&gt;&lt;P&gt;      it_sort_lst1      type slis_t_sortinfo_alv.&lt;/P&gt;&lt;UL&gt;&lt;UL&gt;&lt;LI level="2" type="ul"&gt;&lt;P&gt;structures&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;/UL&gt;&lt;P&gt;data: wa_sort         type slis_sortinfo_alv,&lt;/P&gt;&lt;P&gt;      ls_layout       type slis_layout_alv.&lt;/P&gt;&lt;UL&gt;&lt;UL&gt;&lt;LI level="2" type="ul"&gt;&lt;P&gt;color management.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;/UL&gt;&lt;P&gt;DATA  : wa_color    TYPE lvc_s_scol.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Internal table for color management.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;DATA : it_color    TYPE TABLE          OF lvc_s_scol.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;itab for input enabling.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;DATA: lt_celltab TYPE lvc_t_styl. "&lt;/P&gt;&lt;P&gt;&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;global varialbes&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;/UL&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;data: g_lines type i.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;data: g_repid like sy-repid,&lt;/P&gt;&lt;P&gt;      ok_code       like sy-ucomm.&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;selection-screen&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;/UL&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;"text: Dates:&lt;/P&gt;&lt;P&gt;select-options: so_budat for mkpf-budat default sy-datum.&lt;/P&gt;&lt;P&gt;"text: Material numbers.&lt;/P&gt;&lt;P&gt;select-options: so_matnr for mseg-matnr.&lt;/P&gt;&lt;P&gt;selection-screen uline.&lt;/P&gt;&lt;P&gt;selection-screen skip 1.&lt;/P&gt;&lt;P&gt;"Text: show summary by material.&lt;/P&gt;&lt;P&gt;parameters: gp_bymat as checkbox default ''.&lt;/P&gt;&lt;P&gt;parameters: gp_hier  as checkbox default 'X'.&lt;/P&gt;&lt;P&gt;start-of-selection.&lt;/P&gt;&lt;P&gt;  perform get_data.&lt;/P&gt;&lt;P&gt;  perform show_data.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;end-of-selection.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&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;      FORM get_data                                                 *&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&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;      ........                                                      *&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&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;        select mblnr mjahr budat xblnr&lt;/P&gt;&lt;P&gt;            into table ht_mkpf&lt;/P&gt;&lt;P&gt;           from mkpf&lt;/P&gt;&lt;P&gt;          where budat in so_budat. " make use of std index.&lt;/P&gt;&lt;UL&gt;&lt;UL&gt;&lt;LI level="2" type="ul"&gt;&lt;P&gt;have we retrieved data from mkpf?&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;/UL&gt;&lt;P&gt;  describe table ht_mkpf lines g_lines.&lt;/P&gt;&lt;P&gt;  if g_lines &amp;gt; 0.&lt;/P&gt;&lt;UL&gt;&lt;UL&gt;&lt;LI level="2" type="ul"&gt;&lt;P&gt;if true then retrieve all related records from mseg.&lt;/P&gt;&lt;/LI&gt;&lt;LI level="2" type="ul"&gt;&lt;P&gt;Doing this way we make sure that the access is by primary key&lt;/P&gt;&lt;/LI&gt;&lt;LI level="2" type="ul"&gt;&lt;P&gt;of mseg.&lt;/P&gt;&lt;/LI&gt;&lt;LI level="2" type="ul"&gt;&lt;P&gt;The reason is that is faster to filter them in memory&lt;/P&gt;&lt;/LI&gt;&lt;LI level="2" type="ul"&gt;&lt;P&gt;than to allow the db server to do it.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;/UL&gt;&lt;P&gt;    select mblnr mjahr zeile bwart charg&lt;/P&gt;&lt;P&gt;             matnr lifnr erfmg erfme&lt;/P&gt;&lt;P&gt;      into table ht_mseg&lt;/P&gt;&lt;P&gt;      from mseg&lt;/P&gt;&lt;P&gt;        for all entries in ht_mkpf&lt;/P&gt;&lt;P&gt;     where mblnr = ht_mkpf-mblnr&lt;/P&gt;&lt;P&gt;       and mjahr = ht_mkpf-mjahr.&lt;/P&gt;&lt;P&gt;  endif.&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;fill t_lst or t_lst1 according to user's choice.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;/UL&gt;&lt;P&gt;  if gp_bymat = ' '.&lt;/P&gt;&lt;P&gt;    perform fill_ht_lst.&lt;/P&gt;&lt;P&gt;  else.&lt;/P&gt;&lt;P&gt;    perform fill_ht_lst1.&lt;/P&gt;&lt;P&gt;  endif.&lt;/P&gt;&lt;P&gt;endform.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;form fill_ht_lst.&lt;/P&gt;&lt;P&gt;  refresh ht_lst.&lt;/P&gt;&lt;UL&gt;&lt;UL&gt;&lt;LI level="2" type="ul"&gt;&lt;P&gt;Example: how to discard unwanted data in an efficient way.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;/UL&gt;&lt;P&gt;  loop at ht_mseg.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  filter unwanted data&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;    check ht_mseg-bwart = '101' or ht_mseg-bwart = '901'.&lt;/P&gt;&lt;P&gt;    check ht_mseg-matnr in so_matnr.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  read header line.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;    read table ht_mkpf with table key mblnr = ht_mseg-mblnr&lt;/P&gt;&lt;P&gt;    mjahr = ht_mseg-mjahr.&lt;/P&gt;&lt;P&gt;    clear ht_lst.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt; * note : this may be faster if you specify field by field.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;    move-corresponding ht_mkpf to ht_lst.&lt;/P&gt;&lt;P&gt;    move-corresponding ht_mseg to ht_lst.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    perform read_lfa1 using ht_mseg-lifnr changing ht_lst-name1.&lt;/P&gt;&lt;P&gt;    perform read_material using ht_mseg-matnr changing ht_lst-maktx.&lt;/P&gt;&lt;P&gt;    insert table ht_lst.&lt;/P&gt;&lt;P&gt;  endloop.&lt;/P&gt;&lt;P&gt;endform.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;form fill_ht_lst1.&lt;/P&gt;&lt;P&gt;data: colorear.&lt;/P&gt;&lt;P&gt;  refresh ht_lst1.&lt;/P&gt;&lt;UL&gt;&lt;UL&gt;&lt;LI level="2" type="ul"&gt;&lt;P&gt;Example: how to discard unwanted data in an efficient way.&lt;/P&gt;&lt;/LI&gt;&lt;LI level="2" type="ul"&gt;&lt;P&gt;         hot to simulate a collect in a faster way&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;/UL&gt;&lt;P&gt;  loop at ht_mseg.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  filter unwanted data&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;    check ht_mseg-bwart = '101' or ht_mseg-bwart = '901'.&lt;/P&gt;&lt;P&gt;    check ht_mseg-matnr in so_matnr.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt; * note : this may be faster if you specify field by field.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    read table ht_lst1 with table key matnr = ht_mseg-matnr&lt;/P&gt;&lt;P&gt;    transporting erfmg.&lt;/P&gt;&lt;P&gt;    if sy-subrc &amp;lt;&amp;gt; 0. " if matnr doesn't exist in sumary table&lt;/P&gt;&lt;P&gt;    " insert a new record&lt;/P&gt;&lt;P&gt;      clear ht_lst1.&lt;/P&gt;&lt;P&gt;      ht_lst1-matnr = ht_mseg-matnr.&lt;/P&gt;&lt;P&gt;      perform read_material using ht_mseg-matnr changing ht_lst1-maktx.&lt;/P&gt;&lt;P&gt;      ht_lst1-erfmg = ht_mseg-erfmg.&lt;/P&gt;&lt;P&gt;      ht_lst1-erfme = ht_mseg-erfme.&lt;/P&gt;&lt;P&gt;      if colorear = ''.&lt;/P&gt;&lt;P&gt;        colorear = 'X'.&lt;/P&gt;&lt;P&gt;        refresh it_color.&lt;/P&gt;&lt;P&gt;        ht_lst1-color_cell[] = it_color[].&lt;/P&gt;&lt;P&gt;        MOVE 'C410' TO ht_lst1-color_line.&lt;/P&gt;&lt;P&gt;      else.&lt;/P&gt;&lt;P&gt;        colorear = ' '.&lt;/P&gt;&lt;P&gt;        refresh it_color. clear it_color.&lt;/P&gt;&lt;P&gt;        MOVE 'MATNR' TO wa_color-fname.&lt;/P&gt;&lt;P&gt;        MOVE '6'         TO wa_color-color-col.&lt;/P&gt;&lt;P&gt;        MOVE '1'         TO wa_color-color-int.&lt;/P&gt;&lt;P&gt;        MOVE '1'         TO wa_color-color-inv.&lt;/P&gt;&lt;P&gt;        APPEND wa_color TO it_color.&lt;/P&gt;&lt;P&gt;        MOVE 'MAKTX' TO wa_color-fname.&lt;/P&gt;&lt;P&gt;        MOVE '3'         TO wa_color-color-col.&lt;/P&gt;&lt;P&gt;        MOVE '1'         TO wa_color-color-int.&lt;/P&gt;&lt;P&gt;        MOVE '1'         TO wa_color-color-inv.&lt;/P&gt;&lt;P&gt;        APPEND wa_color TO it_color.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;        MOVE 'ERFMG' TO wa_color-fname.&lt;/P&gt;&lt;P&gt;        MOVE '5'         TO wa_color-color-col.&lt;/P&gt;&lt;P&gt;        MOVE '1'         TO wa_color-color-int.&lt;/P&gt;&lt;P&gt;        MOVE '1'         TO wa_color-color-inv.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;        APPEND wa_color TO it_color.&lt;/P&gt;&lt;P&gt;        ht_lst1-color_cell[] = it_color[].&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;        clear ht_lst1-color_line.&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;      insert table ht_lst1.&lt;/P&gt;&lt;P&gt;    else." a record was found.&lt;/P&gt;&lt;P&gt;    " collect erfmg.  To do so, fill in the unique key and add&lt;/P&gt;&lt;P&gt;    " the numeric fields.&lt;/P&gt;&lt;P&gt;      ht_lst1-matnr = ht_mseg-matnr.&lt;/P&gt;&lt;P&gt;      add ht_mseg-erfmg to ht_lst1-erfmg.&lt;/P&gt;&lt;P&gt;      modify table ht_lst1 transporting erfmg.&lt;/P&gt;&lt;P&gt;    endif.&lt;/P&gt;&lt;P&gt;  endloop.&lt;/P&gt;&lt;P&gt;endform.&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;implementation of cache for lfa1.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;/UL&gt;&lt;P&gt;form read_lfa1 using p_lifnr changing p_name1.&lt;/P&gt;&lt;P&gt;        read table ht_lfa1 with table key lifnr = p_lifnr&lt;/P&gt;&lt;P&gt;        transporting name1.&lt;/P&gt;&lt;P&gt;  if sy-subrc &amp;lt;&amp;gt; 0.&lt;/P&gt;&lt;P&gt;    clear ht_lfa1.&lt;/P&gt;&lt;P&gt;    ht_lfa1-lifnr = p_lifnr.&lt;/P&gt;&lt;P&gt;    select single name1&lt;/P&gt;&lt;P&gt;       into ht_lfa1-name1&lt;/P&gt;&lt;P&gt;      from lfa1&lt;/P&gt;&lt;P&gt;    where lifnr = p_lifnr.&lt;/P&gt;&lt;P&gt;    if sy-subrc &amp;lt;&amp;gt; 0. ht_lfa1-name1 = 'n/a in lfa1'. endif.&lt;/P&gt;&lt;P&gt;    insert table ht_lfa1.&lt;/P&gt;&lt;P&gt;  endif.&lt;/P&gt;&lt;P&gt;  p_name1 = ht_lfa1-name1.&lt;/P&gt;&lt;P&gt;endform.&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;implementation of cache for material data&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;/UL&gt;&lt;P&gt;form read_material using p_matnr changing p_maktx.&lt;/P&gt;&lt;P&gt;  read table ht_material with table key matnr = p_matnr&lt;/P&gt;&lt;P&gt;  transporting maktx.&lt;/P&gt;&lt;P&gt;  if sy-subrc &amp;lt;&amp;gt; 0.&lt;/P&gt;&lt;P&gt;    ht_material-matnr = p_matnr.&lt;/P&gt;&lt;P&gt;    select single maktx into  ht_material-maktx&lt;/P&gt;&lt;P&gt;      from makt&lt;/P&gt;&lt;P&gt;     where spras = sy-langu&lt;/P&gt;&lt;P&gt;       and matnr = p_matnr.&lt;/P&gt;&lt;P&gt;    if sy-subrc &amp;lt;&amp;gt; 0. ht_material-maktx = 'n/a in makt'. endif.&lt;/P&gt;&lt;P&gt;    insert table ht_material.&lt;/P&gt;&lt;P&gt;  endif.&lt;/P&gt;&lt;P&gt;  p_maktx = ht_material-maktx.&lt;/P&gt;&lt;P&gt;endform.&lt;/P&gt;&lt;P&gt;form show_data.&lt;/P&gt;&lt;P&gt;  if gp_hier = 'X'. "no anda.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;   perform show_hierarchicalALV.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  else.&lt;/P&gt;&lt;P&gt;    if gp_bymat = ' '.&lt;/P&gt;&lt;P&gt;      perform show_ht_lst.&lt;/P&gt;&lt;P&gt;    else.&lt;/P&gt;&lt;P&gt;      perform show_ht_lst1.&lt;/P&gt;&lt;P&gt;    endif.&lt;/P&gt;&lt;P&gt;  endif.&lt;/P&gt;&lt;P&gt;endform.&lt;/P&gt;&lt;P&gt;form show_hierarchicalALV.&lt;/P&gt;&lt;P&gt;st_mkpf[] = ht_mkpf[].&lt;/P&gt;&lt;P&gt;st_mseg[] = ht_mseg[].&lt;/P&gt;&lt;P&gt;call function 'REUSE_ALV_HIERSEQ_LIST_DISPLAY'&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt; exporting&lt;/P&gt;&lt;/LI&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_CALLBACK_PROGRAM             =&lt;/P&gt;&lt;/LI&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;  IS_LAYOUT                      =&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  IT_FIELDCAT                    =&lt;/P&gt;&lt;/LI&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_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_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;   i_tabname_header               =&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;   i_tabname_item                 =&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  I_STRUCTURE_NAME_HEADER        =&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;  I_STRUCTURE_NAME_ITEM          =&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;   is_keyinfo                     =&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_BUFFER_ACTIVE                =&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;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_header                = st_mkpf&lt;/P&gt;&lt;P&gt;    t_outtab_item                  = st_mseg&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.&lt;/P&gt;&lt;P&gt;form show_ht_lst.&lt;/P&gt;&lt;P&gt;  "needed because the FM can't use a hashed table.&lt;/P&gt;&lt;P&gt;  it_lst[] = ht_lst[].&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  perform fill_layout using 'full display'&lt;/P&gt;&lt;P&gt;                       changing ls_layout.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  perform fill_columns_lst.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt; perform sort_lst.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  g_repid = sy-repid.&lt;/P&gt;&lt;P&gt;  call function 'REUSE_ALV_GRID_DISPLAY'&lt;/P&gt;&lt;P&gt;       exporting&lt;/P&gt;&lt;P&gt;            i_callback_program       = g_repid&lt;/P&gt;&lt;P&gt;            i_callback_pf_status_set = 'SET_PF_STATUS'&lt;/P&gt;&lt;P&gt;            is_layout                = ls_layout&lt;/P&gt;&lt;P&gt;            it_fieldcat              = it_fieldcat_lst[]&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;           it_sort                  = it_sort_lst&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;       tables&lt;/P&gt;&lt;P&gt;            t_outtab                 = it_lst&lt;/P&gt;&lt;P&gt;       exceptions&lt;/P&gt;&lt;P&gt;            program_error            = 1&lt;/P&gt;&lt;P&gt;            others                   = 2.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;endform.&lt;/P&gt;&lt;P&gt;form show_ht_lst1.&lt;/P&gt;&lt;P&gt;  "needed because the FM can't use a hashed table.&lt;/P&gt;&lt;P&gt;  it_lst1[] = ht_lst1[].&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  perform fill_layout using 'Sumary by matnr'&lt;/P&gt;&lt;P&gt;                       changing ls_layout.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  perform fill_columns_lst1.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt; perform sort_lst.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  g_repid = sy-repid.&lt;/P&gt;&lt;P&gt;  call function 'REUSE_ALV_GRID_DISPLAY'&lt;/P&gt;&lt;P&gt;       exporting&lt;/P&gt;&lt;P&gt;            i_callback_program       = g_repid&lt;/P&gt;&lt;P&gt;            i_callback_pf_status_set = 'SET_PF_STATUS'&lt;/P&gt;&lt;P&gt;            is_layout                = ls_layout&lt;/P&gt;&lt;P&gt;            it_fieldcat              = it_fieldcat_lst1[]&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;           it_sort                  = it_sort_lst&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;       tables&lt;/P&gt;&lt;P&gt;            t_outtab                 = it_lst1&lt;/P&gt;&lt;P&gt;       exceptions&lt;/P&gt;&lt;P&gt;            program_error            = 1&lt;/P&gt;&lt;P&gt;            others                   = 2.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;endform.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;form fill_layout using p_window_titlebar&lt;/P&gt;&lt;P&gt;               changing cs_layo type slis_layout_alv.&lt;/P&gt;&lt;P&gt;  clear cs_layo.&lt;/P&gt;&lt;P&gt;  cs_layo-window_titlebar        = p_window_titlebar.&lt;/P&gt;&lt;P&gt;  cs_layo-edit                   = 'X'.&lt;/P&gt;&lt;P&gt;  cs_layo-edit_mode              = space.&lt;/P&gt;&lt;P&gt;  MOVE 'COLOR_LINE' TO cs_layo-info_fieldname.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Field that identify cell color in inetrnal table&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;  MOVE 'COLOR_CELL' TO cs_layo-coltab_fieldname.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt; move 'CELLTAB' TO cs_layo-stylefname.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;endform.                    " armar_layout_stock&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;form set_pf_status using rt_extab type slis_t_extab.&lt;/P&gt;&lt;UL&gt;&lt;UL&gt;&lt;LI level="2" type="ul"&gt;&lt;P&gt;create a new status&lt;/P&gt;&lt;/LI&gt;&lt;LI level="2" type="ul"&gt;&lt;P&gt;and then select extras -&amp;gt; adjust template -&amp;gt; listviewer&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;/UL&gt;&lt;P&gt;  set pf-status 'VISTA'.&lt;/P&gt;&lt;P&gt;endform.        "set_pf_status&lt;/P&gt;&lt;P&gt;define add_lst.&lt;/P&gt;&lt;P&gt;  clear it_fieldcat_lst.&lt;/P&gt;&lt;P&gt;  it_fieldcat_lst-fieldname     = &amp;amp;1.&lt;/P&gt;&lt;P&gt;  it_fieldcat_lst-outputlen     = &amp;amp;2.&lt;/P&gt;&lt;P&gt;  it_fieldcat_lst-ddictxt       = 'L'.&lt;/P&gt;&lt;P&gt;  it_fieldcat_lst-seltext_l       = &amp;amp;1.&lt;/P&gt;&lt;P&gt;  it_fieldcat_lst-seltext_m       = &amp;amp;1.&lt;/P&gt;&lt;P&gt;  it_fieldcat_lst-seltext_m       = &amp;amp;1.&lt;/P&gt;&lt;P&gt;  if &amp;amp;1 = 'MATNR'.&lt;/P&gt;&lt;P&gt;    it_fieldcat_lst-emphasize = 'C111'.&lt;/P&gt;&lt;P&gt;  endif.&lt;/P&gt;&lt;P&gt;  append it_fieldcat_lst.&lt;/P&gt;&lt;P&gt;end-of-definition.&lt;/P&gt;&lt;P&gt;define add_lst1.&lt;/P&gt;&lt;P&gt;  clear it_fieldcat_lst.&lt;/P&gt;&lt;P&gt;  it_fieldcat_lst1-fieldname     = &amp;amp;1.&lt;/P&gt;&lt;P&gt;  it_fieldcat_lst1-outputlen     = &amp;amp;2.&lt;/P&gt;&lt;P&gt;  it_fieldcat_lst1-ddictxt       = 'L'.&lt;/P&gt;&lt;P&gt;  it_fieldcat_lst1-seltext_l       = &amp;amp;1.&lt;/P&gt;&lt;P&gt;  it_fieldcat_lst1-seltext_m       = &amp;amp;1.&lt;/P&gt;&lt;P&gt;  it_fieldcat_lst1-seltext_m       = &amp;amp;1.&lt;/P&gt;&lt;P&gt;  append it_fieldcat_lst1.&lt;/P&gt;&lt;P&gt;end-of-definition.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;form fill_columns_lst.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;set columns for output.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  refresh it_fieldcat_lst.&lt;/P&gt;&lt;P&gt;*&lt;/P&gt;&lt;P&gt;  add_lst 'BUDAT' 10.&lt;/P&gt;&lt;P&gt;  add_lst   'MBLNR' 10.&lt;/P&gt;&lt;P&gt;  add_lst  'LIFNR' 10.&lt;/P&gt;&lt;P&gt;  add_lst  'NAME1' 35.&lt;/P&gt;&lt;P&gt;  add_lst  'XBLNR' 15.&lt;/P&gt;&lt;P&gt;  add_lst    'ZEILE' 5.&lt;/P&gt;&lt;P&gt;  add_lst    'CHARG' 10.&lt;/P&gt;&lt;P&gt;  add_lst   'MATNR' 18.&lt;/P&gt;&lt;P&gt;  add_lst   'MAKTX' 30.&lt;/P&gt;&lt;P&gt;  add_lst   'ERFMG' 17.&lt;/P&gt;&lt;P&gt;  add_lst   'ERFME' 5.&lt;/P&gt;&lt;P&gt;  add_lst   'MJAHR' 4.&lt;/P&gt;&lt;P&gt;endform.&lt;/P&gt;&lt;P&gt;form fill_columns_lst1.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;set columns for output.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  refresh it_fieldcat_lst1.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;  add_lst1 'MATNR' 18.&lt;/P&gt;&lt;P&gt;  add_lst1 'MAKTX' 30.&lt;/P&gt;&lt;P&gt;  add_lst1 'ERFMG' 17.&lt;/P&gt;&lt;P&gt;  add_lst1 'ERFME' 5..&lt;/P&gt;&lt;P&gt;endform.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Horacio Zapettini&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;-&lt;/P&gt;&lt;P&gt;-&lt;/P&gt;&lt;HR originaltext="------------------------------" /&gt;&lt;P&gt;Program to Calculate FI Opening Balance&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;How to find the Opening balance for a given period in FI Module for a Particular GL A/c.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;I was calculated opening balance, code is below maybe it will be helpful.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*find period.&lt;/P&gt;&lt;P&gt;  CALL FUNCTION 'DATE_TO_PERIOD_CONVERT'&lt;/P&gt;&lt;P&gt;    EXPORTING&lt;/P&gt;&lt;P&gt;      i_date         = s_budat-low&lt;/P&gt;&lt;P&gt;      i_periv        = i_tab-periv                          "'K4'&lt;/P&gt;&lt;P&gt;    IMPORTING&lt;/P&gt;&lt;P&gt;      e_buper        = v_donem&lt;/P&gt;&lt;P&gt;      e_gjahr        = v_gjahr&lt;/P&gt;&lt;P&gt;    EXCEPTIONS&lt;/P&gt;&lt;P&gt;      input_false    = 1&lt;/P&gt;&lt;P&gt;      t009_notfound  = 2&lt;/P&gt;&lt;P&gt;      t009b_notfound = 3&lt;/P&gt;&lt;P&gt;      OTHERS         = 4.&lt;/P&gt;&lt;P&gt;*calc opening balance hesabý&lt;/P&gt;&lt;P&gt;  SELECT * FROM knc1 WHERE kunnr = i_tab-kunnr&lt;/P&gt;&lt;P&gt;                     AND bukrs = i_tab-bukrs " s_bukrs&lt;/P&gt;&lt;P&gt;                     AND gjahr EQ v_gjahr.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    v_dnm = v_donem.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;opening balance first calc &amp;gt; old year ,&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;    WHILE v_dnm &amp;gt; 1.&lt;/P&gt;&lt;P&gt;      v_dnm = v_dnm - 1.&lt;/P&gt;&lt;P&gt;      CONCATENATE 'knc1-um' v_dnm 's' INTO v_field_name_borc.&lt;/P&gt;&lt;P&gt;      CONCATENATE 'knc1-um' v_dnm 'h' INTO v_field_name_alacak.&lt;/P&gt;&lt;P&gt;      ASSIGN (v_field_name_borc) TO  old&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;add days which is from selected date-low month&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;    IF v_donem &amp;gt; 1.&lt;/P&gt;&lt;P&gt;      v_dnm = v_donem - 1.&lt;/P&gt;&lt;P&gt;    ELSE.&lt;/P&gt;&lt;P&gt;      v_dnm = v_donem.&lt;/P&gt;&lt;P&gt;    ENDIF.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    SELECT SINGLE * FROM t009b WHERE periv = i_tab-periv    "'K4'&lt;/P&gt;&lt;P&gt;                                 AND bdatj = s_budat-low+0(4)&lt;/P&gt;&lt;P&gt;                                 AND poper = v_dnm.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;    t009b-butag = t009b-butag + 1.&lt;/P&gt;&lt;P&gt;    IF s_budat-low+6(2) NE t009b-butag.&lt;/P&gt;&lt;P&gt;      v_date_high = s_budat-low - 1.&lt;/P&gt;&lt;P&gt;      IF v_donem = 1.&lt;/P&gt;&lt;P&gt;        v_date_low = s_budat-low.&lt;/P&gt;&lt;P&gt;        v_date_low+4(4)  = '0101'.&lt;/P&gt;&lt;P&gt;      ELSE.&lt;/P&gt;&lt;P&gt;        CONCATENATE t009b-bdatj t009b-bumon t009b-butag INTO&lt;/P&gt;&lt;P&gt;        v_date_low.&lt;/P&gt;&lt;P&gt;      ENDIF.&lt;/P&gt;&lt;P&gt;      SELECT *  FROM bsad WHERE bukrs EQ i_tab-bukrs "IN s_bukrs&lt;/P&gt;&lt;P&gt;                            AND kunnr = i_tab-kunnr&lt;/P&gt;&lt;P&gt;                            AND budat BETWEEN v_date_low AND&lt;/P&gt;&lt;P&gt;                            v_date_high&lt;/P&gt;&lt;P&gt;                            AND umskz = space&lt;/P&gt;&lt;P&gt;                            AND blart IN s_blart.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;        IF bsad-shkzg = 'S'.&lt;/P&gt;&lt;P&gt;          i_tab-dmbtr_s = i_tab-dmbtr_s + ( bsad-dmbtr ).&lt;/P&gt;&lt;P&gt;        ELSEIF bsad-shkzg = 'H'.&lt;/P&gt;&lt;P&gt;          i_tab-dmbtr_h = i_tab-dmbtr_h + ( bsad-dmbtr   ).&lt;/P&gt;&lt;P&gt;        ENDIF.&lt;/P&gt;&lt;P&gt;      ENDSELECT.&lt;/P&gt;&lt;P&gt;      SELECT *  FROM bsid WHERE bukrs EQ i_tab-bukrs "IN s_bukrs&lt;/P&gt;&lt;P&gt;                           AND kunnr = i_tab-kunnr&lt;/P&gt;&lt;P&gt;                           AND budat BETWEEN v_date_low AND&lt;/P&gt;&lt;P&gt;                           v_date_high&lt;/P&gt;&lt;P&gt;                           AND umskz = space&lt;/P&gt;&lt;P&gt;                           AND blart IN s_blart.&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;                             AND gsber IN gsber.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;        IF bsid-shkzg = 'S'.&lt;/P&gt;&lt;P&gt;          i_tab-dmbtr_s = i_tab-dmbtr_s + ( bsid-dmbtr   ).&lt;/P&gt;&lt;P&gt;        ELSEIF bsid-shkzg = 'H'.&lt;/P&gt;&lt;P&gt;          i_tab-dmbtr_h = i_tab-dmbtr_h + ( bsid-dmbtr   ).&lt;/P&gt;&lt;P&gt;        ENDIF.&lt;/P&gt;&lt;P&gt;      ENDSELECT.&lt;/P&gt;&lt;P&gt;    ENDIF.&lt;/P&gt;&lt;P&gt;    "opening balance ( þirket bazlý )z1 degeri&lt;/P&gt;&lt;P&gt;   i_tab-z1 = i_tab-z1 + ( knc1-umsav + i_tab-dmbtr_s - i_tab-dmbtr_h ).&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;for israel&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;    i_tab-dmbtril_s = i_tab-dmbtr_s .&lt;/P&gt;&lt;P&gt;    i_tab-dmbtril_h = i_tab-dmbtr_h .&lt;/P&gt;&lt;P&gt;  ENDSELECT.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Regards&lt;/P&gt;&lt;P&gt; Sudheer&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Tue, 04 Sep 2007 15:56:35 GMT</pubDate>
      <guid>https://community.sap.com/t5/application-development-and-automation-discussions/alv-display/m-p/2729309#M633485</guid>
      <dc:creator>Former Member</dc:creator>
      <dc:date>2007-09-04T15:56:35Z</dc:date>
    </item>
  </channel>
</rss>

