<?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: report code with ALV in Application Development and Automation Discussions</title>
    <link>https://community.sap.com/t5/application-development-and-automation-discussions/report-code-with-alv/m-p/1062172#M92179</link>
    <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;there are lot of examples in sap see se38 with Balv* and take f4 you will get lot of reports&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
    <pubDate>Thu, 24 Nov 2005 07:33:43 GMT</pubDate>
    <dc:creator>Former Member</dc:creator>
    <dc:date>2005-11-24T07:33:43Z</dc:date>
    <item>
      <title>report code with ALV</title>
      <link>https://community.sap.com/t5/application-development-and-automation-discussions/report-code-with-alv/m-p/1062170#M92177</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;Can any body provide me the code for report with selection screen using ALV.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Thanks in advance&lt;/P&gt;&lt;P&gt;Prasanna Kumar&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 24 Nov 2005 07:28:33 GMT</pubDate>
      <guid>https://community.sap.com/t5/application-development-and-automation-discussions/report-code-with-alv/m-p/1062170#M92177</guid>
      <dc:creator>Former Member</dc:creator>
      <dc:date>2005-11-24T07:28:33Z</dc:date>
    </item>
    <item>
      <title>Re: report code with ALV</title>
      <link>https://community.sap.com/t5/application-development-and-automation-discussions/report-code-with-alv/m-p/1062171#M92178</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi Prasanna,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Below is an example of ALV reporting.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;PRE&gt;&lt;CODE&gt;*&amp;amp;---------------------------------------------------------------------*
*&amp;amp; Report  ZVVF_MR028_STOCKLEDGER                                      *
*&amp;amp;                                                                     *
*&amp;amp;---------------------------------------------------------------------*
*&amp;amp;                                                                     *
*&amp;amp;                                                                     *
*&amp;amp;---------------------------------------------------------------------*

REPORT  ZVVF_MR028_STOCKLEDGER                  .



**---------------------------------------------------------------------*
*       Tables
**---------------------------------------------------------------------*

TABLES:      EKKO,    "PURCHASING DOC. HEADER
             EKPO,    "PURCHASING DOC. ITEM
             MAKT,    "MATERIAL DISCRIPTION
             LFA1,    "VENDOR MASTER
             RSEG,    "DOC. ITEM - INCOMING INVOICE
             KONV,    "CONDITION (TRANSECTION DATA - CLUSTER TABLE)
             EKPA,    "Partner Roles in Purchasing
             MSEG,
             t247,
             mardh,
             mara.

**---------------------------------------------------------------------*
*       Types                    Begin with TY_
**---------------------------------------------------------------------*

TYPE-POOLS slis.

TYPES  :  BEGIN OF ty_head,

              p_date TYPE dats,
              matnr LIKE mseg-matnr,
              maktx LIKE makt-maktx,
              openbal LIKE mardh-labst,
              r_po LIKE mseg-menge,
              r_prodord LIKE mseg-menge,
              r_byprod LIKE mseg-menge,
              r_others LIKE mseg-menge,
              R_TOTAL TYPE mseg-menge,
              i_prod LIKE mseg-menge,
              i_cust LIKE mseg-menge,
              i_costcen LIKE mseg-menge,
              i_scrapping LIKE mseg-menge,
              i_subcontractor LIKE mseg-menge,
              i_sampling LIKE mseg-menge,
              purret LIKE mseg-menge,
              i_total like mseg-menge,
              stock_out LIKE mseg-menge,
              stock_in LIKE mseg-menge,
              stock_transit LIKE mseg-menge,
              m_to_m_transit  LIKE mseg-menge,
              phy_loss LIKE mseg-menge,
              phy_gain LIKE mseg-menge,
              closing_bal LIKE mseg-menge,
              current_bal LIKE mseg-menge,
              bwart like mseg-bwart,
              werks like mseg-werks,
          END OF ty_head.

types :  begin of ty_docs,
         matnr like mseg-matnr,  "Material
         budat like mkpf-budat,  "Posting date
         menge like mseg-menge,  "Qty
         xblnr like mkpf-xblnr,  "Ref doc
         end of ty_docs.

data : w_cnt type I.
data : w_chk type i.

TYPES: BEGIN OF TY_KONV,

             KNUMV LIKE KONV-KNUMV,
             KBETR LIKE KONV-KBETR,
             KSCHL LIKE KONV-KSCHL,
             KWERT LIKE KONV-KAWRT,

       END OF TY_KONV.


TYPES: BEGIN OF TY_KBETR,
*              KBETR LIKE KONV-KBETR,
              KWERT LIKE KONV-KWERT,
          END OF TY_KBETR.


TYPES: BEGIN OF TY_RSEG,
              EBELN LIKE RSEG-EBELN,
              MATNR LIKE RSEG-MATNR,
              WRBTR LIKE RSEG-WRBTR,
              KSCHL LIKE RSEG-KSCHL,
              LIFNR LIKE RSEG-LIFNR,

          END OF TY_RSEG.

TYPES: BEGIN OF TY_NAME1,
              NAME1 LIKE LFA1-NAME1,
       END OF TY_NAME1.

**-----------------------------------------------------------
** Each Condition and their values w.r.t different docu types
**-----------------------------------------------------------
*data: begin of temp_head occurs 0,
*        kschl  like  konv-kschl,  " Condition type
*        kwert  like  konv-kwert,  " Condition value
*      end of temp_head.
*

**---------------------------------------------------------------------*
*       Constants                Begin with C_
**---------------------------------------------------------------------*

CONSTANTS: st_formname_top_of_page TYPE slis_formname
                              VALUE 'TOP_OF_PAGE-ALV'.


**---------------------------------------------------------------------*
*       Data                     Begin with W_
**---------------------------------------------------------------------*

*-------- Declarations for ALV Grid.

DATA:   it_st_list_top_of_page TYPE slis_t_listheader,
        it_st_fieldcat TYPE slis_t_fieldcat_alv,
        it_st_events   TYPE slis_t_event,
        st_layout   TYPE slis_layout_alv,
        s_status TYPE slis_formname VALUE 'STANDARD_ST01',
        s_user_command TYPE slis_formname VALUE 'USER_COMMAND-ALV',
        s_repid LIKE sy-repid,
        s_save(1) TYPE c,
        s_variant LIKE disvariant,
        code LIKE disvariant-handle.


data : begin of it_stockclose occurs 0,
       werks like s031-werks,   "Plant
       matnr like mara-matnr,   "Material
       lgort like mard-lgort,   "Storage Loc
       labst like mardh-labst,  "Unrestricted Stock
       insme like mardh-insme,  "Inspection Stock
       speme like mardh-speme,  "Safety stock
       einme like mardh-einme,  "Total stock of rest batches
       retme like mardh-retme,  "Blocked stock returns
       end of it_stockclose.

data : begin of it_finalstock occurs 0,
       werks like mseg-werks,   "Plant
       matnr like mseg-matnr,   "Material code
       lgort like mard-lgort,   "Sto Loc
       menge like mseg-menge,   "Qty
*       budat like mkpf-budat,   "Posting Date
       end of it_finalstock.

data : begin of it_docs occurs 0,
       matnr like mseg-matnr,   "Material code
       budat like mkpf-budat,   "Posting date
       bwart like mseg-bwart,   "Movement type
       menge like mseg-menge,   "Quantity
       werks like mseg-werks,   "Plant
       shkzg like mseg-shkzg,   "Credit/debit
       lgort like mseg-lgort,   "Sto Loc
       maktx like makt-maktx,   "Material Discription
       end of it_docs.

data : begin of it_mkpf occurs 0,
       budat like mkpf-budat,   "Posting date

       mblnr like mkpf-mblnr,   "Material Doc
       xblnr like mkpf-xblnr,   "Delivery ref no
       mjahr like mkpf-mjahr,   "Fiscal yr
       cpudt like mkpf-cpudt,
       end of it_mkpf.

data : begin of it_mseg occurs 0,
       matnr like mseg-matnr,   "Material
       bwart like mseg-bwart,   "Movement type
       menge like mseg-menge,   "Qty
       werks like mseg-werks,   "Plant
       mjahr like mseg-mjahr,   "Fiscal yr
       shkzg like mseg-shkzg,   "Credit/Debit Indicator
       lgort like mard-lgort,   "Sto loc
       budat like mkpf-budat,   "Posting date
       xblnr like mkpf-xblnr,   "Delivery ref
       cpudt like mkpf-cpudt,
       end of it_mseg.

data : begin of it_matnr occurs 0,
       matnr like mara-matnr,   "Material
       end of it_matnr.

data : w_monat  type monat.    "Month number

data : w_gjahr like sy-datum,    "Date
       w_date_fiscal(4) type n,  "Year
       w_date like sy-datum,     "Date
       w_buper like t009b-poper, "Posting period
       w_year like t009b-bdatj,  "Posting date
       w_datum(2) type n.        "Date

**---------------------------------------------------------------------*
*       Internal tables          Begin with IT_
**---------------------------------------------------------------------*

DATA    :  IT_HEAD TYPE STANDARD TABLE OF TY_HEAD WITH HEADER LINE.

***Issues and receipts
data : it_issue type ty_docs occurs 0 with header line,
       it_receipt type ty_docs occurs 0 with header line,
       it_issue_date type ty_docs occurs 0 with header line,
       it_receipt_date type ty_docs occurs 0 with header line.
data:   w_dval like mseg-menge,
        w_opbal like mseg-menge.

**----------------------------------------------------------------------
**
**  WORK AREAS: Begin with WA_
**
**----------------------------------------------------------------------
**
*
*DATA: wa_HEAD type TY_HEAD.
*data: w_tkwert    type p decimals 2 value 0,
*      grmenge     like ekpo-menge,
*      w_tot_kwert type p decimals 2 value 0,
*      w_tmp_kwert type p decimals 2 value 0,
*      w_finalsum  type p decimals 2 value 0,                "#EC *
*      w_finalrate type p decimals 4 value 0.                "#EC *


**---------------------------------------------------------------------*
*       R A N G E S
**---------------------------------------------------------------------*

ranges: r_loekz  for  ekko-loekz.  " Deletion Indicator
ranges : r_movtype for mseg-bwart,   "Movement type
         r_date for sy-datum.        "Date


**---------------------------------------------------------------------*
*       Select Options          Begin with SO_
**---------------------------------------------------------------------*

SELECTION-SCREEN BEGIN OF BLOCK MAIN WITH FRAME TITLE TEXT-001.
SELECTION-SCREEN SKIP 2.


*SELECT-OPTIONS : SO_LIFNR FOR EKKO-LIFNR.

*SELECT-OPTIONS : SO_EKORG FOR EKKO-EKORG .

*SELECT-OPTIONS : SO_WERKS FOR MSEG-WERKS .
*
*SELECT-OPTIONS : SO_EBELN FOR EKKO-EBELN.
*
*SELECT-OPTIONS : SO_DATE for sy-datum obligatory no-extension.
*
*SELECT-OPTIONS : SO_EKGRP FOR EKKO-EKGRP.
*
*SELECT-OPTIONS : SO_BSART FOR EKKO-BSART DEFAULT 'NB'.
*
*SELECT-OPTIONS : SO_MATKL FOR EKPO-MATKL.
*
*SELECT-OPTIONS : SO_MATNR FOR MSEG-MATNR.
*


select-options   : so_werks for mseg-werks default 'P001'. "Plant
select-options   : so_lgort for mseg-lgort. " Sto. Location
select-options   : so_matnr for mseg-matnr obligatory. "Material code
select-options   : so_mtart for mara-mtart. "Material type
SELECT-OPTIONS   : SO_MATKL FOR EKPO-MATKL. "Material Group
select-options   : so_date for sy-datum obligatory no-extension.

SELECTION-SCREEN SKIP 2.


selection-screen: skip,
                  begin of line,
                  comment (15) text-034.
parameters:     p_all    radiobutton group del.
selection-screen comment 25(9) for field p_all.
parameters:     p_del    radiobutton group del.
selection-screen comment 45(12) for field p_del.
parameters:     p_undel  radiobutton group del default 'X'.
selection-screen comment 65(14) for field p_undel.
selection-screen end of line.

SELECTION-SCREEN SKIP 2.


SELECTION-SCREEN END OF BLOCK MAIN.

**---------------------------------------------------------------------*
*       Parameters              Begin with PR_
**---------------------------------------------------------------------*


**---------------------------------------------------------------------*
*       Initialisation
**---------------------------------------------------------------------*

INITIALIZATION.
  s_repid = sy-repid.
  s_save = 'A'.


  perform f000_initialize_mov_type changing r_movtype[].

  PERFORM eventtab_build USING it_st_events[].
  PERFORM variant_init.


************************************************************************
*       S T A R T   O F   S E L E C T I O N
************************************************************************
START-OF-SELECTION.

  PERFORM initialize.

  perform f001_determine_fiscal_period.

  perform f002_determine_closing_stock changing it_stockclose[].


  if not so_date-low+6(2) eq '01'.

    perform f003_change_closing_stock changing  it_stockclose[].

  endif.

  perform f004_determine_mat_docs changing it_mkpf[]
                                             it_mseg[].


  perform f005_receipts_issues using    it_mseg[]
                                 changing it_issue[]
                                          it_receipt[]
                                          it_matnr[].


*---alv

  PERFORM comment_build USING it_st_list_top_of_page[].
  PERFORM fieldcat USING it_st_fieldcat[].
  PERFORM layout_build USING st_layout.
  PERFORM reuse_alv_list_display.


END-OF-SELECTION.

*---------------
form initialize.
*---------------
  clear:   r_loekz.
  refresh: r_loekz.
*--- Deleted PO's only
  if p_del = 'X'.
    r_loekz-sign   = 'I'.
    r_loekz-option = 'EQ'.
    r_loekz-low    = 'L'.
    append r_loekz.
  endif.
*--- UnDeleted PO's only
  if p_undel = 'X'.
    r_loekz-sign   = 'E'.
    r_loekz-option = 'EQ'.
    r_loekz-low    = ' '.
    append r_loekz.
  endif.
endform.                    "initialize


*&amp;amp;---------------------------------------------------------------------*
*&amp;amp;      Form  f000_initialize_mov_type
*&amp;amp;---------------------------------------------------------------------*
*       Desc : Initialization of movement types
*----------------------------------------------------------------------*
*----------------------------------------------------------------------*
form f000_initialize_mov_type  changing p_r_movtype like r_movtype[].


  data : lwa_movtype like line of p_r_movtype.

  lwa_movtype-sign = 'I'.
  lwa_movtype-option = 'EQ'.
  lwa_movtype-low = '101'.
  append lwa_movtype to p_r_movtype.

  lwa_movtype-low = '102'.
  append lwa_movtype to p_r_movtype.
***********
* Additional changes done for other movement types--&amp;gt; by deepak

  lwa_movtype-low = '103'.
  append lwa_movtype to p_r_movtype.

  lwa_movtype-low = '104'.
  append lwa_movtype to p_r_movtype.

  lwa_movtype-low = '105'.
  append lwa_movtype to p_r_movtype.

  lwa_movtype-low = '106'.
  append lwa_movtype to p_r_movtype.

  lwa_movtype-low = '122'.
  append lwa_movtype to p_r_movtype.


  lwa_movtype-low = '123'.
  append lwa_movtype to p_r_movtype.

  lwa_movtype-low = '161'.
  append lwa_movtype to p_r_movtype.

  lwa_movtype-low = '162'.
  append lwa_movtype to p_r_movtype.

  lwa_movtype-low = '201'.
  append lwa_movtype to p_r_movtype.

  lwa_movtype-low = '202'.
  append lwa_movtype to p_r_movtype.

  lwa_movtype-low = '261'.
  append lwa_movtype to p_r_movtype.

  lwa_movtype-low = '262'.
  append lwa_movtype to p_r_movtype.

  lwa_movtype-low = '301'.
  append lwa_movtype to p_r_movtype.

  lwa_movtype-low = '302'.
  append lwa_movtype to p_r_movtype.

  lwa_movtype-low = '303'.
  append lwa_movtype to p_r_movtype.

  lwa_movtype-low = '304'.
  append lwa_movtype to p_r_movtype.

  lwa_movtype-low = '305'.
  append lwa_movtype to p_r_movtype.

  lwa_movtype-low = '306'.
  append lwa_movtype to p_r_movtype.

  lwa_movtype-low = '309'.
  append lwa_movtype to p_r_movtype.

  lwa_movtype-low = '310'.
  append lwa_movtype to p_r_movtype.

  lwa_movtype-low = '331'.
  append lwa_movtype to p_r_movtype.

  lwa_movtype-low = '332'.
  append lwa_movtype to p_r_movtype.

  lwa_movtype-low = '333'.
  append lwa_movtype to p_r_movtype.

  lwa_movtype-low = '334'.
  append lwa_movtype to p_r_movtype.

  lwa_movtype-low = '335'.
  append lwa_movtype to p_r_movtype.

  lwa_movtype-low = '336'.
  append lwa_movtype to p_r_movtype.

  lwa_movtype-low = '511'.
  append lwa_movtype to p_r_movtype.

  lwa_movtype-low = '512'.
  append lwa_movtype to p_r_movtype.

  lwa_movtype-low = '531'.
  append lwa_movtype to p_r_movtype.

  lwa_movtype-low = '532'.
  append lwa_movtype to p_r_movtype.

  lwa_movtype-low = '541'.
  append lwa_movtype to p_r_movtype.

  lwa_movtype-low = '542'.
  append lwa_movtype to p_r_movtype.

  lwa_movtype-low = '561'.
  append lwa_movtype to p_r_movtype.

  lwa_movtype-low = '562'.
  append lwa_movtype to p_r_movtype.

  lwa_movtype-low = '601'.
  append lwa_movtype to p_r_movtype.

  lwa_movtype-low = '602'.
  append lwa_movtype to p_r_movtype.

  lwa_movtype-low = '641'.
  append lwa_movtype to p_r_movtype.

  lwa_movtype-low = '642'.
  append lwa_movtype to p_r_movtype.

  lwa_movtype-low = '643'.
  append lwa_movtype to p_r_movtype.

  lwa_movtype-low = '644'.
  append lwa_movtype to p_r_movtype.

  lwa_movtype-low = '701'.
  append lwa_movtype to p_r_movtype.

  lwa_movtype-low = '702'.
  append lwa_movtype to p_r_movtype.

  lwa_movtype-low = '909'.
  append lwa_movtype to p_r_movtype.

  lwa_movtype-low = '910'.
  append lwa_movtype to p_r_movtype.


endform.                    " f000_initialize_mov_type


*&amp;amp;---------------------------------------------------------------------*
*&amp;amp;      Form  f001_determine_fiscal_period
*&amp;amp;---------------------------------------------------------------------*
*       Desc  Determination of fiscal period
*----------------------------------------------------------------------*
*----------------------------------------------------------------------*
form f001_determine_fiscal_period .


  clear : w_monat,
          w_gjahr,
          w_date,
          w_buper,
          w_year.

  w_monat = so_date-low+4(2).

  if w_monat = '01'.

    w_monat = '12'.
    w_gjahr = so_date-low+0(4).
    w_date_fiscal = w_gjahr+0(4) - 1.
    w_gjahr = w_date_fiscal.

  else.
    w_monat = w_monat - 1.
    w_gjahr = so_date-low+0(4).

  endif.
  concatenate w_gjahr w_monat '01'  into w_gjahr.


*****Determines Fiscal yr and period
  call function 'DATE_TO_PERIOD_CONVERT'
    EXPORTING
      i_date  = w_gjahr
      i_periv = 'V3'
    IMPORTING
      e_buper = w_buper
      e_gjahr = w_year.
  if sy-subrc &amp;lt;&amp;gt; 0.
  endif.

  w_datum = w_buper+1(2).


**Month text
  select single ltx from t247 into t247-ltx
         where spras = 'E'
         and   mnr   = so_date-low+4(2).

endform.                    " f001_determine_fiscal_period

*&amp;amp;---------------------------------------------------------------------*
*&amp;amp;      Form  f001_determine_closing_stock
*&amp;amp;---------------------------------------------------------------------*
*       Desc : Determination of closing stock
*----------------------------------------------------------------------*
*----------------------------------------------------------------------*
form f002_determine_closing_stock
                   changing p_it_stockclose like it_stockclose[].

  data : lw_recs type i,
         w_dval like mseg-menge,
         w_opbal like mseg-menge.

  data : begin of lit_stockclose occurs 0,
         lfgja like mardh-lfgja,   "Fiscal yr
         lfmon like mardh-lfmon,   "Period
         werks like s031-werks,   "Plant
         matnr like mara-matnr,   "Material
         lgort like mseg-lgort,   "Storage Loc
         labst like mardh-labst,  "Unrestricted Stock
       end of lit_stockclose.

  data : begin of lit_mard occurs 0,
         matnr like mara-matnr,
         werks like mseg-werks,
         lgort like mseg-lgort,
         end of lit_mard.

  data : lwa_stockclose like line of p_it_stockclose.

  select matnr werks lgort from mard
  into corresponding fields of table lit_mard
  where matnr in so_matnr
  and werks in so_werks.



  refresh it_stockclose.
  clear   it_stockclose.


*****Fetch Closing stock

*If the entry is found in MARD then consider the same
*else fetch the closing stock from MARDH.

  loop at lit_mard.

    refresh lit_stockclose.
    clear   lit_stockclose.


    select werks matnr lgort labst
          insme speme einme retme
          lfgja lfmon
           into corresponding fields of
            table lit_stockclose
           from mard
    where   lfmon = w_datum
    and     lfgja = w_year
    and     werks = lit_mard-werks
    and     matnr = lit_mard-matnr
    and     lgort = lit_mard-lgort.

    clear lw_recs.
    describe table lit_stockclose lines lw_recs.

*If no entry in MARD fetch from MARDH.
    if lw_recs = 0.

      select werks matnr lgort labst
            insme speme einme retme
            lfgja lfmon
             into corresponding fields of
            table lit_stockclose
            from mardh
     where   lfmon = w_datum
     and     lfgja = w_year
     and     werks = lit_mard-werks
     and     matnr = lit_mard-matnr
     and     lgort = lit_mard-lgort.


    endif.

    sort lit_stockclose by lfgja lfmon descending.

    read table lit_stockclose index 1.
    if sy-subrc eq 0.
      move-corresponding lit_stockclose to lwa_stockclose.
      append  lwa_stockclose to p_it_stockclose.



      clear  lwa_stockclose.

    endif.

  endloop.

endform.                    " f001_determine_closing_stock

*&amp;amp;---------------------------------------------------------------------*
*&amp;amp;      Form   f003_change_closing_stock
*&amp;amp;---------------------------------------------------------------------*
*       Desc : Selection of the mat docs for the intermediate
*              days if the selection begin date is not from
*              first date of the corresponding month.
*----------------------------------------------------------------------*
*----------------------------------------------------------------------*
form f003_change_closing_stock changing
                                   p_it_stockclose like it_stockclose[].

  data : lwa_stockclose like line of p_it_stockclose[].



  refresh : r_date,
            it_docs,
            it_finalstock.

  clear : r_date,
          lwa_stockclose.

  r_date-sign = 'I'.
  r_date-option = 'BT'.

  concatenate so_date-low+0(4)
              so_date-low+4(2)
              '01'
              into r_date-low.

  r_date-high = so_date-low - 1.
  append r_date.
  clear r_date.

read table r_loekz index 1.

  select mkpf~budat
         mseg~matnr
         mseg~bwart
         mseg~menge
         mseg~werks
         mseg~shkzg
         mseg~lgort
         makt~maktx
         into corresponding
         fields of
         table it_docs
         from mkpf as mkpf inner join mseg as mseg
         on mkpf~mandt = mseg~mandt and
            mkpf~mblnr = mseg~mblnr and
            mkpf~mjahr = mseg~mjahr
         inner join makt as makt
           on mseg~matnr = makt~matnr
         where
            mseg~werks IN SO_WERKS and
            mseg~matnr in so_matnr and
            mkpf~budat in r_date and
            mseg~bwart in r_movtype.



  Clear it_docs.

  loop at it_docs.

    if it_docs-shkzg = 'H'.
      it_docs-menge = - ( it_docs-menge ).
      modify it_docs.
    endif.

    move-corresponding it_docs to it_finalstock.
    collect it_finalstock.
    clear   it_finalstock.

    move it_docs-maktx to it_head-maktx.

  endloop.

  loop at p_it_stockclose into lwa_stockclose.
    read table it_finalstock with key
                       matnr = lwa_stockclose-matnr
                       werks = lwa_stockclose-werks
                       lgort = lwa_stockclose-lgort.

    if sy-subrc eq 0.

      lwa_stockclose-labst = lwa_stockclose-labst +
                             it_finalstock-menge.
      modify p_it_stockclose from lwa_stockclose.


      read table p_it_stockclose into lwa_stockclose index 1.
      "with key matnr = wa_head-matnr.
      "budat = wa_head-p_date.

      if sy-subrc = 0.

        w_dval = lwa_stockclose-labst.



      ENDIF.



      clear lwa_stockclose.
    endif.

  endloop.

endform.                    " f003_change_closing_stock

*&amp;amp;---------------------------------------------------------------------*
*&amp;amp;      Form  f004_determine_mat_docs
*&amp;amp;---------------------------------------------------------------------*
*       DEsc : Determination of Receipts and Issues
*----------------------------------------------------------------------*
*----------------------------------------------------------------------*
form f004_determine_mat_docs  changing p_it_mkpf like it_mkpf[]
                                       p_it_mseg like it_mseg[].


  data : lwa_mkpf like line of p_it_mkpf[],
         lwa_mseg like line of p_it_mseg[],
          ls_quantity   type mseg-menge,
          sum_issue type mseg-menge,
          sum_receipt type mseg-menge,
          sum_531 type mseg-menge,
          sum_541 type mseg-menge,
          sum_101  type mseg-menge,
          sum_511  type mseg-menge,
          sum_261  type mseg-menge,
          sum_601  type mseg-menge,
          sum_201 type mseg-menge,
          sum_641 type mseg-menge,
          sum_po  type mseg-menge,
          sum_551  type mseg-menge,
          sum_331  type mseg-menge,
          sum_161  type mseg-menge,
          sum_305  type mseg-menge,
          sum_309  type mseg-menge,
          sum_701  type mseg-menge,
          sum_702  type mseg-menge.


***Determination of Mat Docs

  select mblnr xblnr budat mjahr cpudt from mkpf
         into corresponding fields
         of table it_mkpf
         where budat in so_date.


***Determination of Receipts and issues

*  loop at p_it_mkpf into lwa_mkpf.
*
*    select mblnr matnr bwart menge werks mjahr shkzg lgort
*          from mseg into corresponding
*          fields of lwa_mseg
*          where mblnr = lwa_mkpf-mblnr
*          and   mjahr = lwa_mkpf-mjahr
*          and   werks in so_werks
*          and   matnr in so_matnr
*          and   bwart in r_movtype.
*
*      if lwa_mseg-shkzg = 'H'.
*        lwa_mseg-menge = - ( lwa_mseg-menge ).
*      endif.
*
*
*      move : lwa_mkpf-budat to lwa_mseg-budat,
*             lwa_mkpf-xblnr to lwa_mseg-xblnr,
*             lwa_mkpf-cpudt to lwa_mseg-cpudt.
*
*
*      append lwa_mseg to p_it_mseg.
*
*      move lwa_mseg-matnr to it_head-matnr.
*      move lwa_mseg-budat to it_head-p_date.
*      move lwa_mseg-bwart to it_head-bwart.
*      append it_head.
*      clear it_head.
*      clear lwa_mseg.
*
*
*    endselect.
*  endloop.


  sort it_mkpf by budat cpudt .
  loop at it_mkpf.
    at new budat.
      if w_opbal = SPACE.
        it_head-openbal = w_dval.
        w_chk = 1.
      else.
        it_head-openbal = w_opbal.
        w_chk = 2.
      endif.
    endat.

    if w_chk = 1.
      it_head-openbal = w_dval.
    elseif w_chk = 2.
      it_head-openbal = w_opbal.
    endif.
    select  Single *
          from mseg
          where mblnr = it_mkpf-mblnr
          and   mjahr = it_mkpf-mjahr
          and   werks in so_werks
          and   matnr in so_matnr
          and   bwart in r_movtype.

    if mseg-matnr ne SPACE.
      move mseg-mblnr to it_mseg-xblnr.
      move mseg-matnr to it_mseg-matnr.
      move mseg-bwart to IT_mseg-bwart.
      move mseg-menge to it_mseg-menge.
      move mseg-werks to it_mseg-werks.
      move mseg-mjahr to it_mseg-mjahr.
      move mseg-shkzg to it_mseg-shkzg.
      move mseg-lgort to it_mseg-lgort.


      if it_mseg-shkzg = 'H'.
        it_mseg-menge = - ( lwa_mseg-menge ).
      endif.



      move : it_mkpf-budat to it_mseg-budat,
             it_mkpf-xblnr to it_mseg-xblnr,
             it_mkpf-cpudt to it_mseg-cpudt.


*      append lwa_mseg to p_it_mseg.
      append it_mseg.

*  it_head-R_PO = it_head-r_po + ls_quantity.


      if ( it_mseg-bwart eq '101'
         or   it_mseg-bwart eq '102'
         or   it_mseg-bwart eq '103'
         or   it_mseg-bwart eq '104'
         or   it_mseg-bwart eq '105'
         or  it_mseg-bwart eq '106'
         or  it_mseg-bwart eq '161'
         or  it_mseg-bwart eq '162'
         or  it_mseg-bwart eq '122'
         or  it_mseg-bwart eq '123'
         or  it_mseg-bwart eq '511'
         or  it_mseg-bwart eq '512'
         or  it_mseg-bwart eq '531'
         or  it_mseg-bwart eq '532'
         or  it_mseg-bwart eq '561'
         or  it_mseg-bwart eq '562'
         or  it_mseg-bwart eq '305'
         or  it_mseg-bwart eq '306'
         or  it_mseg-bwart eq '702') and it_mseg-shkzg = 'S'.


        move it_mseg-menge to ls_quantity.
        sum_receipt = sum_receipt + ls_quantity.

      elseif

       ( it_mseg-bwart eq '261'
         or   it_mseg-bwart eq '262'
         or   it_mseg-bwart eq '601'
         or   it_mseg-bwart eq '602'
         or   it_mseg-bwart eq '201'
         or  it_mseg-bwart eq '202'
         or  it_mseg-bwart eq '551'
         or  it_mseg-bwart eq '552'
         or  it_mseg-bwart eq '541'
         or  it_mseg-bwart eq '542'
         or  it_mseg-bwart eq '331'
         or  it_mseg-bwart eq '332'
         or  it_mseg-bwart eq '333'
         or  it_mseg-bwart eq '334'
         or  it_mseg-bwart eq '335'
         or  it_mseg-bwart eq '336'
         or  it_mseg-bwart eq '641'
         or  it_mseg-bwart eq '642'
         or  it_mseg-bwart eq '643'
         or  it_mseg-bwart eq '644'
         or  it_mseg-bwart eq '351'
         or  it_mseg-bwart eq '352'
         or  it_mseg-bwart eq '301'
         or  it_mseg-bwart eq '302'
         or  it_mseg-bwart eq '303'
         or  it_mseg-bwart eq '304'

         or  it_mseg-bwart eq '309'
         or  it_mseg-bwart eq '310'
         or  it_mseg-bwart eq '909'
         or  it_mseg-bwart eq '910'
         or  it_mseg-bwart eq '701')  and it_mseg-shkzg = 'S'.

         move it_mseg-menge to ls_quantity.
        sum_issue = sum_issue + ls_quantity.

      endif.


    if ( it_mseg-bwart eq '101' or it_mseg-bwart eq '102'
        or it_mseg-bwart eq '103' or it_mseg-bwart eq '104'
        or it_mseg-bwart eq '105' or it_mseg-bwart eq '106')
        And it_mseg-shkzg = 'S'.

        move it_mseg-menge to ls_quantity.
        sum_po = sum_po + ls_quantity.
      endif.


      if ( it_mseg-bwart eq '531'
         or it_mseg-bwart eq '532') and it_mseg-shkzg = 'S'.

        move it_mseg-menge to ls_quantity.
        sum_531 = sum_531 + ls_quantity.
      endif.

      if ( it_mseg-bwart eq '541' or it_mseg-bwart eq '542' ).
        move it_mseg-menge to ls_quantity.
        sum_541 = sum_541 + ls_quantity.
      endif.

      if ( it_mseg-bwart eq '102' or it_mseg-bwart eq '102' ).
        move it_mseg-menge to ls_quantity.
        sum_101 = sum_101 + ls_quantity.
      endif.

      if ( it_mseg-bwart eq '561' or it_mseg-bwart eq '562'
          OR IT_MSEG-BWART EQ '511' OR it_mseg-bwart eq '512').
        move it_mseg-menge to ls_quantity.
        sum_511 = sum_511 + ls_quantity.
      endif.


      if ( it_mseg-bwart eq '261' or it_mseg-bwart eq '262').
        move it_mseg-menge to ls_quantity.
        sum_261 = sum_261 + ls_quantity.
      endif.

      if ( it_mseg-bwart eq '601' or it_mseg-bwart eq '602').
        move it_mseg-menge to ls_quantity.
        sum_601 = sum_601 + ls_quantity.
      endif.


      if ( it_mseg-bwart eq '201' or it_mseg-bwart eq '202').
        move it_mseg-menge to ls_quantity.
        sum_201 = sum_201 + ls_quantity.
      endif.

    if ( it_mseg-bwart eq '551' or it_mseg-bwart eq '552').
        move it_mseg-menge to ls_quantity.
        sum_551 = sum_551 + ls_quantity.
      endif.

    if ( it_mseg-bwart eq '331' or it_mseg-bwart eq '332'
          or it_mseg-bwart eq '333' or it_mseg-bwart eq '334'
          or it_mseg-bwart eq '335' or it_mseg-bwart eq '336').
        move it_mseg-menge to ls_quantity.
        sum_331 = sum_331 + ls_quantity.
      endif.

    if ( it_mseg-bwart eq '161' or it_mseg-bwart eq '162'
          or it_mseg-bwart eq '123' or it_mseg-bwart eq '122').
        move it_mseg-menge to ls_quantity.
        sum_161 = sum_161 + ls_quantity.
      endif.


    if ( it_mseg-bwart eq '641' or it_mseg-bwart eq '642'
          or it_mseg-bwart eq '643' or it_mseg-bwart eq '644'
          or it_mseg-bwart eq '351' or it_mseg-bwart eq '352'
          or it_mseg-bwart eq '301' or it_mseg-bwart eq '302'
          or it_mseg-bwart eq '303' or it_mseg-bwart eq '304').
        move it_mseg-menge to ls_quantity.
        sum_641 = sum_641 + ls_quantity.
      endif.

  if ( it_mseg-bwart eq '305' or it_mseg-bwart eq '306').
        move it_mseg-menge to ls_quantity.
        sum_305 = sum_305 + ls_quantity.
      endif.

  if ( it_mseg-bwart eq '309' or it_mseg-bwart eq '310'
     or it_mseg-bwart eq '909' or it_mseg-bwart eq '910').
        move it_mseg-menge to ls_quantity.
        sum_309 = sum_309 + ls_quantity.
      endif.


if ( it_mseg-bwart eq '701').
        move it_mseg-menge to ls_quantity.
        sum_701 = sum_701 + ls_quantity.
      endif.


if ( it_mseg-bwart eq '702').
        move it_mseg-menge to ls_quantity.
        sum_702 = sum_702 + ls_quantity.
      endif.


      at end of budat.

    it_head-closing_bal = ( it_head-openbal + sum_receipt ) - sum_issue.
        w_opbal = it_head-closing_bal.
        move it_mseg-matnr to it_head-matnr.
        move it_mseg-budat to it_head-p_date.
        move it_mseg-bwart to it_head-bwart.
        move sum_po  to it_head-R_po.
        move sum_101  to it_head-R_ProdOrd.
        move sum_531 to it_head-R_ByProd.
        move sum_511  to it_head-R_OTHERS.
        move sum_receipt to it_head-r_total.
        move sum_261  to it_head-I_Prod.
        move sum_601  to it_head-I_cust.
        move sum_201  to it_head-I_CostCen.
        move sum_551  to it_head-I_Scrapping.
        move sum_541 to it_head-I_subcontractor.
        move sum_331  to it_head-I_Sampling.
        move sum_issue   to it_head-i_total.
        move sum_161  to it_head-PurRet.
        move sum_641  to it_head-stock_out.
        move sum_305  to it_head-stock_in.
        move sum_309  to it_head-M_to_M_transit.
        move sum_701  to it_head-phy_loss.
        move sum_702  to it_head-phy_gain.



        append it_head.
        w_chk = 0.
        sum_issue = 0.
        sum_receipt = 0.
        sum_531 = 0.
        sum_541 = 0.
        sum_101 = 0.
        SUM_511 = 0.
        sum_261 = 0.
        sum_601 = 0.
        sum_201 = 0.
        sum_po = 0.
        sum_551 = 0.
        sum_641 = 0.
        sum_701 = 0.
        sum_702 = 0.


      endat.


      clear it_head.
      clear it_mseg.


    endif.


endloop.


  sort it_mseg by matnr budat bwart.
  sort it_head by matnr p_date bwart.
  delete ADJACENT duplicates from it_head.

endform.                    " f004_determine_mat_docs


*&amp;amp;---------------------------------------------------------------------*
*&amp;amp;      Form  f005_receipts_issues
*&amp;amp;---------------------------------------------------------------------*
*       Desc
*----------------------------------------------------------------------*
*----------------------------------------------------------------------*
form f005_receipts_issues  using    p_it_mseg  like it_mseg[]
                           changing p_it_issue like it_issue[]
                                    p_it_receipt like it_receipt[]
                                    p_it_matnr like it_matnr[].

  data : lwa_mseg like line of p_it_mseg[],
         lwa_issue like line of p_it_issue[],
         lwa_receipt like line of p_it_receipt[],
         lwa_matnr like line of p_it_matnr[],
         ls_quantity   type mseg-menge,
         wa_head type ty_head,
         lwa_stockclose like line of it_stockclose[].



*  sort it_head by bwart p_date matnr.
*  loop at it_head into wa_head.
*
*    read table p_it_mseg into lwa_mseg with key bwart = wa_head-bwart.
*    if sy-subrc = 0.
*      if ( lwa_mseg-bwart eq '101'
*          or   lwa_mseg-bwart eq '102'
*          or   lwa_mseg-bwart eq '103'
*          or   lwa_mseg-bwart eq '104'
*          or   lwa_mseg-bwart eq '105'
*          or  lwa_mseg-bwart eq '106') and lwa_mseg-shkzg = 'S'.
*        .
*        loop at p_it_mseg into lwa_mseg where matnr = wa_head-matnr
*                                        and   budat = wa_head-p_date
*                                        and   bwart = wa_head-bwart.
*
*          move lwa_mseg-menge to ls_quantity.
*          wa_head-R_PO = ls_quantity + wa_head-R_PO.
*          modify it_head from wa_head.
*        endloop.
*        clear ls_quantity .
*      endif.
*
*
*      if ( lwa_mseg-bwart eq '641'
*       and lwa_mseg-shkzg = 'S' ).
*        loop at p_it_mseg into lwa_mseg where matnr = wa_head-matnr
*                                        and   budat = wa_head-p_date
*                                        and   bwart = wa_head-bwart.
*          IF SY-SUBRC = 0 .
*            move lwa_mseg-menge to ls_quantity.
*            wa_head-stock_out = ls_quantity + wa_head-stock_out.
*            modify it_head from wa_head.
*          ENDIF.
*        endloop.
*        clear ls_quantity .
*      endif.
*
*      read table it_stockclose into lwa_stockclose
*         with key matnr = wa_head-matnr.
*                  "budat = wa_head-p_date.
*
*      if sy-subrc = 0.
*
*        wa_head-openbal = lwa_stockclose-labst.
*
*        modify it_head from wa_head.
*
*      ENDIF.
*
*    endif.
*  endloop.

*  sort it_head by bwart p_date matnr.
*  loop at it_head into wa_head.
*
*    read table it_mseg into lwa_mseg with key bwart = wa_head-bwart.
*    if sy-subrc = 0.
*      if ( lwa_mseg-bwart eq '101'
*          or   lwa_mseg-bwart eq '102'
*          or   lwa_mseg-bwart eq '103'
*          or   lwa_mseg-bwart eq '104'
*          or   lwa_mseg-bwart eq '105'
*          or  lwa_mseg-bwart eq '106') and lwa_mseg-shkzg = 'S'.
*        .
*        loop at it_mseg into lwa_mseg where matnr = wa_head-matnr
*                                        and   budat = wa_head-p_date
*                                        and   bwart = wa_head-bwart.
*
*          move lwa_mseg-menge to ls_quantity.
*          wa_head-R_PO = ls_quantity + wa_head-R_PO.
*          modify it_head from wa_head.
*        endloop.
*        clear ls_quantity .
*      endif.
*
*
*      if ( lwa_mseg-bwart eq '641'
*       and lwa_mseg-shkzg = 'S' ).
*        loop at it_mseg into lwa_mseg where matnr = wa_head-matnr
*                                        and   budat = wa_head-p_date
*                                        and   bwart = wa_head-bwart.
*          IF SY-SUBRC = 0 .
*            move lwa_mseg-menge to ls_quantity.
*            wa_head-stock_out = ls_quantity + wa_head-stock_out.
*            modify it_head from wa_head.
*          ENDIF.
*        endloop.
*        clear ls_quantity .
*      endif.
*
*      read table it_stockclose into lwa_stockclose
*         with key matnr = wa_head-matnr.
*                  "budat = wa_head-p_date.
*
*      if sy-subrc = 0.
*
*        wa_head-openbal = lwa_stockclose-labst.
*
*        modify it_head from wa_head.
*
*      ENDIF.
*
*    endif.
*  endloop.


endform.                    " f005_receipts_issues

*&amp;amp;---------------------------------------------------------------------*
*&amp;amp;      Form  COMMENT_BUILD
*&amp;amp;---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*  --&amp;gt;  p1        text
*  &amp;lt;--  p2        text
*----------------------------------------------------------------------*
FORM comment_build USING p_it_st_list_top_of_page TYPE slis_t_listheader
.

  DATA: ls_line TYPE slis_listheader.

  REFRESH p_it_st_list_top_of_page.
  CLEAR ls_line.
  ls_line-typ  = 'H'.
  ls_line-info  = 'Details of Stock Ledger'.
  APPEND ls_line TO p_it_st_list_top_of_page.

ENDFORM.                    " COMMENT_BUILD

*&amp;amp;--------------------------------------------------------------------*
*&amp;amp;      Form  TOP_OF_PAGE-ALV
*&amp;amp;--------------------------------------------------------------------*
*       text
*---------------------------------------------------------------------*
FORM top_of_page-alv.
*
  CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE'
    EXPORTING
      it_list_commentary = it_st_list_top_of_page.

ENDFORM.                    "TOP_OF_PAGE-ALV
*&amp;amp;---------------------------------------------------------------------*
*&amp;amp;      Form  FIELDCAT
*&amp;amp;---------------------------------------------------------------------*
*      --&amp;gt;P_IT_ST_FIELDCAT[]  text
*----------------------------------------------------------------------*
FORM fieldcat  USING p_it_st_fieldcat TYPE slis_t_fieldcat_alv.
  DATA: ls_fieldcat TYPE slis_fieldcat_alv.

  CLEAR ls_fieldcat.
  ls_fieldcat-fieldname  = 'P_DATE'.
  ls_fieldcat-datatype   = 'P_DATE'.
  ls_fieldcat-outputlen  = 18.
  ls_fieldcat-seltext_m  = text-002 .
*  ls_fieldcat-rollname   = 'MATNR'.
  ls_fieldcat-key         = 'X'.
  APPEND ls_fieldcat TO p_it_st_fieldcat.

  CLEAR ls_fieldcat.
  ls_fieldcat-fieldname   = 'MATNR'.
  ls_fieldcat-rollname    = 'MATNR'.
  ls_fieldcat-ddictxt     = 'L'.
  ls_fieldcat-outputlen  = 18.
  APPEND ls_fieldcat TO p_it_st_fieldcat.

  CLEAR ls_fieldcat.
  ls_fieldcat-fieldname   = 'MAKTX'.
  ls_fieldcat-rollname    = 'MAKTX'.
  ls_fieldcat-ddictxt     = 'L'.
    ls_fieldcat-outputlen  = 40.
  APPEND ls_fieldcat TO p_it_st_fieldcat.

*  CLEAR ls_fieldcat.
*  ls_fieldcat-fieldname   = 'BWART'.
*  ls_fieldcat-rollname    = 'BWART'.
*  ls_fieldcat-ddictxt     = 'L'.
*  APPEND ls_fieldcat TO p_it_st_fieldcat.


  CLEAR ls_fieldcat.
  ls_fieldcat-fieldname   = 'OPENBAL'.
  ls_fieldcat-rollname    = 'OPENBAL'.
  ls_fieldcat-ddictxt     = 'L'.
  ls_fieldcat-seltext_m  = text-003 .

  APPEND ls_fieldcat TO p_it_st_fieldcat.

  CLEAR ls_fieldcat.
  ls_fieldcat-fieldname   = 'R_PO'.
  ls_fieldcat-rollname    = 'R_PO'.
  ls_fieldcat-ddictxt     = 'L'.
  ls_fieldcat-seltext_m  = text-004 .
  APPEND ls_fieldcat TO p_it_st_fieldcat.

  CLEAR ls_fieldcat.
  ls_fieldcat-fieldname   = 'R_PRODORD'.
  ls_fieldcat-rollname    = 'R_PRODORD'.
  ls_fieldcat-ddictxt     = 'L'.
  ls_fieldcat-seltext_m  = text-005 .
  APPEND ls_fieldcat TO p_it_st_fieldcat.

  CLEAR ls_fieldcat.
  ls_fieldcat-fieldname   = 'R_BYPROD'.
  ls_fieldcat-rollname    = 'R_BYPROD'.
  ls_fieldcat-ddictxt     = 'L'.
  ls_fieldcat-seltext_m  = text-006 .
  APPEND ls_fieldcat TO p_it_st_fieldcat.


  CLEAR ls_fieldcat.
  ls_fieldcat-fieldname   = 'R_OTHERS'.
  ls_fieldcat-rollname    = 'R_OTHERS'.
  ls_fieldcat-ddictxt     = 'L'.
  ls_fieldcat-seltext_m  = text-007 .
  APPEND ls_fieldcat TO p_it_st_fieldcat.

  CLEAR ls_fieldcat.
  ls_fieldcat-fieldname   = 'R_TOTAL'.
  ls_fieldcat-rollname    = 'R_TOTAL'.
  ls_fieldcat-ddictxt     = 'L'.
  ls_fieldcat-seltext_m  = text-008 .
  APPEND ls_fieldcat TO p_it_st_fieldcat.

  CLEAR ls_fieldcat.
  ls_fieldcat-fieldname   = 'I_PROD'.
  ls_fieldcat-rollname    = 'I_PROD'.
  ls_fieldcat-ddictxt     = 'L'.
  ls_fieldcat-seltext_m  = text-009 .
  APPEND ls_fieldcat TO p_it_st_fieldcat.

  CLEAR ls_fieldcat.
  ls_fieldcat-fieldname   = 'I_CUST'.
  ls_fieldcat-rollname    = 'I_CUST'.
  ls_fieldcat-ddictxt     = 'L'.
  ls_fieldcat-seltext_m  = text-010 .
  APPEND ls_fieldcat TO p_it_st_fieldcat.


  CLEAR ls_fieldcat.
  ls_fieldcat-fieldname   = 'I_COSTCEN'.
  ls_fieldcat-rollname    = 'I_COSTCEN'.
  ls_fieldcat-ddictxt     = 'L'.
  ls_fieldcat-seltext_m  = text-011 .
  APPEND ls_fieldcat TO p_it_st_fieldcat.


  CLEAR ls_fieldcat.
  ls_fieldcat-fieldname   = 'I_SCRAPPING'.
  ls_fieldcat-rollname    = 'I_SCRAPPING'.
  ls_fieldcat-ddictxt     = 'L'.
  ls_fieldcat-seltext_m  = text-012 .
  APPEND ls_fieldcat TO p_it_st_fieldcat.


  CLEAR ls_fieldcat.
  ls_fieldcat-fieldname   = 'I_SUBCONTRACTOR'.
  ls_fieldcat-rollname    = 'I_SUBCONTRACTOR'.
  ls_fieldcat-ddictxt     = 'L'.
  ls_fieldcat-seltext_m  = text-013 .
  APPEND ls_fieldcat TO p_it_st_fieldcat.

  CLEAR ls_fieldcat.
  ls_fieldcat-fieldname   = 'I_SAMPLING'.
  ls_fieldcat-rollname    = 'I_SAMPLING'.
  ls_fieldcat-ddictxt     = 'L'.
  ls_fieldcat-seltext_m  = text-014 .
  APPEND ls_fieldcat TO p_it_st_fieldcat.

  CLEAR ls_fieldcat.
  ls_fieldcat-fieldname   = 'I_TOTAL'.
  ls_fieldcat-rollname    = 'I_TOTAL'.
  ls_fieldcat-ddictxt     = 'L'.
  ls_fieldcat-seltext_m  = text-015 .
  APPEND ls_fieldcat TO p_it_st_fieldcat.

  CLEAR ls_fieldcat.
  ls_fieldcat-fieldname   = 'PURRET'.
  ls_fieldcat-rollname    = 'PURRET'.
  ls_fieldcat-ddictxt     = 'L'.
  ls_fieldcat-seltext_m  = text-016 .
  APPEND ls_fieldcat TO p_it_st_fieldcat.

  CLEAR ls_fieldcat.
  ls_fieldcat-fieldname   = 'STOCK_OUT'.
  ls_fieldcat-rollname    = 'STOCK_OUT'.
  ls_fieldcat-ddictxt     = 'L'.
  ls_fieldcat-seltext_m  = text-017 .
  APPEND ls_fieldcat TO p_it_st_fieldcat.

  CLEAR ls_fieldcat.
  ls_fieldcat-fieldname   = 'STOCK_IN'.
  ls_fieldcat-rollname    = 'STOCK_IN'.
  ls_fieldcat-ddictxt     = 'L'.
  ls_fieldcat-seltext_m  = text-018 .
  APPEND ls_fieldcat TO p_it_st_fieldcat.

  CLEAR ls_fieldcat.
  ls_fieldcat-fieldname   = 'STOCK_TRANSIT'.
  ls_fieldcat-rollname    = 'STOCK_TRANSIT'.
  ls_fieldcat-ddictxt     = 'L'.
  ls_fieldcat-seltext_m  = text-019 .
  APPEND ls_fieldcat TO p_it_st_fieldcat.

  CLEAR ls_fieldcat.
  ls_fieldcat-fieldname   = 'M_TO_M_TRANSIT'.
  ls_fieldcat-rollname    = 'M_TO_M_TRANSIT'.
  ls_fieldcat-ddictxt     = 'L'.
  ls_fieldcat-seltext_m  = text-020 .
  APPEND ls_fieldcat TO p_it_st_fieldcat.


  CLEAR ls_fieldcat.
  ls_fieldcat-fieldname   = 'PHY_LOSS'.
  ls_fieldcat-rollname    = 'PHY_LOSS'.
  ls_fieldcat-ddictxt     = 'L'.
  ls_fieldcat-seltext_m  = text-021 .
  APPEND ls_fieldcat TO p_it_st_fieldcat.



  CLEAR ls_fieldcat.
  ls_fieldcat-fieldname   = 'PHY_GAIN'.
  ls_fieldcat-rollname    = 'PHY_GAIN'.
  ls_fieldcat-ddictxt     = 'L'.
  ls_fieldcat-seltext_m  = text-022 .
  APPEND ls_fieldcat TO p_it_st_fieldcat.


  CLEAR ls_fieldcat.
  ls_fieldcat-fieldname   = 'CLOSING_BAL'.
  ls_fieldcat-rollname    = 'CLOSING_BAL'.
  ls_fieldcat-ddictxt     = 'L'.
  ls_fieldcat-seltext_m  = text-023 .
  APPEND ls_fieldcat TO p_it_st_fieldcat.


ENDFORM.                    " FIELDCAT

*&amp;amp;---------------------------------------------------------------------*
*&amp;amp;      Form  LAYOUT_BUILD
*&amp;amp;---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*      --&amp;gt;P_ST_LAYOUT  text
*----------------------------------------------------------------------*
FORM layout_build  USING    p_st_layout TYPE slis_layout_alv.

  p_st_layout-box_fieldname       = 'SELK'.  " Checkbox
  p_st_layout-get_selinfos        = 'X'.
  p_st_layout-f2code              =  'PICK' .  " Doppelklickfunktion
  p_st_layout-confirmation_prompt = 'X'.       "Sicherheitsabfrage
  p_st_layout-key_hotspot         = 'X'.       "Schlüssel als Hotspot
  p_st_layout-info_fieldname      = 'COL'.     "Zeilenfarbe


ENDFORM.                    " LAYOUT_BUILD
*&amp;amp;---------------------------------------------------------------------*
*&amp;amp;      Form  REUSE_ALV_LIST_DISPLAY
*&amp;amp;---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
FORM reuse_alv_list_display .
  CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
       EXPORTING
             i_background_id          = 'ALV_BACKGROUND'
             i_callback_program       = s_repid
*            I_CALLBACK_PF_STATUS_SET = S_STATUS
*            I_CALLBACK_USER_COMMAND     = S_USER_COMMAND
*            I_STRUCTURE_NAME         = ''
*            IS_LAYOUT                = ST_LAYOUT
             it_fieldcat              = it_st_fieldcat[]
*            IT_EXCLUDING             =
*            IT_SPECIAL_GROUPS        = ST_SP_GROUP
*            IT_SORT                  =
*            IT_FILTER                =
*            IS_SEL_HIDE              =
*            I_DEFAULT                = 'X'
*            I_SAVE                   = S_SAVE
*            IS_VARIANT               = S_VARIANT
            IT_EVENTS                = IT_ST_EVENTS[]
*            IT_EVENT_EXIT            =
*            IS_PRINT                 =
*            IS_REPREP_ID             =
*            I_SCREEN_START_COLUMN    = 0
*            I_SCREEN_START_LINE      = 0
*            I_SCREEN_END_COLUMN      = 0
*            I_SCREEN_END_LINE        = 0
*     IMPORTING
*           E_EXIT_CAUSED_BY_CALLER   =
*           ES_EXIT_CAUSED_BY_USER    =
       TABLES
            t_outtab                  =  it_head.

ENDFORM.                    " REUSE_ALV_LIST_DISPLAY

*&amp;amp;---------------------------------------------------------------------*
*&amp;amp;      Form  EVENTTAB_BUILD
*&amp;amp;---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*      --&amp;gt;P_IT_ST_EVENTS[]  text
*----------------------------------------------------------------------*
FORM eventtab_build  USING    p_st_events  TYPE slis_t_event .

  DATA: ls_event TYPE slis_alv_event.

  CALL FUNCTION 'REUSE_ALV_EVENTS_GET'
    EXPORTING
      i_list_type = 0
    IMPORTING
      et_events   = p_st_events.

  READ TABLE p_st_events WITH KEY name = slis_ev_top_of_page
                           INTO ls_event.
  IF sy-subrc = 0.
    MOVE st_formname_top_of_page TO ls_event-form.
    APPEND ls_event TO p_st_events.
  ENDIF.

  READ TABLE p_st_events WITH KEY name = slis_ev_user_command
                           INTO ls_event.
  IF sy-subrc = 0.
    MOVE s_user_command TO ls_event-form.
    APPEND ls_event TO p_st_events.
  ENDIF.
*  READ TABLE p_st_events WITH KEY name = slis_ev_pf_status_set
*                         INTO ls_event.
*
*  IF sy-subrc = 0.
*    MOVE s_status TO ls_event-form.
*    APPEND ls_event TO p_st_events.
*  ENDIF.

ENDFORM.                    " EVENTTAB_BUILD


*&amp;amp;---------------------------------------------------------------------*
*&amp;amp;      Form  VARIANT_INIT
*&amp;amp;---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*  --&amp;gt;  p1        text
*  &amp;lt;--  p2        text
*----------------------------------------------------------------------*
FORM variant_init .
  CLEAR s_variant.
  s_variant-report = s_repid.
  s_variant-handle = code.

ENDFORM.                    " VARIANT_INIT&lt;/CODE&gt;&lt;/PRE&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 24 Nov 2005 07:33:41 GMT</pubDate>
      <guid>https://community.sap.com/t5/application-development-and-automation-discussions/report-code-with-alv/m-p/1062171#M92178</guid>
      <dc:creator>Former Member</dc:creator>
      <dc:date>2005-11-24T07:33:41Z</dc:date>
    </item>
    <item>
      <title>Re: report code with ALV</title>
      <link>https://community.sap.com/t5/application-development-and-automation-discussions/report-code-with-alv/m-p/1062172#M92179</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;there are lot of examples in sap see se38 with Balv* and take f4 you will get lot of reports&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 24 Nov 2005 07:33:43 GMT</pubDate>
      <guid>https://community.sap.com/t5/application-development-and-automation-discussions/report-code-with-alv/m-p/1062172#M92179</guid>
      <dc:creator>Former Member</dc:creator>
      <dc:date>2005-11-24T07:33:43Z</dc:date>
    </item>
    <item>
      <title>Re: report code with ALV</title>
      <link>https://community.sap.com/t5/application-development-and-automation-discussions/report-code-with-alv/m-p/1062173#M92180</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;  Have a look at the programs starting with BALV* in SE38 transaction, this might help,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Rgds,&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 24 Nov 2005 07:34:00 GMT</pubDate>
      <guid>https://community.sap.com/t5/application-development-and-automation-discussions/report-code-with-alv/m-p/1062173#M92180</guid>
      <dc:creator>Former Member</dc:creator>
      <dc:date>2005-11-24T07:34:00Z</dc:date>
    </item>
    <item>
      <title>Re: report code with ALV</title>
      <link>https://community.sap.com/t5/application-development-and-automation-discussions/report-code-with-alv/m-p/1062174#M92181</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Take a look at the program BCALV_GRID_VERIFY in your system.&lt;/P&gt;&lt;P&gt;There are quite a few example programs. Search using BCALV*&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Regards,&lt;/P&gt;&lt;P&gt;Ravi&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 24 Nov 2005 07:36:27 GMT</pubDate>
      <guid>https://community.sap.com/t5/application-development-and-automation-discussions/report-code-with-alv/m-p/1062174#M92181</guid>
      <dc:creator>Former Member</dc:creator>
      <dc:date>2005-11-24T07:36:27Z</dc:date>
    </item>
  </channel>
</rss>

