Skip to end of metadata
Go to start of metadata

**********************************************************************
* PROGRAM ID           : ZRGTPTR_GOODSMOVEMENT                       *
* PROGRAM TITLE        : Documented Goods Movements Report          *
* DESCRIPTION          : This report is required for the production  *
*                        areas to tract the consumptions and         *
*                        declarations they have done against a       *
*                        process order on a detailed level.          *
*====================================================================*
* CHANGE HISTORY LOG                                                 *
*--------------------------------------------------------------------*
* MOD. NO.|  DATE   | NAME   | CORRECTION NUMBER | CHANGE REFERENCE #*
*--------------------------------------------------------------------*
*                                                                    *
* DESCRIPTION:

*Functionality Change                                                *
*--------------------------------------------------------------------*
* MOD-002 |DD/MM/YYYY| XXXXXX | XXXXXXXXXX                           *
*                                                                    *
* DESCRIPTION:                                                       *
**********************************************************************

REPORT  ZRGTPTR_GOODSMOVEMENT MESSAGE-ID ZDEV.

**------------------------------------------------------------------*
** TYPE POOL DECLARATION FOR ALV REPORT ONLY
**------------------------------------------------------------------*

TYPE-POOLS : slis.          "Type Pool for ALV

*------------------------------------------------------------------*
*                 SAP tables
*------------------------------------------------------------------*
TABLES:
        mseg,    " Document Segment: Material
        mkpf,    " Header: Material Document
        lein,    " Storage unit header records
        aufk,    " Order master data
        usr02,   " Logon data
        lagp,    " Storage bins
        mara,    " Material master
        mcha,    " Batches
        t156,    " Movement type
        t301.    " WM Storage Types
*------------------------------------------------------------------*
*                 CONSTANTS
*------------------------------------------------------------------*
CONSTANTS: c_a(1)  TYPE c VALUE 'A',        " value of A
           c_x(1)  TYPE c VALUE 'X',        " value of X
           c_l(1)  TYPE c VALUE 'L',        " value of L
           c_r(1)  TYPE c VALUE 'R',        " value of R
           c_h(1)  TYPE c VALUE 'H',        " value of H
           c_s(1)  TYPE c VALUE 'S',        " value of S
           c_01(2) TYPE c VALUE '01',       " value of 01
           c_02(2) TYPE c VALUE '02',       " value of 02
           c_03(2) TYPE c VALUE '03',       " value of 03
           c_04(2) TYPE c VALUE '04',       " value of 04
           c_05(2) TYPE c VALUE '05',       " value of 05
           c_06(2) TYPE c VALUE '06',       " value of 06
           c_07(2) TYPE c VALUE '07',       " value of 07
           c_08(2) TYPE c VALUE '08',       " value of 08
           c_09(2) TYPE c VALUE '09',       " value of 09
           c_10(2) TYPE c VALUE '10',       " value of 10
           c_11(2) TYPE c VALUE '11',       " value of 11
           c_12(2) TYPE c VALUE '12',       " value of 12
           c_13(2) TYPE c VALUE '13',       " value of 13
           c_14(2) TYPE c VALUE '14',       " value of 14
           c_15(2) TYPE c VALUE '15',       " value of 15
           c_16(2) TYPE c VALUE '16',       " value of 16
           c_17(2) TYPE c VALUE '17',       " value of 17
           c_18(2) TYPE c VALUE '18',       " value of 18
           c_19(2) TYPE c VALUE '19',       " value of 19
           c_20(2) TYPE c VALUE '20',       " value of 20
           c_21(2) TYPE c VALUE '21',       " value of 21
           c_22(2) TYPE c VALUE '22',       " value of 22
           c_23(2) TYPE c VALUE '23',       " value of 23
           c_24(2) TYPE c VALUE '24',       " value of 24
           c_25(2) TYPE c VALUE '25',       " value of 25
           c_26(2) TYPE c VALUE '26',       " value of 26
           c_27(2) TYPE c VALUE '27',       " value of 27
           c_28(2) TYPE c VALUE '28',       " value of 28
           c_29(2) TYPE c VALUE '29',       " value of 29
           c_30(2) TYPE c VALUE '30',       " value of 30
           c_31(2) TYPE c VALUE '31',       " value of 31
           c_32(2) TYPE c VALUE '32',       " value of 32
           c_33(2) TYPE c VALUE '33',       " value of 33
           c_34(2) TYPE c VALUE '34',       " value of 34
           c_35(2) TYPE c VALUE '35',       " value of 35
           c_36(2) TYPE c VALUE '36',       " value of 36
           c_37(2) TYPE c VALUE '37',       " value of 37
           c_38(2) TYPE c VALUE '38',       " value of 38
           c_39(2) TYPE c VALUE '39',       " value of 39
           c_40(2) TYPE c VALUE '40',       " value of 40
           c_41(2) TYPE c VALUE '41',       " value of 41
           c_42(2) TYPE c VALUE '42',       " value of 42
           c_43(2) TYPE c VALUE '43',       " value of 43
           c_44(2) TYPE c VALUE '44',       " value of 44
           c_45(2) TYPE c VALUE '45',       " value of 45
           c_46(2) TYPE c VALUE '46',       " value of 46
           c_mseg TYPE tabname VALUE 'MSEG',   " table name MSEG
           c_mkpf TYPE tabname VALUE 'MKPF',   " table name MKPF
           c_ltak TYPE tabname VALUE 'LTAK',   " table name LTAK
           c_ltap TYPE tabname VALUE 'LTAP',   " table name LTAP
           c_makt TYPE tabname VALUE 'MAKT',   " table name MAKT
           c_lein TYPE tabname VALUE 'LEIN'.   " table name LEIN
*&---------------------------------------------------------------------&
*                     TYPES                                            *
*&---------------------------------------------------------------------&

* Type for declaring table I_matdoc
TYPES: BEGIN OF ty_matdoc,
        matnr TYPE matnr,
        charg TYPE charg_d,
        werks TYPE werks_d,
        lgort TYPE lgort_d,
        bwart TYPE bwart,
        sobkz TYPE sobkz,
        mblnr TYPE mblnr,
        zeile TYPE mblpo,
        budat TYPE budat,
        erfmg TYPE erfmg,
        erfme TYPE erfme,
        lgnum TYPE lgnum,
        lgtyp TYPE lgtyp,
        lgpla TYPE lgpla,
* Additional fields
        insmk TYPE insmk,
        aufpl TYPE co_aufpl,
        aufnr TYPE aufnr,
        bktxt TYPE bktxt,
        bldat TYPE bldat,
        cpudt TYPE cpudt,
        cputm TYPE cputm,
        kzbew TYPE kzbew,
        lifnr TYPE lifnr,
        meins TYPE meins,
        menge TYPE menge_d,
        mjahr TYPE mjahr,
        rsnum TYPE rsnum,
        rspos TYPE rspos,
        rsart TYPE rsart,
        shkzg TYPE shkzg,
        usnam TYPE usnam,
        vgart TYPE vgart,
        xabln TYPE xabln,
        tbnum TYPE tbnum,
        maktx TYPE maktx,
      END OF ty_matdoc,

* Type for declaring table I_matnr
      BEGIN OF ty_matnr,
        matnr TYPE matnr,
        maktx TYPE maktx,
      END OF ty_matnr,

* Type for declaring table I_mh
      BEGIN OF ty_mh,
        aufnr TYPE aufnr,
        werks TYPE werks,
        matnr TYPE matnr,
        charg TYPE charg_d,
        lgnum TYPE lgnum,
        lgpla TYPE lgpla,
        lgtyp TYPE lgtyp,
        bwart TYPE bwart,
        rsnum TYPE rsnum,
        rspos TYPE rspos,
        rsart TYPE rsart,
        lenvw TYPE t331_lenvw,
      END OF ty_mh,

* Type for declaring table I_t331
      BEGIN OF ty_t331,
        lgnum TYPE lgnum,
        lgtyp TYPE lgtyp,
        lenvw TYPE t331_lenvw,
      END OF ty_t331,

* Type for declaring table I_detl
      BEGIN OF ty_detl,
        matnr TYPE matnr,
        charg TYPE charg_d,
        werks TYPE werks,
        lgort TYPE lgort_d,
        bwart TYPE bwart,
        sobkz TYPE sobkz,
        mblnr TYPE mblnr,
        zeile TYPE mblpo,
        budat TYPE budat,
        erfmg TYPE erfmg,
        erfme TYPE erfme,
        lgtyp TYPE lgtyp,
        lgpla TYPE lgpla,
        lenum TYPE lenum,
* Additional fields
        maktx TYPE maktx,
        insmk TYPE insmk,
        aufpl TYPE co_aufpl,
        aufnr TYPE aufnr,
        bktxt TYPE bktxt,
        bldat TYPE bldat,
        cpudt TYPE cpudt,
        cputm TYPE cputm,
        kzbew TYPE kzbew,
        lifnr TYPE lifnr,
        meins TYPE meins,
        menge TYPE menge_d,
        mjahr TYPE mjahr,
        rsnum TYPE rsnum,
        rspos TYPE rspos,
        shkzg TYPE shkzg,
        usnam TYPE usnam,
        vgart TYPE vgart,
        xabln TYPE xabln,
        tbnum TYPE tbnum,
        lgnum TYPE lgnum,
        tanum TYPE tanum,
        tapos TYPE tapos,
        bwlvs TYPE bwlvs,
        betyp TYPE lvs_betyp,
        benum TYPE lvs_benum,
        bestq TYPE bestq,
        vltyp TYPE ltap_vltyp,
        vlpla TYPE ltap_vlpla,
        vlenr TYPE ltap_vlenr,
        nltyp TYPE ltap_nltyp,
        nlpla TYPE ltap_nlpla,
        nlenr TYPE ltap_nlenr,
*Begin of changes Sutapa - May 26, 2003
        meins_to TYPE MEINS,
        altme TYPE LRMEI,
        vsola TYPE LTAP_vsola,
        vsolm TYPE LTAP_vsolm,
        nsola TYPE LTAP_nsola,
        nsolm TYPE LTAP_nsolm,
*End of changes Sutapa - May 26, 2003
        color TYPE slis_specialcol_alv OCCURS 3, "for cell color
      END OF ty_detl,

*Begin of changes Sutapa - May 26, 2003
* Type for declaring table I_meins_ltap
      BEGIN OF ty_meins_ltap,
        lgnum TYPE lgnum,
        tanum TYPE tanum,
        tapos TYPE tapos,
        matnr TYPE matnr,
        meins TYPE meins,
      END OF ty_meins_ltap.
*End of changes Sutapa - May 26, 2003
*&---------------------------------------------------------------------&
*                      STRUCTURES                                      *
*&---------------------------------------------------------------------&

*Structure to hold variant information
DATA: struct_variant TYPE disvariant.

* Workarea to hold the header line of i_matdoc
DATA: struct_matdoc TYPE ty_matdoc.

*&---------------------------------------------------------------------&
*                      INTERNAL TABLES                                 *
*&---------------------------------------------------------------------&

*Internal tables to hold material documenmt information
DATA:  i_matdoc TYPE STANDARD TABLE OF ty_matdoc WITH HEADER LINE,
       i_matdoc_distinct TYPE STANDARD TABLE OF ty_matdoc WITH HEADER
       LINE,

*Internal table to hold material description information
       i_matnr TYPE STANDARD TABLE OF ty_matnr WITH HEADER LINE,

*Internal table to hold RESB information
        i_mh TYPE STANDARD TABLE OF ty_mh WITH HEADER LINE,

*Internal table to hold T331 information
        i_t331 TYPE STANDARD TABLE OF ty_t331 WITH HEADER LINE,

*Internal table to hold detail transfer order information
       i_detl TYPE STANDARD TABLE OF ty_detl WITH HEADER LINE,

*Internal table to hold output
       i_output TYPE STANDARD TABLE OF ty_detl WITH HEADER LINE,

*Internal table for field catalog
       i_fcat TYPE slis_t_fieldcat_alv,

*Internal table for sort table
       i_sort TYPE slis_t_sortinfo_alv,  "Sort parameters

*Internal table for layout
       i_layout TYPE slis_layout_alv,

*Internal table for coloring cells
       i_col_layout TYPE slis_t_specialcol_alv,

*Begin of changes Sutapa - May 26, 2003
       i_meins_ltap TYPE STANDARD TABLE OF ty_meins_ltap WITH HEADER
       LINE.
*End of changes Sutapa - May 26, 2003

*&---------------------------------------------------------------------&
*                    VARIABLES                                         *
*&---------------------------------------------------------------------&
DATA:  v_repid     LIKE sy-repid,         " To store program name
       v_title(100) TYPE c.               " Report title

*&--------------------------------------------------------------------&
*                    SELECTION SCREEN                                 *
*&--------------------------------------------------------------------&

SELECTION-SCREEN: BEGIN OF BLOCK order WITH FRAME TITLE text-001.
PARAMETERS:       p_order LIKE mseg-aufnr MEMORY ID ANR OBLIGATORY .
" Process Order
SELECTION-SCREEN: END OF BLOCK order.

SELECTION-SCREEN: BEGIN OF BLOCK component WITH FRAME TITLE text-002.
SELECT-OPTIONS:   s_mat FOR mseg-matnr,    " Material No.
                  s_batch FOR mseg-charg,  " Batch
                  s_mvtype FOR mseg-bwart, " Movement type
                  s_pstdte FOR mkpf-budat, " Posting date
                  s_user FOR mkpf-usnam,   " User
                  s_strtyp FOR mseg-lgtyp, " Storage type
                  s_strbin FOR mseg-lgpla, " Storage bin
                  s_strunt FOR lein-lenum. " Storage unit
SELECTION-SCREEN: END OF BLOCK component.

*&--------------------------------------------------------------------&
*                      INITIALIZATION                                 *
*&--------------------------------------------------------------------&

CLEAR:
* Internal Tables
       i_matdoc,
       i_detl,
       i_mh,
       i_t331,
       i_matnr,
       i_output,
       i_sort,
       i_fcat,
*Begin of changes Sutapa - May 26, 2003
       i_meins_ltap,
*End of changes Sutapa - May 26, 2003

* Variables
       v_repid,
       v_title.

* Refresh Internal Tables
REFRESH: i_matdoc,
         i_detl,
         i_mh,
         i_t331,
         i_matnr,
         i_output,
         i_sort,
         i_fcat,
         i_meins_ltap.

* Assign value to v_repid

v_repid = sy-repid.
*&--------------------------------------------------------------------&
*                      AT SELECTION SCREEN                            *
*&--------------------------------------------------------------------&

*Validation of Process Order
AT SELECTION-SCREEN ON p_order.
  PERFORM validate_order.

*Validation of Material
AT SELECTION-SCREEN ON s_mat.
  PERFORM validate_material.

*Validation of Batch
AT SELECTION-SCREEN ON s_batch.
  PERFORM validate_batch.

*Validation of Movement Type
AT SELECTION-SCREEN ON s_mvtype.
  PERFORM validate_movemnttype.

*Validation of User Name
AT SELECTION-SCREEN ON s_user.
  PERFORM validate_user.

*Validation of Storage Type
AT SELECTION-SCREEN ON s_strtyp.
  PERFORM validate_storagetype.

*Validation of Storage Bin
AT SELECTION-SCREEN ON s_strbin.
  PERFORM validate_storagebin.

*Validation of Storage Unit
AT SELECTION-SCREEN ON s_strunt.
  PERFORM validate_storageunit.

*&--------------------------------------------------------------------&
*                       START OF SELECTION                            *
*&--------------------------------------------------------------------&

START-OF-SELECTION.

*&--------------------------------------------------&
* This subroutine retrieves data from MSEG and MKPF
* tables depending on the selection screen values
* and modifies the table with Material description.
*&--------------------------------------------------&
  PERFORM populate_matdoc.

*&--------------------------------------------------&
* This subroutine retrieves data from LTAK and LTAP
* tables dependingon the selection screen values and
* populates the table with Transferorder information.
*&--------------------------------------------------&
  PERFORM populate_detl.

*&--------------------------------------------------&
* This subroutine retrieves data from RESB and T331
* tables and populates the table with Reservation
* information.
*&--------------------------------------------------&
  PERFORM populate_mh.

*&--------------------------------------------------&
* This subroutine retrieves data from T331
* tables and populates the table with SU non SU managed
* information.
*&--------------------------------------------------&
  PERFORM populate_t331.

*&--------------------------------------------------&
* This subroutine modifies anmd creates the final
* result table.
*&--------------------------------------------------&
  PERFORM create_output.      " To update I_detl

*&--------------------------------------------------------------------&
*                       END OF SELECTION                              *
*&--------------------------------------------------------------------&

END-OF-SELECTION.

* The final output is obtained by transferring the necessary fields
* from table I_DETL to I_OUTPUT.

* Check if the table I_detl is not initial
  IF NOT i_detl[] IS INITIAL.
    i_output[] = i_detl[].  " Get the final output
  ENDIF.

* Display the Report Title
  CONCATENATE text-003 p_order INTO v_title SEPARATED BY space.
  sy-title =  v_title.

* Display the Report in ALV
  PERFORM prepare_alv_output.  " To display result as alv

*&---------------------------------------------------------------------*
*&      Form  validate_order
*&---------------------------------------------------------------------*
*       This subroutine validates the value of process order entered
*----------------------------------------------------------------------*
FORM validate_order .

*Check if value is entered for Order.
  IF NOT p_order IS INITIAL.
    SELECT SINGLE aufnr            " Process Order
    INTO aufk-aufnr
    FROM aufk
    WHERE aufnr = p_order.
    IF sy-subrc <> 0.
*     Issue error message and stop processing
      MESSAGE e999 WITH 'PO does not exist'(096).
    ENDIF.
  ENDIF.
ENDFORM.                    " validate_order
*&---------------------------------------------------------------------*
*&      Form  validate_material
*&---------------------------------------------------------------------*
*       This subroutine validates the value of material entered
*----------------------------------------------------------------------*
FORM validate_material .

*Check if value is entered for Material.
  IF NOT s_mat IS INITIAL.
    SELECT matnr            " Material
    INTO mara-matnr
    UP TO 1 ROWS
    FROM mara
    WHERE matnr IN s_mat.
    ENDSELECT.
    IF sy-subrc <> 0.
*     Issue error message and stop processing
      MESSAGE e999 WITH 'Invalid Material.'(097).
    ENDIF.
  ENDIF.
ENDFORM.                    " validate_material

*&---------------------------------------------------------------------*
*&      Form  validate_batch
*&---------------------------------------------------------------------*
*       This subroutine validates the value of batch entered
*----------------------------------------------------------------------*
FORM validate_batch .

*Check if value is entered for Batch.
  IF NOT s_batch IS INITIAL.
    SELECT charg           " Batch
    INTO mcha-charg
    UP TO 1 ROWS
    FROM mcha
    WHERE charg IN s_batch.
    ENDSELECT.
    IF sy-subrc <> 0.
*     Issue error message and stop processing
      MESSAGE e999 WITH 'Invalid Batch.'(098).
    ENDIF.
  ENDIF.
ENDFORM.                    " validate_batch

*&---------------------------------------------------------------------*
*&      Form  validate_movemnttype
*&---------------------------------------------------------------------*
*       This subroutine validates the value of movement type entered
*----------------------------------------------------------------------*
FORM validate_movemnttype .

*Check if value is entered for Movement type.
  IF NOT s_mvtype IS INITIAL.
    SELECT bwart            " Movement type
    INTO t156-bwart
    UP TO 1 ROWS
    FROM t156
    WHERE bwart IN s_mvtype.
    ENDSELECT.
    IF sy-subrc <> 0.
*     Issue error message and stop processing
      MESSAGE e999 WITH 'Invalid Movement type.'(099).
    ENDIF.
  ENDIF.
ENDFORM.                    " validate_movemnttype

*&---------------------------------------------------------------------*
*&      Form  validate_user
*&---------------------------------------------------------------------*
*       This subroutine validates the value of user name entered
*----------------------------------------------------------------------*
FORM validate_user .

  IF NOT s_user IS INITIAL.
    SELECT bname           " User
    INTO usr02-bname
    UP TO 1 ROWS
    FROM usr02
    WHERE bname IN s_user.
    ENDSELECT.
    IF sy-subrc <> 0.
*     Issue error message and stop processing
      MESSAGE e999 WITH 'Invalid User.'(100).
    ENDIF.
  ENDIF.

ENDFORM.                    " validate_user

*&---------------------------------------------------------------------*
*&      Form  validate_storagetype
*&---------------------------------------------------------------------*
*       This subroutine validates the value of storage type entered
*----------------------------------------------------------------------*
FORM validate_storagetype .

*Check if value is entered for storage type.
  IF NOT s_strtyp IS INITIAL.
    SELECT lgtyp           " storage type
    INTO t301-lgtyp
    UP TO 1 ROWS
    FROM t301
    WHERE lgtyp IN s_strtyp.
    ENDSELECT.
    IF sy-subrc <> 0.
*     Issue error message and stop processing
      MESSAGE e999 WITH 'Invalid Storage type.'(101).
    ENDIF.
  ENDIF.

ENDFORM.                    " validate_storagetype
*&---------------------------------------------------------------------*
*&      Form  validate_storagebin
*&---------------------------------------------------------------------*
*       This subroutine validates the value of storage bin entered
*----------------------------------------------------------------------*
FORM validate_storagebin .

*Check if value is entered for storage bin.
  IF NOT s_strbin IS INITIAL.
    SELECT lgpla           " storage bin
    INTO lagp-lgpla
    UP TO 1 ROWS
    FROM lagp
    WHERE lgpla IN s_strbin.
    ENDSELECT.
    IF sy-subrc <> 0.
*     Issue error message and stop processing
      MESSAGE e999 WITH 'Invalid storage bin.'(102).
    ENDIF.
  ENDIF.

ENDFORM.                    " validate_storagebin

*&---------------------------------------------------------------------*
*&      Form  validate_storageunit
*&---------------------------------------------------------------------*
*       This subroutine validates the value of storage unit entered
*----------------------------------------------------------------------*
FORM validate_storageunit .

*Check if value is entered for storage unit.
  IF NOT s_strunt IS INITIAL.
    SELECT lenum            " storageunit
    INTO lein-lenum
    UP TO 1 ROWS
    FROM lein
    WHERE lenum IN s_strunt.
    ENDSELECT.
    IF sy-subrc <> 0.
*     Issue error message and stop processing
      MESSAGE e999 WITH 'Invalid storage unit.'(103).
    ENDIF.
  ENDIF.
ENDFORM.                    " validate_storageunit
*&---------------------------------------------------------------------*
*&      Form  populate_matdoc
*&---------------------------------------------------------------------*
* This subroutine retrieves data from MSEG and MKPF tables depending
* on the selection screen values and modifies the table with Material
* description.
*----------------------------------------------------------------------*
FORM populate_matdoc .

*Retreieve Data from MSEG and MKPF
  SELECT   a~matnr    " Material
           a~charg    " Batch
           a~werks    " Plant
           a~lgort    " Storage Location
           a~bwart    " Movement type
           a~sobkz    " Special stock indicator
           a~mblnr    " Material document no.
           a~zeile    " Item in material document
           b~budat    " Posting date
           a~erfmg    " Quantity in entry unit
           a~erfme    " Entry unit
           a~lgnum    " Warehouse no.
           a~lgtyp    " Storage type
           a~lgpla    " Storage bin
           a~insmk    " Stock type
           a~aufpl    " Routing no.
           a~aufnr    " Process order
           b~bktxt    " Document header text
           b~bldat    " Document date
           b~cpudt    " Entry date
           b~cputm    " Entry time
           a~kzbew    " Movement indicator
           a~lifnr    " Vendor
           a~meins    " Base unit of measure
           a~menge    " Base quantity
           a~mjahr    " Material document year
           a~rsnum    " Reservation no.
           a~rspos    " Reservation item
           a~rsart    " Record type
           a~shkzg    " Debit / Credit indicator
           b~usnam    " User Name
           b~vgart    " Trans. / Event type
           b~xabln    " Goods Receipt/Issue Slip Number
           a~tbnum    " Transfer Requirement Number
  INTO TABLE i_matdoc
  FROM mseg AS a INNER JOIN mkpf AS b
    ON a~mblnr = b~mblnr
    AND a~mjahr = b~mjahr
  WHERE a~aufnr = p_order "process order
   AND a~matnr IN s_mat
   AND a~charg IN s_batch
   AND a~bwart IN s_mvtype
   AND b~budat IN s_pstdte
   AND b~usnam IN s_user.

  IF sy-subrc <> 0.
*  Issue error message and stop processing
    MESSAGE i999 WITH 'No data found!'(104).
    LEAVE LIST-PROCESSING.
  ELSE.
*   Sort the table I_MATDOC
    SORT i_matdoc BY matnr.
*   Create a table i_matdoc_disctinct identical to i_matdoc
    i_matdoc_distinct[] = i_matdoc[].
    DELETE ADJACENT DUPLICATES FROM i_matdoc_distinct COMPARING matnr.
  ENDIF.

*Check if the table i_matdoc is not initial
  IF NOT i_matdoc_distinct[] IS INITIAL.

*   Retrieve Material Description from MAKT
    SELECT a~matnr    " Material no.
           a~maktx    " Material description
    INTO TABLE i_matnr
    FROM makt AS a
    FOR ALL ENTRIES IN i_matdoc_distinct
    WHERE a~matnr = i_matdoc_distinct-matnr
      AND a~spras = sy-langu.

    IF sy-subrc = 0.
*     Sort the table I_MATNR
      SORT i_matnr BY matnr.
    ENDIF.

*   Update Material Description from MAKT
    CLEAR i_matdoc.

    LOOP AT i_matdoc.
      IF i_matdoc-maktx = space.
        CLEAR struct_matdoc.
        struct_matdoc = i_matdoc.
        AT NEW matnr.
          CLEAR i_matnr.
          READ TABLE i_matnr WITH KEY matnr = struct_matdoc-matnr BINARY
          SEARCH.
          IF sy-subrc = 0.       " If reading is successful
*Modify material description for row(s) corresponding to the material
*no.
            struct_matdoc-maktx = i_matnr-maktx.
          ENDIF.
        ENDAT.
        i_matdoc-maktx = struct_matdoc-maktx.
        MODIFY i_matdoc TRANSPORTING maktx WHERE matnr = i_matnr-matnr.
        CLEAR i_matnr.
     ENDIF.
     CLEAR i_matdoc.
    ENDLOOP.
  ENDIF.

* Free the I_matdoc_distinct table.
  FREE I_MATDOC_DISTINCT.
ENDFORM.                    " populate_matdoc

*&---------------------------------------------------------------------*
*&      Form  populate_detl
*&---------------------------------------------------------------------*
* This subroutine retrieves data from LTAK and LTAP tables depending
* on the selection screen values and populates the table with Transfer
* order information.
*----------------------------------------------------------------------*
FORM populate_detl .

*Check if the table i_matdoc is not initial
  IF NOT i_matdoc[] IS INITIAL.

*  Retreieve Transfer Order from LTAK and LTAP
    SELECT a~mblnr    " Material document no.
           a~mjahr    " Material document year
           a~lgnum    " Warehouse no.
           a~tanum    " Transfer order no.
           b~matnr    " Material no.
           b~tapos    " Transfer order item
           a~bwlvs    " Movement type for WM
           a~betyp    " Requirement type
           a~benum    " Requirement tracking no.
           b~bestq    " Stock Category in the WM
           b~vltyp    " Source storage type
           b~vlpla    " Source storage bin
           b~vlenr    " Source storage unit
           b~nltyp    " Destination storage type
           b~nlpla    " Destination storage bin
           b~nlenr    " Destination storage unit
* Begin of Changes Sutapa, May 26, 2003
           b~altme
           " Alternative Unit of Measure for Stockkeeping Unit
           b~vsola    " Source target quantity in alternate unit
           b~vsolm    " Source target quantity in stockkeeping unit
           b~nsola    " Destination target quantity in alternative unit
           b~nsolm    " Destination target quantity in stockkeeping unit
* End of Changes Sutapa, May 26, 2003
    INTO CORRESPONDING FIELDS OF TABLE i_detl
    FROM ltak AS a INNER JOIN ltap AS b
    ON a~lgnum = b~lgnum
    AND a~tanum = b~tanum
    FOR ALL ENTRIES IN i_matdoc
    WHERE a~mblnr = i_matdoc-mblnr
           AND a~mjahr = i_matdoc-mjahr
           AND b~matnr = i_matdoc-matnr.
    IF sy-subrc = 0.
*     Sort the table I_DETL
      SORT i_detl BY mblnr mjahr matnr.
    ENDIF.

* Begin of Changes Sutapa, May 26, 2003
* Populate the value of MEINS_TO in i_detl.
  Perform Populate_detl_meins.
* End of Changes Sutapa, May 26, 2003

  ENDIF.
ENDFORM.                    " populate_detl

*&---------------------------------------------------------------------*
*&      Form  populate_mh
*&---------------------------------------------------------------------*
* This subroutine retrieves data from RESB and T331 tables
* and populates the table with Reservation information.
*----------------------------------------------------------------------*
FORM populate_mh .

*Check if the table i_matdoc is not initial
  IF NOT i_matdoc[] IS INITIAL.
*  Retreieve Transfer Order from RESB
    SELECT a~aufnr    " Process order
           a~werks    " Plant
           a~matnr    " Material no.
           a~charg    " Batch
           a~lgnum    " Warehouse no.
           a~lgpla    " Storage bin
           a~lgtyp    " Storage type
           a~bwart    " Movement type
           a~rsnum    " Reservation no.
           a~rspos    " Reservation item
           a~rsart    " Record type
           b~lenvw    " Indicator - SU Managed
    INTO TABLE i_mh
    FROM resb AS a INNER JOIN t331 AS b
    ON a~lgnum = b~lgnum
    AND a~lgtyp = b~lgtyp
    FOR ALL ENTRIES IN i_matdoc
    WHERE  a~rsnum = i_matdoc-rsnum
          AND a~rspos = i_matdoc-rspos
          AND a~rsart = i_matdoc-rsart
          AND a~aufnr = i_matdoc-aufnr
          AND a~matnr = i_matdoc-matnr.

    IF sy-subrc = 0.
*     Sort the table
      SORT i_mh BY rsnum rspos rsart matnr.
    ENDIF.
  ENDIF.
ENDFORM.                    " populate_mh

*&---------------------------------------------------------------------*
*&      Form  populate_t331
*&---------------------------------------------------------------------*
* This subroutine retrieves data from T331
* tables and populates the table with SU non SU managed
* information.
*&---------------------------------------------------------------------&
FORM populate_t331 .

*Check if the table i_matdoc is not initial
  IF NOT i_matdoc[] IS INITIAL.
*  Retreieve Transfer Order from T331
    SELECT a~lgnum
           a~lgtyp
           a~lenvw
    INTO TABLE i_t331
    FROM t331 AS a
    FOR ALL ENTRIES IN i_matdoc
    WHERE a~lgnum = i_matdoc-lgnum
      AND a~lgtyp = i_matdoc-lgtyp.

    IF sy-subrc = 0.
*     Sort the table
      SORT i_t331 BY lgnum lgtyp.
    ENDIF.
  ENDIF.

ENDFORM.                    " populate_t331
*&---------------------------------------------------------------------*
*&      Form  create_output
*&---------------------------------------------------------------------*
* This subroutine modifies anmd creates the final result table.
* Depending on different conditions the i_detl table is modified to hold
* Material Document Information, Transfer Order inmformation along with
* all goods issues, goods receipts, items genearted with reference to a
*reservation and for stocks which is Storage Unit managed and
*non-storage
* unit managed.
*----------------------------------------------------------------------*
FORM create_output .

  CLEAR i_matdoc.

  LOOP AT i_matdoc.
    IF i_matdoc-rsnum <> space AND i_matdoc-rspos <> space AND
    i_matdoc-tbnum <> space.
      CLEAR i_detl.
      READ TABLE i_detl WITH KEY mblnr = i_matdoc-mblnr
                                 mjahr = i_matdoc-mjahr
                                 matnr = i_matdoc-matnr BINARY SEARCH.
      IF sy-subrc = 0.       " If reading is successful
*       Modify row(s) corresponding to the material document to I_DETL
        PERFORM modify_i_detl.
      ELSE.                  " If reading is not successful
*       Add a row corresponding to the material document to I_DETL
        PERFORM add_i_detl.
      ENDIF.
    ELSEIF i_matdoc-rsnum <> space AND i_matdoc-rspos <> space AND
    i_matdoc-tbnum = space.

*     Read the Reservation data from I_MH
      CLEAR i_mh.
      READ TABLE i_mh WITH KEY rsnum = i_matdoc-rsnum
                               rspos = i_matdoc-rspos
                               rsart = i_matdoc-rsart
                               matnr = i_matdoc-matnr BINARY SEARCH.
      IF sy-subrc = 0.       " If reading is successful
        IF i_mh-lenvw = c_x. " SU Managed
          CLEAR i_detl.
          READ TABLE i_detl WITH KEY mblnr = i_matdoc-mblnr
                                     mjahr = i_matdoc-mjahr
                                     matnr = i_matdoc-matnr BINARY
                                     SEARCH.

          IF sy-subrc = 0.   " If reading is successful
*Modify row(s) corresponding to the material document to I_DETL
            PERFORM modify_i_detl.
          ELSE.              " If reading is not successful
*           Add a row corresponding to the material document to I_DETL
            PERFORM add_i_detl.
          ENDIF.             " Reading of I_DETL
        ELSE.                " Not SU Manged
          PERFORM add_i_detl_sp.
        ENDIF.               " checking of C_X
      ELSE.                  " Reading of i_MH not succesful
        CLEAR i_detl.
        READ TABLE i_detl WITH KEY mblnr = i_matdoc-mblnr
                                   mjahr = i_matdoc-mjahr
                                   matnr = i_matdoc-matnr BINARY SEARCH.
        IF sy-subrc = 0.     " If reading is successful
*         Modify row(s) corresponding to the material document to I_DETL
          PERFORM modify_i_detl.
        ELSE.                " If reading is not successful
*         Add a row corresponding to the material document to I_DETL
          PERFORM add_i_detl.
        ENDIF. " Reading of I_DETL
      ENDIF.                 " Reading of I_MH
    ELSE.
      IF i_matdoc-rsnum = space AND i_matdoc-rspos = space .
        IF i_matdoc-tbnum <> space.
          CLEAR i_detl.
          READ TABLE i_detl WITH KEY mblnr = i_matdoc-mblnr
                                     mjahr = i_matdoc-mjahr
                                     matnr = i_matdoc-matnr BINARY
                                     SEARCH.

          IF sy-subrc = 0.   " If reading is successful
*Modify row(s) corresponding to the material document to I_DETL
            PERFORM modify_i_detl.
          ELSE.              " If reading is not successful
*           Check for SU managed or not in the table i_t331
            CLEAR i_t331.
            READ TABLE i_t331 WITH KEY lgnum = i_matdoc-lgnum
                                       lgtyp = i_matdoc-lgtyp BINARY
                                       SEARCH.
            IF i_t331-lenvw = c_x. " SU Managed
              PERFORM add_i_detl.
            ELSE.             " Non SU Managed
              PERFORM add_i_detl_sp.
            ENDIF.
          ENDIF.             " Reading of I_DETL
        ELSE.                " I_MATDOC-TBNUM is space
          PERFORM add_i_detl_sp.
        ENDIF.
      ENDIF.
    ENDIF.

* Clear the header line.
    CLEAR i_matdoc.
  ENDLOOP.

* Delete rows for which the Material document item has no value
  DELETE i_detl WHERE zeile = space.

  IF NOT s_strtyp IS INITIAL.
*Delete rows from internal table not pertaining to the Storage Type
*passed
    DELETE i_detl WHERE NOT lgtyp IN s_strtyp.
  ENDIF.

  IF NOT s_strbin IS INITIAL.
*Delete rows from internal table not pertaining to the Storage Bin
*passed
    DELETE i_detl WHERE NOT lgpla IN s_strbin.
  ENDIF.

  IF NOT s_strunt IS INITIAL.
*Delete rows from internal table not pertaining to the Storage Unit
*number passed
    DELETE i_detl WHERE NOT lenum IN s_strunt.
  ENDIF.

* Change the sign for Quantity depending whether debit / credit
  LOOP AT i_detl.
    IF i_detl-shkzg = c_h . " For credit
      i_detl-erfmg = - i_detl-erfmg.
      i_detl-menge = - i_detl-menge.

      MODIFY i_detl TRANSPORTING erfmg menge.
    ENDIF.
    CLEAR i_detl.
  ENDLOOP.

ENDFORM .                    " create_output

*&---------------------------------------------------------------------*
*&      Form  modify_i_detl
*&---------------------------------------------------------------------*
* This subroutine modifies row(s) corresponding to material document
*----------------------------------------------------------------------*
FORM modify_i_detl .
*   Modify row(s) corresponding to the material document to I_DETL

* Begin of Changes made by Sutapa May 26, 2003
DATA : l_index TYPE i.

CLEAR: l_index.

l_index = 1.
CLEAR i_detl.
LOOP AT i_detl.
  IF  i_detl-mblnr = i_matdoc-mblnr AND i_detl-mjahr = i_matdoc-mjahr
  AND i_detl-matnr = i_matdoc-matnr.
* End of Changes made by Sutapa May 26, 2003
    i_detl-matnr = i_matdoc-matnr.
    i_detl-charg = i_matdoc-charg.
    i_detl-werks = i_matdoc-werks.
    i_detl-lgort = i_matdoc-lgort.
    i_detl-bwart = i_matdoc-bwart.
    i_detl-sobkz = i_matdoc-sobkz.
    i_detl-mblnr = i_matdoc-mblnr.
    i_detl-zeile = i_matdoc-zeile.
    i_detl-budat = i_matdoc-budat.
* Begin of Changes made by Sutapa May 26, 2003
*    i_detl-erfmg = i_matdoc-erfmg.
*    i_detl-erfme = i_matdoc-erfme.
*    IF i_matdoc-shkzg = c_h.
*      i_detl-lgtyp = i_detl-vltyp.
*      i_detl-lgpla = i_detl-vlpla.
*      i_detl-lenum = i_detl-vlenr.
*    ELSE.
*      IF i_matdoc-shkzg = c_s.
*        i_detl-lgtyp = i_detl-nltyp.
*        i_detl-lgpla = i_detl-nlpla.
*        i_detl-lenum = i_detl-nlenr.
*      ENDIF.         " checking of C-s
*    ENDIF.
    IF i_matdoc-shkzg = c_h.
      i_detl-erfmg = i_detl-vsola.
      i_detl-erfme = i_detl-altme.  " Unit in Alternative Unit of entry
      i_detl-lgtyp = i_detl-vltyp.
      i_detl-lgpla = i_detl-vlpla.
      i_detl-lenum = i_detl-vlenr.
      i_detl-meins = i_detl-meins_to.
      i_detl-menge = i_detl-vsolm.
    ELSE.
      IF i_matdoc-shkzg = c_s.
        i_detl-erfmg = i_detl-nsola.
        i_detl-erfme = i_detl-altme.
        " Unit in Alternative Unit of entry
        i_detl-lgtyp = i_detl-nltyp.
        i_detl-lgpla = i_detl-nlpla.
        i_detl-lenum = i_detl-nlenr.
        i_detl-meins = i_detl-meins_to.
        i_detl-menge = i_detl-nsolm.
      ENDIF.         " checking of C-s
    ENDIF.
* End of Changes made by Sutapa May 26, 2003
*  Additional fields
    i_detl-maktx = i_matdoc-maktx.
    i_detl-insmk = i_matdoc-insmk.
    i_detl-aufnr = i_matdoc-aufnr.
    i_detl-aufpl = i_matdoc-aufpl.
    i_detl-bktxt = i_matdoc-bktxt.
    i_detl-bldat = i_matdoc-bldat.
    i_detl-cpudt = i_matdoc-cpudt.
    i_detl-cputm = i_matdoc-cputm.
    i_detl-kzbew = i_matdoc-kzbew.
    i_detl-lifnr = i_matdoc-lifnr.
* Begin of Changes made by Sutapa May 26, 2003
*    i_detl-meins = i_matdoc-meins.
*    i_detl-menge = i_matdoc-menge.
* End of Changes made by Sutapa May 26, 2003
    i_detl-mjahr = i_matdoc-mjahr.
    i_detl-rsnum = i_matdoc-rsnum.
    i_detl-rspos = i_matdoc-rspos.
    i_detl-shkzg = i_matdoc-shkzg.
    i_detl-usnam = i_matdoc-usnam.
    i_detl-vgart = i_matdoc-vgart.
    i_detl-xabln = i_matdoc-xabln.
    i_detl-tbnum = i_matdoc-tbnum.

* Begin of Changes made by Sutapa May 26, 2003
*MODIFY i_detl TRANSPORTING matnr charg werks lgort bwart sobkz mblnr
*zeile budat erfmg erfme lgtyp lgpla lenum lgtyp lgpla
*lenum maktx insmk aufnr aufpl bktxt bldat cpudt cputm kzbew lifnr meins
*menge mjahr rsnum rspos shkzg usnam vgart xabln
*    WHERE mblnr = i_matdoc-mblnr
*      AND mjahr = i_matdoc-mjahr
*      AND matnr = i_matdoc-matnr.

    MODIFY i_detl index l_index TRANSPORTING matnr charg werks lgort
    bwart sobkz mblnr zeile budat erfmg erfme lgtyp lgpla lenum lgtyp
    lgpla
    lenum maktx insmk aufnr aufpl bktxt bldat cpudt cputm kzbew lifnr
    meins menge mjahr rsnum rspos shkzg usnam vgart xabln.
  ENDIF.
  l_index = l_index + 1.
  CLEAR i_detl.
ENDLOOP.
* End of Changes made by Sutapa May 26, 2003
ENDFORM.                    " modify_i_detl
*&---------------------------------------------------------------------*
*&      Form  add_i_detl
*&---------------------------------------------------------------------*
* This subroutine adds row(s) corresponding to material document
*----------------------------------------------------------------------*
FORM add_i_detl .
*   Add a row corresponding to the material document to I_DETL
  i_detl-matnr = i_matdoc-matnr.
  i_detl-charg = i_matdoc-charg.
  i_detl-lgort = i_matdoc-lgort.
  i_detl-werks = i_matdoc-werks.
  i_detl-bwart = i_matdoc-bwart.
  i_detl-sobkz = i_matdoc-sobkz.
  i_detl-mblnr = i_matdoc-mblnr.
  i_detl-zeile = i_matdoc-zeile.
  i_detl-budat = i_matdoc-budat.
  i_detl-erfmg = i_matdoc-erfmg.
  i_detl-erfme = i_matdoc-erfme.
  i_detl-lgtyp = text-108. " Err
  i_detl-lgpla = text-108. " Err
  i_detl-lenum = text-109. " Err
*   Additional fields
  i_detl-maktx = i_matdoc-maktx.
  i_detl-insmk = i_matdoc-insmk.
  i_detl-aufnr = i_matdoc-aufnr.
  i_detl-aufpl = i_matdoc-aufpl.
  i_detl-bktxt = i_matdoc-bktxt.
  i_detl-bldat = i_matdoc-bldat.
  i_detl-cpudt = i_matdoc-cpudt.
  i_detl-cputm = i_matdoc-cputm.
  i_detl-kzbew = i_matdoc-kzbew.
  i_detl-lifnr = i_matdoc-lifnr.
  i_detl-meins = i_matdoc-meins.
  i_detl-menge = i_matdoc-menge.
  i_detl-mjahr = i_matdoc-mjahr.
  i_detl-rsnum = i_matdoc-rsnum.
  i_detl-rspos = i_matdoc-rspos.
  i_detl-shkzg = i_matdoc-shkzg.
  i_detl-usnam = i_matdoc-usnam.
  i_detl-vgart = i_matdoc-vgart.
  i_detl-xabln = i_matdoc-xabln.
  i_detl-lgnum = space.
  i_detl-tanum = space.
  i_detl-tapos = space.
  i_detl-bwlvs = space.
  i_detl-betyp = space.
  i_detl-benum = space.
  i_detl-bestq = space.
  i_detl-vltyp = space.
  i_detl-vlpla = space.
  i_detl-vlenr = space.
  i_detl-nltyp = space.
  i_detl-nlpla = space.
  i_detl-nlenr = space.
* Append to the I_DETL table
  APPEND i_detl.
ENDFORM.                    " add_i_detl

*&---------------------------------------------------------------------*
*&      Form  add_i_detl_sp
*&---------------------------------------------------------------------*
*  This subroutine adds a row corresponding to the material document
*  with Storage Unit as space
*----------------------------------------------------------------------*
FORM add_i_detl_sp .

*Add a row corresponding to the material document to I_DETL with Storage
*Unit as space
  i_detl-matnr = i_matdoc-matnr.
  i_detl-charg = i_matdoc-charg.
  i_detl-lgort = i_matdoc-lgort.
  i_detl-werks = i_matdoc-werks.
  i_detl-bwart = i_matdoc-bwart.
  i_detl-sobkz = i_matdoc-sobkz.
  i_detl-mblnr = i_matdoc-mblnr.
  i_detl-zeile = i_matdoc-zeile.
  i_detl-budat = i_matdoc-budat.
  i_detl-erfmg = i_matdoc-erfmg.
  i_detl-erfme = i_matdoc-erfme.
  i_detl-lgtyp = i_matdoc-lgtyp.
  i_detl-lgpla = i_matdoc-lgpla.
  i_detl-lenum = space.
*   Additional fields
  i_detl-maktx = i_matdoc-maktx.
  i_detl-insmk = i_matdoc-insmk.
  i_detl-aufnr = i_matdoc-aufnr.
  i_detl-aufpl = i_matdoc-aufpl.
  i_detl-bktxt = i_matdoc-bktxt.
  i_detl-bldat = i_matdoc-bldat.
  i_detl-cpudt = i_matdoc-cpudt.
  i_detl-cputm = i_matdoc-cputm.
  i_detl-kzbew = i_matdoc-kzbew.
  i_detl-lifnr = i_matdoc-lifnr.
  i_detl-meins = i_matdoc-meins.
  i_detl-menge = i_matdoc-menge.
  i_detl-mjahr = i_matdoc-mjahr.
  i_detl-rsnum = i_matdoc-rsnum.
  i_detl-rspos = i_matdoc-rspos.
  i_detl-shkzg = i_matdoc-shkzg.
  i_detl-usnam = i_matdoc-usnam.
  i_detl-vgart = i_matdoc-vgart.
  i_detl-xabln = i_matdoc-xabln.
  i_detl-lgnum = space.
  i_detl-tanum = space.
  i_detl-tapos = space.
  i_detl-bwlvs = space.
  i_detl-betyp = space.
  i_detl-benum = space.
  i_detl-bestq = space.
  i_detl-vltyp = space.
  i_detl-vlpla = space.
  i_detl-vlenr = space.
  i_detl-nltyp = space.
  i_detl-nlpla = space.
  i_detl-nlenr = space.
* Append to the I_DETL table
  APPEND i_detl.
* Sort the I_DETL table
  SORT i_detl BY mblnr.
ENDFORM.                    " add_i_detl_sp

*&---------------------------------------------------------------------*
*&      Form  prepare_alv_output
*&---------------------------------------------------------------------*
* This subroutine preapres the ALV output
*----------------------------------------------------------------------*
FORM prepare_alv_output .

*Build up fieldcatalog for the fields to be displayed

  IF NOT i_output[] IS INITIAL.
    PERFORM sub_fcat_build.        " Build the field catalog
  ELSE.
    MESSAGE i999 WITH 'No records found to be displayed'(106).
    LEAVE LIST-PROCESSING.
  ENDIF.

*Build up keyinfo for the fields to be displayed
  PERFORM sortinfo_build.

*Build up layoutinfo for the fields to be displayed
  PERFORM layout_build USING i_layout.

*Build up Variant information for the fields to be displayed
  PERFORM varinfo_build.

* Check if the Field Catalog internal Table is not empty
  IF NOT i_fcat[] IS INITIAL.
* Call ALV Grid Viewer
    CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
      EXPORTING
        i_callback_program = v_repid
        is_layout          = i_layout
        it_fieldcat        = i_fcat
        it_sort            = i_sort
        i_default          = c_x
        i_save             = c_a
        is_variant         = struct_variant
      TABLES
        t_outtab           = i_output
      EXCEPTIONS
        program_error      = 1
        OTHERS             = 2.
    IF sy-subrc <> 0.
*    Issue error message and stop processing
      MESSAGE i999 WITH 'Error in ALV Function'(107).
      LEAVE LIST-PROCESSING.
    ENDIF.
  ENDIF.

ENDFORM.                    " prepare_alv_output
*&---------------------------------------------------------------------*
*&      Form  sub_fcat_build
*&---------------------------------------------------------------------*
* This subroutine builds the field catalog
*----------------------------------------------------------------------*
FORM sub_fcat_build .

  DATA : l_tabname1 TYPE tabname,      "table name
         l_tabname2 TYPE tabname,      "table name
         l_tabname3 TYPE tabname,      "table name
         l_tabname4 TYPE tabname,      "table name
         l_tabname5 TYPE tabname,      "table name
         l_tabname6 TYPE tabname,      "table name

         l_field1  TYPE fieldname,    "field name
         l_field2  TYPE fieldname,    "field name
         l_field3  TYPE fieldname,    "field name
         l_field4  TYPE fieldname,    "field name
         l_field5  TYPE fieldname,    "field name
         l_field6  TYPE fieldname,    "field name
         l_field7  TYPE fieldname,    "field name
         l_field8  TYPE fieldname,    "field name
         l_field9  TYPE fieldname,    "field name
         l_field10 TYPE fieldname,    "field name
         l_field11 TYPE fieldname,    "field name
         l_field12 TYPE fieldname,    "field name
         l_field13 TYPE fieldname,    "field name
         l_field14 TYPE fieldname,    "field name
         l_field15 TYPE fieldname,    "field name
         l_field16 TYPE fieldname,    "field name
         l_field17 TYPE fieldname,    "field name
         l_field18 TYPE fieldname,    "field name
         l_field19 TYPE fieldname,    "field name
         l_field20 TYPE fieldname,    "field name
         l_field21 TYPE fieldname,    "field name
         l_field22 TYPE fieldname,    "field name
         l_field23 TYPE fieldname,    "field name
         l_field24 TYPE fieldname,    "field name
         l_field25 TYPE fieldname,    "field name
         l_field26 TYPE fieldname,    "field name
         l_field27 TYPE fieldname,    "field name
         l_field28 TYPE fieldname,    "field name
         l_field29 TYPE fieldname,    "field name
         l_field30 TYPE fieldname,    "field name
         l_field31 TYPE fieldname,    "field name
         l_field32 TYPE fieldname,    "field name
         l_field33 TYPE fieldname,    "field name
         l_field34 TYPE fieldname,    "field name
         l_field35 TYPE fieldname,    "field name
         l_field36 TYPE fieldname,    "field name
         l_field37 TYPE fieldname,    "field name
         l_field38 TYPE fieldname,    "field name
         l_field39 TYPE fieldname,    "field name
         l_field40 TYPE fieldname,    "field name
         l_field41 TYPE fieldname,    "field name
         l_field42 TYPE fieldname,    "field name
         l_field43 TYPE fieldname,    "field name
         l_field44 TYPE fieldname,    "field name
         l_field45 TYPE fieldname,    "field name
         l_field46 TYPE fieldname,    "field name

         l_sycucol01 TYPE sycucol,   "current column
         l_sycucol02 TYPE sycucol,   "current column
         l_sycucol03 TYPE sycucol,   "current column
         l_sycucol04 TYPE sycucol,   "current column
         l_sycucol05 TYPE sycucol,   "current column
         l_sycucol06 TYPE sycucol,   "current column
         l_sycucol07 TYPE sycucol,   "current column
         l_sycucol08 TYPE sycucol,   "current column
         l_sycucol09 TYPE sycucol,   "current column
         l_sycucol10 TYPE sycucol,   "current column
         l_sycucol11 TYPE sycucol,   "current column
         l_sycucol12 TYPE sycucol,   "current column
         l_sycucol13 TYPE sycucol,   "current column
         l_sycucol14 TYPE sycucol,   "current column
         l_sycucol15 TYPE sycucol,   "current column
         l_sycucol16 TYPE sycucol,   "current column
         l_sycucol17 TYPE sycucol,   "current column
         l_sycucol18 TYPE sycucol,   "current column
         l_sycucol19 TYPE sycucol,   "current column
         l_sycucol20 TYPE sycucol,   "current column
         l_sycucol21 TYPE sycucol,   "current column
         l_sycucol22 TYPE sycucol,   "current column
         l_sycucol23 TYPE sycucol,   "current column
         l_sycucol24 TYPE sycucol,   "current column
         l_sycucol25 TYPE sycucol,   "current column
         l_sycucol26 TYPE sycucol,   "current column
         l_sycucol27 TYPE sycucol,   "current column
         l_sycucol28 TYPE sycucol,   "current column
         l_sycucol29 TYPE sycucol,   "current column
         l_sycucol30 TYPE sycucol,   "current column
         l_sycucol31 TYPE sycucol,   "current column
         l_sycucol32 TYPE sycucol,   "current column
         l_sycucol33 TYPE sycucol,   "current column
         l_sycucol34 TYPE sycucol,   "current column
         l_sycucol35 TYPE sycucol,   "current column
         l_sycucol36 TYPE sycucol,   "current column
         l_sycucol37 TYPE sycucol,   "current column
         l_sycucol38 TYPE sycucol,   "current column
         l_sycucol39 TYPE sycucol,   "current column
         l_sycucol40 TYPE sycucol,   "current column
         l_sycucol41 TYPE sycucol,   "current column
         l_sycucol42 TYPE sycucol,   "current column
         l_sycucol43 TYPE sycucol,   "current column
         l_sycucol44 TYPE sycucol,   "current column
         l_sycucol45 TYPE sycucol,   "current column
         l_sycucol46 TYPE sycucol,   "current column

         l_txt1 TYPE reptxt,   "header text
         l_txt2 TYPE reptxt,   "header text
         l_txt3 TYPE reptxt,   "header text
         l_txt4 TYPE reptxt,   "header text
         l_txt5 TYPE reptxt,   "header text
         l_txt6 TYPE reptxt,   "header text
         l_txt7 TYPE reptxt,   "header text
         l_txt8 TYPE reptxt,   "header text
         l_txt9 TYPE reptxt,   "header text
         l_txt10 TYPE reptxt,  "header text
         l_txt11 TYPE reptxt,  "header text
         l_txt12 TYPE reptxt,  "header text
         l_txt13 TYPE reptxt,  "header text
         l_txt14 TYPE reptxt,  "header text
         l_txt15 TYPE reptxt,  "header text
         l_txt16 TYPE reptxt,  "header text
         l_txt17 TYPE reptxt,  "header text
         l_txt18 TYPE reptxt,  "header text
         l_txt19 TYPE reptxt,  "header text
         l_txt20 TYPE reptxt,  "header text
         l_txt21 TYPE reptxt,  "header text
         l_txt22 TYPE reptxt,  "header text
         l_txt23 TYPE reptxt,  "header text
         l_txt24 TYPE reptxt,  "header text
         l_txt25 TYPE reptxt,  "header text
         l_txt26 TYPE reptxt,  "header text
         l_txt27 TYPE reptxt,  "header text
         l_txt28 TYPE reptxt,  "header text
         l_txt29 TYPE reptxt,  "header text
         l_txt30 TYPE reptxt,  "header text
         l_txt31 TYPE reptxt,  "header text
         l_txt32 TYPE reptxt,  "header text
         l_txt33 TYPE reptxt,  "header text
         l_txt34 TYPE reptxt,  "header text
         l_txt35 TYPE reptxt,  "header text
         l_txt36 TYPE reptxt,  "header text
         l_txt37 TYPE reptxt,  "header text
         l_txt38 TYPE reptxt,  "header text
         l_txt39 TYPE reptxt,  "header text
         l_txt40 TYPE reptxt,  "header text
         l_txt41 TYPE reptxt,  "header text
         l_txt42 TYPE reptxt,  "header text
         l_txt43 TYPE reptxt,  "header text
         l_txt44 TYPE reptxt,  "header text
         l_txt45 TYPE reptxt,  "header text
         l_txt46 TYPE reptxt,  "header text

         l_sel_ltxt1 TYPE reptxt,   "header text
         l_sel_ltxt2 TYPE reptxt,   "header text
         l_sel_ltxt3 TYPE reptxt,   "header text
         l_sel_ltxt4 TYPE reptxt,   "header text
         l_sel_ltxt5 TYPE reptxt,   "header text
         l_sel_ltxt6 TYPE reptxt,   "header text
         l_sel_ltxt7 TYPE reptxt,   "header text
         l_sel_ltxt8 TYPE reptxt,   "header text
         l_sel_ltxt9 TYPE reptxt,   "header text
         l_sel_ltxt10 TYPE reptxt,  "header text
         l_sel_ltxt11 TYPE reptxt,  "header text
         l_sel_ltxt12 TYPE reptxt,  "header text
         l_sel_ltxt13 TYPE reptxt,  "header text
         l_sel_ltxt14 TYPE reptxt,  "header text
         l_sel_ltxt15 TYPE reptxt,  "header text
         l_sel_ltxt16 TYPE reptxt,  "header text
         l_sel_ltxt17 TYPE reptxt,  "header text
         l_sel_ltxt18 TYPE reptxt,  "header text
         l_sel_ltxt19 TYPE reptxt,  "header text
         l_sel_ltxt20 TYPE reptxt,  "header text
         l_sel_ltxt21 TYPE reptxt,   "header text
         l_sel_ltxt22 TYPE reptxt,   "header text
         l_sel_ltxt23 TYPE reptxt,   "header text
         l_sel_ltxt24 TYPE reptxt,   "header text
         l_sel_ltxt25 TYPE reptxt,   "header text
         l_sel_ltxt26 TYPE reptxt,   "header text
         l_sel_ltxt27 TYPE reptxt,   "header text
         l_sel_ltxt28 TYPE reptxt,   "header text
         l_sel_ltxt29 TYPE reptxt,   "header text
         l_sel_ltxt30 TYPE reptxt,  "header text
         l_sel_ltxt31 TYPE reptxt,  "header text
         l_sel_ltxt32 TYPE reptxt,  "header text
         l_sel_ltxt33 TYPE reptxt,  "header text
         l_sel_ltxt34 TYPE reptxt,  "header text
         l_sel_ltxt35 TYPE reptxt,  "header text
         l_sel_ltxt36 TYPE reptxt,  "header text
         l_sel_ltxt37 TYPE reptxt,  "header text
         l_sel_ltxt38 TYPE reptxt,  "header text
         l_sel_ltxt39 TYPE reptxt,  "header text
         l_sel_ltxt40 TYPE reptxt,  "header text
         l_sel_ltxt41 TYPE reptxt,   "header text
         l_sel_ltxt42 TYPE reptxt,   "header text
         l_sel_ltxt43 TYPE reptxt,   "header text
         l_sel_ltxt44 TYPE reptxt,   "header text
         l_sel_ltxt45 TYPE reptxt,   "header text
         l_sel_ltxt46 TYPE reptxt,   "header text

         l_sel_mtxt1 TYPE reptxt,   "header text
         l_sel_mtxt2 TYPE reptxt,   "header text
         l_sel_mtxt3 TYPE reptxt,   "header text
         l_sel_mtxt4 TYPE reptxt,   "header text
         l_sel_mtxt5 TYPE reptxt,   "header text
         l_sel_mtxt6 TYPE reptxt,   "header text
         l_sel_mtxt7 TYPE reptxt,   "header text
         l_sel_mtxt8 TYPE reptxt,   "header text
         l_sel_mtxt9 TYPE reptxt,   "header text
         l_sel_mtxt10 TYPE reptxt,  "header text
         l_sel_mtxt11 TYPE reptxt,  "header text
         l_sel_mtxt12 TYPE reptxt,  "header text
         l_sel_mtxt13 TYPE reptxt,  "header text
         l_sel_mtxt14 TYPE reptxt,  "header text
         l_sel_mtxt15 TYPE reptxt,  "header text
         l_sel_mtxt16 TYPE reptxt,  "header text
         l_sel_mtxt17 TYPE reptxt,  "header text
         l_sel_mtxt18 TYPE reptxt,  "header text
         l_sel_mtxt19 TYPE reptxt,  "header text
         l_sel_mtxt20 TYPE reptxt,  "header text
         l_sel_mtxt21 TYPE reptxt,   "header text
         l_sel_mtxt22 TYPE reptxt,   "header text
         l_sel_mtxt23 TYPE reptxt,   "header text
         l_sel_mtxt24 TYPE reptxt,   "header text
         l_sel_mtxt25 TYPE reptxt,   "header text
         l_sel_mtxt26 TYPE reptxt,   "header text
         l_sel_mtxt27 TYPE reptxt,   "header text
         l_sel_mtxt28 TYPE reptxt,   "header text
         l_sel_mtxt29 TYPE reptxt,   "header text
         l_sel_mtxt30 TYPE reptxt,  "header text
         l_sel_mtxt31 TYPE reptxt,  "header text
         l_sel_mtxt32 TYPE reptxt,  "header text
         l_sel_mtxt33 TYPE reptxt,  "header text
         l_sel_mtxt34 TYPE reptxt,  "header text
         l_sel_mtxt35 TYPE reptxt,  "header text
         l_sel_mtxt36 TYPE reptxt,  "header text
         l_sel_mtxt37 TYPE reptxt,  "header text
         l_sel_mtxt38 TYPE reptxt,  "header text
         l_sel_mtxt39 TYPE reptxt,  "header text
         l_sel_mtxt40 TYPE reptxt,  "header text
         l_sel_mtxt41 TYPE reptxt,   "header text
         l_sel_mtxt42 TYPE reptxt,   "header text
         l_sel_mtxt43 TYPE reptxt,   "header text
         l_sel_mtxt44 TYPE reptxt,   "header text
         l_sel_mtxt45 TYPE reptxt,   "header text
         l_sel_mtxt46 TYPE reptxt,   "header text

         l_sel_stxt1 TYPE reptxt,   "header text
         l_sel_stxt2 TYPE reptxt,   "header text
         l_sel_stxt3 TYPE reptxt,   "header text
         l_sel_stxt4 TYPE reptxt,   "header text
         l_sel_stxt5 TYPE reptxt,   "header text
         l_sel_stxt6 TYPE reptxt,   "header text
         l_sel_stxt7 TYPE reptxt,   "header text
         l_sel_stxt8 TYPE reptxt,   "header text
         l_sel_stxt9 TYPE reptxt,   "header text
         l_sel_stxt10 TYPE reptxt,  "header text
         l_sel_stxt11 TYPE reptxt,  "header text
         l_sel_stxt12 TYPE reptxt,  "header text
         l_sel_stxt13 TYPE reptxt,  "header text
         l_sel_stxt14 TYPE reptxt,  "header text
         l_sel_stxt15 TYPE reptxt,  "header text
         l_sel_stxt16 TYPE reptxt,  "header text
         l_sel_stxt17 TYPE reptxt,  "header text
         l_sel_stxt18 TYPE reptxt,  "header text
         l_sel_stxt19 TYPE reptxt,  "header text
         l_sel_stxt20 TYPE reptxt,  "header text
         l_sel_stxt21 TYPE reptxt,   "header text
         l_sel_stxt22 TYPE reptxt,   "header text
         l_sel_stxt23 TYPE reptxt,   "header text
         l_sel_stxt24 TYPE reptxt,   "header text
         l_sel_stxt25 TYPE reptxt,   "header text
         l_sel_stxt26 TYPE reptxt,   "header text
         l_sel_stxt27 TYPE reptxt,   "header text
         l_sel_stxt28 TYPE reptxt,   "header text
         l_sel_stxt29 TYPE reptxt,   "header text
         l_sel_stxt30 TYPE reptxt,  "header text
         l_sel_stxt31 TYPE reptxt,  "header text
         l_sel_stxt32 TYPE reptxt,  "header text
         l_sel_stxt33 TYPE reptxt,  "header text
         l_sel_stxt34 TYPE reptxt,  "header text
         l_sel_stxt35 TYPE reptxt,  "header text
         l_sel_stxt36 TYPE reptxt,  "header text
         l_sel_stxt37 TYPE reptxt,  "header text
         l_sel_stxt38 TYPE reptxt,  "header text
         l_sel_stxt39 TYPE reptxt,  "header text
         l_sel_stxt40 TYPE reptxt,  "header text
         l_sel_stxt41 TYPE reptxt,   "header text
         l_sel_stxt42 TYPE reptxt,   "header text
         l_sel_stxt43 TYPE reptxt,   "header text
         l_sel_stxt44 TYPE reptxt,   "header text
         l_sel_stxt45 TYPE reptxt,   "header text
         l_sel_stxt46 TYPE reptxt,   "header text

         l_reffield1 TYPE fieldname,    "Reference field name
         l_reffield2 TYPE fieldname,    "Reference field name
         l_reffield3 TYPE fieldname,    "Reference field name
         l_reffield4 TYPE fieldname,    "Reference field name
         l_reffield5 TYPE fieldname,    "Reference field name
         l_reffield6 TYPE fieldname,    "Reference field name
         l_reffield7 TYPE fieldname,    "Reference field name
         l_reffield8 TYPE fieldname,    "Reference field name
         l_reffield9 TYPE fieldname,    "Reference field name
         l_reffield10 TYPE fieldname,   "Reference field name
         l_reffield11 TYPE fieldname,   "Reference field name
         l_reffield12 TYPE fieldname,   "Reference field name
         l_reffield13 TYPE fieldname,   "Reference field name
         l_reffield14 TYPE fieldname,   "Reference field name
         l_reffield15 TYPE fieldname,   "Reference field name
         l_reffield16 TYPE fieldname,   "Reference field name
         l_reffield17 TYPE fieldname,   "Reference field name
         l_reffield18 TYPE fieldname,   "Reference field name
         l_reffield19 TYPE fieldname,   "Reference field name
         l_reffield20 TYPE fieldname,   "Reference field name
         l_reffield21 TYPE fieldname,    "Reference field name
         l_reffield22 TYPE fieldname,    "Reference field name
         l_reffield23 TYPE fieldname,    "Reference field name
         l_reffield24 TYPE fieldname,    "Reference field name
         l_reffield25 TYPE fieldname,    "Reference field name
         l_reffield26 TYPE fieldname,    "Reference field name
         l_reffield27 TYPE fieldname,    "Reference field name
         l_reffield28 TYPE fieldname,    "Reference field name
         l_reffield29 TYPE fieldname,    "Reference field name
         l_reffield30 TYPE fieldname,   "Reference field name
         l_reffield31 TYPE fieldname,   "Reference field name
         l_reffield32 TYPE fieldname,   "Reference field name
         l_reffield33 TYPE fieldname,   "Reference field name
         l_reffield34 TYPE fieldname,   "Reference field name
         l_reffield35 TYPE fieldname,   "Reference field name
        l_reffield36 TYPE fieldname,   "Reference field name
         l_reffield37 TYPE fieldname,   "Reference field name
         l_reffield38 TYPE fieldname,   "Reference field name
         l_reffield39 TYPE fieldname,   "Reference field name
         l_reffield40 TYPE fieldname,   "Reference field name
         l_reffield41 TYPE fieldname,   "Reference field name
         l_reffield42 TYPE fieldname,   "Reference field name
         l_reffield43 TYPE fieldname,   "Reference field name
         l_reffield44 TYPE fieldname,   "Reference field name
         l_reffield45 TYPE fieldname,   "Reference field name
         l_reffield46 TYPE fieldname,   "Reference field name

         l_int_tabname TYPE tabname. "internal table name

* Assign table name for ALV report
  l_tabname1 = c_mseg.
  l_tabname2 = c_mkpf.
  l_tabname3 = c_ltak.
  l_tabname4 = c_ltap.
  l_tabname5 = c_makt.
  l_tabname6 = c_lein.

* Assign Current column position
  l_sycucol01 = c_01.        " value 01
  l_sycucol02 = c_02.        " value 02
  l_sycucol03 = c_03.  " value 03
  l_sycucol04 = c_04.  " value 04
  l_sycucol05 = c_05.  " value 05
  l_sycucol06 = c_06.  " value 06
  l_sycucol07 = c_07.  " value 07
  l_sycucol08 = c_08.  " value 08
  l_sycucol09 = c_09.  " value 09
  l_sycucol10 = c_10.  " value 10
  l_sycucol11 = c_11.  " value 11
  l_sycucol12 = c_12.  " value 12
  l_sycucol13 = c_13.  " value 13
  l_sycucol14 = c_14.  " value 14
  l_sycucol15 = c_15.  " value 15
  l_sycucol16 = c_16.  " value 16
  l_sycucol17 = c_17.  " value 17
  l_sycucol18 = c_18.  " value 18
  l_sycucol19 = c_19.  " value 19
  l_sycucol20 = c_20.  " value 20
  l_sycucol21 = c_21.        " value 21
  l_sycucol22 = c_22.        " value 22
  l_sycucol23 = c_23.  " value 23
  l_sycucol24 = c_24.  " value 24
  l_sycucol25 = c_25.  " value 25
  l_sycucol26 = c_26.  " value 26
  l_sycucol27 = c_27.  " value 27
  l_sycucol28 = c_28.  " value 28
  l_sycucol29 = c_29.  " value 29
  l_sycucol30 = c_30.  " value 30
  l_sycucol31 = c_31.  " value 31
  l_sycucol32 = c_32.  " value 32
  l_sycucol33 = c_33.  " value 33
  l_sycucol34 = c_34.  " value 34
  l_sycucol35 = c_35.  " value 35
  l_sycucol36 = c_36.  " value 36
  l_sycucol37 = c_37.  " value 37
  l_sycucol38 = c_38.  " value 38
  l_sycucol39 = c_39.  " value 39
  l_sycucol40 = c_40.  " value 40
  l_sycucol41 = c_41.  " value 41
  l_sycucol42 = c_42.  " value 42
  l_sycucol43 = c_43.  " value 43
  l_sycucol44 = c_44.  " value 44
  l_sycucol45 = c_45.  " value 45
  l_sycucol46 = c_46.  " value 46

* Assign Internal table name
l_int_tabname = 'I_OUTPUT'.

* Assign Detailed text to printed
  l_txt1 = text-050.       "Material.
  l_txt2 = text-051.        "Batch.
  l_txt3 = text-052.        "Plant.
  l_txt4 = text-053.        "Sloc.
  l_txt5 = text-054.        "Mvt.
  l_txt6 = text-055.        "S.
  l_txt7 = text-056.        "Material Doc.
  l_txt8 = text-057.        "Item.
  l_txt9 = text-058.        "Posting Date.
  l_txt10 = text-059.        "Qty in unit of Entry.
  l_txt11 = text-060.        "EUn.
  l_txt12 = text-061.        "St. Typ.
  l_txt13 = text-062.        "St. Bin.
  l_txt14 = text-063.        "Storage Unit.
  l_txt15 = text-064.        "Material Description.
  l_txt16 = text-065.        "Stock Type.
  l_txt17 = text-066.        "Order.
  l_txt18 = text-067.        "Routing Number for Operations.
  l_txt19 = text-068.       "Document Header Text.
  l_txt20 = text-069.        "Document Date.
  l_txt21 = text-070.        "Entry Date.
  l_txt22 = text-071.        "Time of Entry.
  l_txt23 = text-072.        "Movement Indicator.
  l_txt24 = text-073.        "Vendor.
  l_txt25 = text-074.        "Base Unit of Measure.
  l_txt26 = text-075.        "Quantity.
  l_txt27 = text-076.        "Material Doc. Year.
  l_txt28 = text-077.        "Reservation.
  l_txt29 = text-078.
  "Item No. Reservation/Dependent Reservation.
  l_txt30 = text-079.        "Debit/Credit Ind.
  l_txt31 = text-080.        "User Name.
  l_txt32 = text-081.        "Trans./Event Type.
  l_txt33 = text-082.        "GR/GI Slip No..
  l_txt34 = text-083.        "Warehouse Number.
  l_txt35 = text-084.        "Transfer Order Number.
  l_txt36 = text-085.        "Transfer Order Item.
  l_txt37 = text-086.        "WM Movement Type.
  l_txt38 = text-087.        "Requirement Type.
  l_txt39 = text-088.        "Requirement Tracking Number.
  l_txt40 = text-089.        "Stock Category in Warehouse Mgmt System.
  l_txt41 = text-090.        "Source Storage Type.
  l_txt42 = text-091.        "Source Storage Bin.
  l_txt43 = text-092.       "Source Storage Unit.
  l_txt44 = text-093.        "Destination Storage Type.
  l_txt45 = text-094.        "Destination Storage Bin.
  l_txt46 = text-095.        "Destination Storage Unit.

* Assign Detailed text to printed-long
  l_sel_ltxt1 = text-050.       "Material.
  l_sel_ltxt2 = text-051.        "Batch.
  l_sel_ltxt3 = text-052.        "Plant.
  l_sel_ltxt4 = text-053.        "Sloc.
  l_sel_ltxt5 = text-054.        "Mvt.
  l_sel_ltxt6 = text-055.        "S.
  l_sel_ltxt7 = text-056.        "Material Doc.
  l_sel_ltxt8 = text-057.        "Item.
  l_sel_ltxt9 = text-058.        "Posting Date.
  l_sel_ltxt10 = text-059.        "Qty in unit of Entry.
  l_sel_ltxt11 = text-060.        "EUn.
  l_sel_ltxt12 = text-061.        "St. Typ.
  l_sel_ltxt13 = text-062.        "St. Bin.
  l_sel_ltxt14 = text-063.        "Storage Unit.
  l_sel_ltxt15 = text-064.        "Material Description.
  l_sel_ltxt16 = text-065.        "Stock Type.
  l_sel_ltxt17 = text-066.        "Order.
  l_sel_ltxt18 = text-067.        "Routing Number for Operations.
  l_sel_ltxt19 = text-068.       "Document Header Text.
  l_sel_ltxt20 = text-069.        "Document Date.
  l_sel_ltxt21 = text-070.        "Entry Date.
  l_sel_ltxt22 = text-071.        "Time of Entry.
  l_sel_ltxt23 = text-072.        "Movement Indicator.
  l_sel_ltxt24 = text-073.        "Vendor.
  l_sel_ltxt25 = text-074.        "Base Unit of Measure.
  l_sel_ltxt26 = text-075.        "Quantity.
  l_sel_ltxt27 = text-076.        "Material Doc. Year.
  l_sel_ltxt28 = text-077.        "Reservation.
  l_sel_ltxt29 = text-078.
  "Item No. Reservation/Dependent Reservation.
  l_sel_ltxt30 = text-079.        "Debit/Credit Ind.
  l_sel_ltxt31 = text-080.        "User Name.
  l_sel_ltxt32 = text-081.        "Trans./Event Type.
  l_sel_ltxt33 = text-082.        "GR/GI Slip No..
  l_sel_ltxt34 = text-083.        "Warehouse Number.
  l_sel_ltxt35 = text-084.        "Transfer Order Number.
  l_sel_ltxt36 = text-085.        "Transfer Order Item.
  l_sel_ltxt37 = text-086.        "WM Movement Type.
  l_sel_ltxt38 = text-087.        "Requirement Type.
  l_sel_ltxt39 = text-088.        "Requirement Tracking Number.
  l_sel_ltxt40 = text-089.
  "Stock Category in Warehouse Mgmt System.
  l_sel_ltxt41 = text-090.        "Source Storage Type.
  l_sel_ltxt42 = text-091.        "Source Storage Bin.
  l_sel_ltxt43 = text-092.        "Source Storage Unit.
  l_sel_ltxt44 = text-093.        "Destination Storage Type.
  l_sel_ltxt45 = text-094.        "Destination Storage Bin.
  l_sel_ltxt46 = text-095.        "Destination Storage Unit.

* Assign Detailed text to printed-medium
  l_sel_mtxt1 = text-050.       "Material.
  l_sel_mtxt2 = text-051.        "Batch.
  l_sel_mtxt3 = text-052.        "Plant.
  l_sel_mtxt4 = text-053.        "Sloc.
  l_sel_mtxt5 = text-054.        "Mvt.
  l_sel_mtxt6 = text-055.        "S.
  l_sel_mtxt7 = text-056.        "Material Doc.
  l_sel_mtxt8 = text-057.        "Item.
  l_sel_mtxt9 = text-058.        "Posting Date.
  l_sel_mtxt10 = text-059.        "Qty in unit of Entry.
  l_sel_mtxt11 = text-060.        "EUn.
  l_sel_mtxt12 = text-061.        "St. Typ.
  l_sel_mtxt13 = text-062.        "St. Bin.
  l_sel_mtxt14 = text-063.        "Storage Unit.
  l_sel_mtxt15 = text-064.        "Material Description.
  l_sel_mtxt16 = text-065.        "Stock Type.
  l_sel_mtxt17 = text-066.        "Order.
  l_sel_mtxt18 = text-067.        "Routing Number for Operations.
  l_sel_mtxt19 = text-068.       "Document Header Text.
  l_sel_mtxt20 = text-069.        "Document Date.
  l_sel_mtxt21 = text-070.        "Entry Date.
  l_sel_mtxt22 = text-071.        "Time of Entry.
  l_sel_mtxt23 = text-072.        "Movement Indicator.
  l_sel_mtxt24 = text-073.        "Vendor.
  l_sel_mtxt25 = text-074.        "Base Unit of Measure.
  l_sel_mtxt26 = text-075.        "Quantity.
  l_sel_mtxt27 = text-076.        "Material Doc. Year.
  l_sel_mtxt28 = text-077.        "Reservation.
  l_sel_mtxt29 = text-078.
  "Item No. Reservation/Dependent Reservation.
  l_sel_mtxt30 = text-079.        "Debit/Credit Ind.
  l_sel_mtxt31 = text-080.        "User Name.
  l_sel_mtxt32 = text-081.        "Trans./Event Type.
  l_sel_mtxt33 = text-082.        "GR/GI Slip No..
  l_sel_mtxt34 = text-083.        "Warehouse Number.
  l_sel_mtxt35 = text-084.        "Transfer Order Number.
  l_sel_mtxt36 = text-085.        "Transfer Order Item.
  l_sel_mtxt37 = text-086.        "WM Movement Type.
  l_sel_mtxt38 = text-087.        "Requirement Type.
  l_sel_mtxt39 = text-088.        "Requirement Tracking Number.
  l_sel_mtxt40 = text-089.
  "Stock Category in Warehouse Mgmt System.
  l_sel_mtxt41 = text-090.        "Source Storage Type.
  l_sel_mtxt42 = text-091.        "Source Storage Bin.
  l_sel_mtxt43 = text-092.        "Source Storage Unit.
  l_sel_mtxt44 = text-093.        "Destination Storage Type.
  l_sel_mtxt45 = text-094.        "Destination Storage Bin.
  l_sel_mtxt46 = text-095.        "Destination Storage Unit.

* Assign Detailed text to printed-short
  l_sel_stxt1 = text-050.       "Material.
  l_sel_stxt2 = text-051.        "Batch.
  l_sel_stxt3 = text-052.        "Plant.
  l_sel_stxt4 = text-053.        "Sloc.
  l_sel_stxt5 = text-054.        "Mvt.
  l_sel_stxt6 = text-055.        "S.
  l_sel_stxt7 = text-056.        "Material Doc.
  l_sel_stxt8 = text-057.        "Item.
  l_sel_stxt9 = text-058.        "Posting Date.
  l_sel_stxt10 = text-059.        "Qty in unit of Entry.
  l_sel_stxt11 = text-060.        "EUn.
  l_sel_stxt12 = text-061.        "St. Typ.
  l_sel_stxt13 = text-062.        "St. Bin.
  l_sel_stxt14 = text-063.        "Storage Unit.
  l_sel_stxt15 = text-064.        "Material Description.
  l_sel_stxt16 = text-065.        "Stock Type.
  l_sel_stxt17 = text-066.        "Order.
  l_sel_stxt18 = text-067.        "Routing Number for Operations.
  l_sel_stxt19 = text-068.       "Document Header Text.
  l_sel_stxt20 = text-069.        "Document Date.
  l_sel_stxt21 = text-070.        "Entry Date.
  l_sel_stxt22 = text-071.        "Time of Entry.
  l_sel_stxt23 = text-072.        "Movement Indicator.
  l_sel_stxt24 = text-073.        "Vendor.
  l_sel_stxt25 = text-074.        "Base Unit of Measure.
  l_sel_stxt26 = text-075.        "Quantity.
  l_sel_stxt27 = text-076.        "Material Doc. Year.
  l_sel_stxt28 = text-077.        "Reservation.
  l_sel_stxt29 = text-078.
  "Item No. Reservation/Dependent Reservation.
  l_sel_stxt30 = text-079.        "Debit/Credit Ind.
  l_sel_stxt31 = text-080.        "User Name.
  l_sel_stxt32 = text-081.        "Trans./Event Type.
  l_sel_stxt33 = text-082.        "GR/GI Slip No..
  l_sel_stxt34 = text-083.        "Warehouse Number.
  l_sel_stxt35 = text-084.        "Transfer Order Number.
  l_sel_stxt36 = text-085.        "Transfer Order Item.
  l_sel_stxt37 = text-086.        "WM Movement Type.
  l_sel_stxt38 = text-087.        "Requirement Type.
  l_sel_stxt39 = text-088.        "Requirement Tracking Number.
  l_sel_stxt40 = text-089.
  "Stock Category in Warehouse Mgmt System.
  l_sel_stxt41 = text-090.        "Source Storage Type.
  l_sel_stxt42 = text-091.        "Source Storage Bin.
  l_sel_stxt43 = text-092.        "Source Storage Unit.
  l_sel_stxt44 = text-093.        "Destination Storage Type.
  l_sel_stxt45 = text-094.        "Destination Storage Bin.
  l_sel_stxt46 = text-095.        "Destination Storage Unit.

* Assign field name to be passed
  l_field1 = text-004.        "MATNR.
  l_field2 = text-005.        "CHARG.
  l_field3 = text-006.        "WERKS.
  l_field4 = text-007.        "LGORT.
  l_field5 = text-008.        "BWART.
  l_field6 = text-009.        "SOBKZ.
  l_field7 = text-010.        "MBLNR.
  l_field8 = text-011.        "ZEILE.
  l_field9 = text-012.        "BUDAT.
  l_field10 = text-013.        "ERFMG.
  l_field11 = text-014.        "ERFME.
  l_field12 = text-015.        "LGTYP.
  l_field13 = text-016.        "LGPLA.
  l_field14 = text-017.        "LENUM.
  l_field15 = text-018.        "MAKTX.
  l_field16 = text-019.        "INSMK.
  l_field17 = text-020.        "AUFNR.
  l_field18 = text-021.        "AUFPL.
  l_field19 = text-022.        "BKTXT.
  l_field20 = text-023.        "BLDAT.
  l_field21 = text-024.        "CPUDT.
  l_field22 = text-025.        "CPUTM.
  l_field23 = text-026.        "KZBEW.
  l_field24 = text-027.        "LIFNR.
  l_field25 = text-028.        "MEINS.
  l_field26 = text-029.        "MENGE.
  l_field27 = text-030.        "MJAHR.
  l_field28 = text-031.        "RSNUM.
  l_field29 = text-032.        "RSPOS.
  l_field30 = text-033.        "SHKZG.
  l_field31 = text-034.        "USNAM.
  l_field32 = text-035.        "VGART.
  l_field33 = text-036.        "XABLN.
  l_field34 = text-037.        "LGNUM.
  l_field35 = text-038.        "TANUM.
  l_field36 = text-039.        "tapos.
  l_field37 = text-040.        "BWLVS.
  l_field38 = text-041.        "BETYP.
  l_field39 = text-042.        "BENUM.
  l_field40 = text-043.        "BESTQ.
  l_field41 = text-044.        "VLTYP.
  l_field42 = text-045.        "VLPLA.
  l_field43 = text-046.        "VLENR.
  l_field44 = text-047.        "NLTYP.
  l_field45 = text-048.        "NLPLA.
  l_field46 = text-049.        "NLENR.

* Assign Reference field name to be passed
  l_reffield1 = text-004.        "MATNR.
  l_reffield2 = text-005.        "CHARG.
  l_reffield3 = text-006.        "WERKS.
  l_reffield4 = text-007.        "LGORT.
  l_reffield5 = text-008.        "BWART.
  l_reffield6 = text-009.        "SOBKZ.
  l_reffield7 = text-010.        "MBLNR.
  l_reffield8 = text-011.        "ZEILE.
  l_reffield9 = ''.
  l_reffield10 = text-013.       "ERFMG.
  l_reffield11 = text-014.       "ERFME.
  l_reffield12 = text-015.       "LGTYP.
  l_reffield13 = text-016.       "LGPLA.
  l_reffield14 = text-017.       "LENUM.
  l_reffield15 = text-018.       "MAKTX.
  l_reffield16 = text-019.       "INSMK.
  l_reffield17 = text-020.       "AUFNR.
  l_reffield18 = text-021.       "AUFPL.
  l_reffield19 = text-022.       "BKTXT.
  l_reffield20 = text-023.       "BLDAT.
  l_reffield21 = text-024.       "CPUDT.
  l_reffield22 = text-025.       "CPUTM.
  l_reffield23 = text-026.       "KZBEW.
  l_reffield24 = text-027.       "LIFNR.
  l_reffield25 = text-028.       "MEINS.
  l_reffield26 = text-029.       "MENGE.
  l_reffield27 = text-030.       "MJAHR.
  l_reffield28 = text-031.       "RSNUM.
  l_reffield29 = text-032.       "RSPOS.
  l_reffield30 = text-033.       "SHKZG.
  l_reffield31 = text-034.       "USNAM.
  l_reffield32 = text-035.       "VGART.
  l_reffield33 = text-036.       "XABLN.
  l_reffield34 = text-037.       "LGNUM.
  l_reffield35 = text-038.       "TANUM.
  l_reffield36 = ''.
  l_reffield37 = text-040.       "BWLVS.
  l_reffield38 = text-041.       "BETYP.
  l_reffield39 = text-042.       "BENUM.
  l_reffield40 = text-043.       "BESTQ.
  l_reffield41 = text-044.       "VLTYP.
  l_reffield42 = text-045.       "VLPLA.
  l_reffield43 = text-046.       "VLENR.
  l_reffield44 = text-047.       "NLTYP.
  l_reffield45 = text-048.       "NLPLA.
  l_reffield46 = text-049.       "NLENR.

* Populate the field catalog
  PERFORM sub_fcat_fill USING:
*POS      FIELD         TABLE         KEY   JUST    TITLE   REFTAB TYPE
*REFFIELD     SELTEXTLONG   SELTEXTMEDIUM SELTEXTSHORT DOSUM NO_OUT
  l_sycucol01 l_field1 l_int_tabname c_x c_l  l_txt1
l_tabname1
   l_reffield1 l_sel_ltxt1 l_sel_mtxt1 l_sel_stxt1 '' '' ,
  l_sycucol02 l_field2 l_int_tabname '' c_l  l_txt2
l_tabname1
   l_reffield2 l_sel_ltxt2 l_sel_mtxt2 l_sel_stxt2 '' ''  ,
  l_sycucol03 l_field3 l_int_tabname '' c_l  l_txt3
l_tabname1
   l_reffield3 l_sel_ltxt3 l_sel_mtxt3 l_sel_stxt3 '' '' ,
  l_sycucol04 l_field4 l_int_tabname '' c_l  l_txt4
l_tabname1
   l_reffield4 l_sel_ltxt4 l_sel_mtxt4 l_sel_stxt4 '' '' ,
  l_sycucol05 l_field5 l_int_tabname '' c_l  l_txt5
l_tabname1
   l_reffield5 l_sel_ltxt5 l_sel_mtxt5 l_sel_stxt5 '' '' ,
  l_sycucol06 l_field6 l_int_tabname '' c_l  l_txt6
l_tabname1
   l_reffield6 l_sel_ltxt6 l_sel_mtxt6 l_sel_stxt6 '' '' ,
  l_sycucol07 l_field7 l_int_tabname '' c_l  l_txt7
l_tabname1
   l_reffield7 l_sel_ltxt7 l_sel_mtxt7 l_sel_stxt7 '' '' ,
  l_sycucol08 l_field8 l_int_tabname '' c_l  l_txt8
l_tabname1
   l_reffield8 l_sel_ltxt8 l_sel_mtxt8 l_sel_stxt8 '' '' ,
  l_sycucol09 l_field9 l_int_tabname '' c_l  l_txt9  ''
 l_reffield9
   l_sel_ltxt9 l_sel_mtxt9 l_sel_stxt9 '' '' ,
  l_sycucol10 l_field10 l_int_tabname '' c_r  l_txt10
l_tabname1
  l_reffield10  l_sel_ltxt10 l_sel_mtxt10 l_sel_stxt10 c_x'' ,
  l_sycucol11 l_field11 l_int_tabname '' c_l  l_txt11
l_tabname1
   l_reffield11 l_sel_ltxt11 l_sel_mtxt11 l_sel_stxt11 '' '' ,
  l_sycucol12 l_field12 l_int_tabname '' c_l  l_txt12
l_tabname1
   l_reffield12 l_sel_ltxt12 l_sel_mtxt12 l_sel_stxt12 '' '' ,
  l_sycucol13 l_field13 l_int_tabname '' c_l  l_txt13
l_tabname1
   l_reffield13 l_sel_ltxt13 l_sel_mtxt13 l_sel_stxt13 '' '' ,
  l_sycucol14 l_field14 l_int_tabname '' c_l  l_txt14
l_tabname6
  l_reffield14 l_sel_ltxt14 l_sel_mtxt14 l_sel_stxt14 '' '' ,
  l_sycucol15 l_field15 l_int_tabname '' c_l  l_txt15
l_tabname5
   l_reffield15 l_sel_ltxt15 l_sel_mtxt15 l_sel_stxt15 '' c_x ,
  l_sycucol16 l_field16 l_int_tabname '' c_l  l_txt16
l_tabname1
   l_reffield16 l_sel_ltxt16 l_sel_mtxt16 l_sel_stxt16 '' c_x ,
  l_sycucol17 l_field17 l_int_tabname '' c_l  l_txt17
l_tabname1
   l_reffield17 l_sel_ltxt17 l_sel_mtxt17 l_sel_stxt17 '' c_x ,
  l_sycucol18 l_field18 l_int_tabname '' c_l  l_txt18
l_tabname1
   l_reffield18 l_sel_ltxt18 l_sel_mtxt18 l_sel_stxt18 '' c_x ,
  l_sycucol19 l_field19 l_int_tabname '' c_l  l_txt19
l_tabname2
   l_reffield19 l_sel_ltxt19 l_sel_mtxt19 l_sel_stxt19 '' c_x ,
  l_sycucol20 l_field20 l_int_tabname '' c_l  l_txt20
l_tabname2
   l_reffield20 l_sel_ltxt20 l_sel_mtxt20 l_sel_stxt20 '' c_x ,
  l_sycucol21 l_field21 l_int_tabname '' c_l  l_txt21
l_tabname2
   l_reffield21 l_sel_ltxt21 l_sel_mtxt21 l_sel_stxt21 '' c_x ,
  l_sycucol22 l_field22 l_int_tabname '' c_l  l_txt22
l_tabname2
   l_reffield22 l_sel_ltxt22 l_sel_mtxt22 l_sel_stxt22 '' c_x ,
  l_sycucol23 l_field23 l_int_tabname '' c_l  l_txt23
l_tabname1
   l_reffield23 l_sel_ltxt23 l_sel_mtxt23 l_sel_stxt23 '' c_x ,
  l_sycucol24 l_field24 l_int_tabname '' c_l  l_txt24
l_tabname1
   l_reffield24 l_sel_ltxt24 l_sel_mtxt24 l_sel_stxt24 '' c_x ,
  l_sycucol25 l_field25 l_int_tabname '' c_l  l_txt25
l_tabname1
   l_reffield25 l_sel_ltxt25 l_sel_mtxt25 l_sel_stxt25 '' c_x ,
  l_sycucol26 l_field26 l_int_tabname '' c_r  l_txt26
l_tabname1
   l_reffield26 l_sel_ltxt26 l_sel_mtxt26 l_sel_stxt26 c_x c_x
 ,
  l_sycucol27 l_field27 l_int_tabname '' c_l  l_txt27
l_tabname1
   l_reffield27 l_sel_ltxt27 l_sel_mtxt27 l_sel_stxt27 '' c_x ,
  l_sycucol28 l_field28 l_int_tabname '' c_l  l_txt28
l_tabname1
   l_reffield28 l_sel_ltxt28 l_sel_mtxt28 l_sel_stxt28 '' c_x ,
  l_sycucol29 l_field29 l_int_tabname '' c_l  l_txt29
l_tabname1
   l_reffield29 l_sel_ltxt29 l_sel_mtxt29 l_sel_stxt29 '' c_x ,
  l_sycucol30 l_field30 l_int_tabname '' c_l  l_txt30
l_tabname1
   l_reffield30 l_sel_ltxt30 l_sel_mtxt30 l_sel_stxt30 '' c_x ,
  l_sycucol31 l_field31 l_int_tabname '' c_l  l_txt31
l_tabname2
   l_reffield31 l_sel_ltxt31 l_sel_mtxt31 l_sel_stxt31 '' c_x ,
  l_sycucol32 l_field32 l_int_tabname '' c_l  l_txt32
l_tabname2
   l_reffield32 l_sel_ltxt32 l_sel_mtxt32 l_sel_stxt32 '' c_x ,
  l_sycucol33 l_field33 l_int_tabname '' c_l  l_txt33
l_tabname2
   l_reffield33 l_sel_ltxt33 l_sel_mtxt33 l_sel_stxt33 '' c_x ,
  l_sycucol34 l_field34 l_int_tabname '' c_l  l_txt34
l_tabname3
   l_reffield34 l_sel_ltxt34 l_sel_mtxt34 l_sel_stxt34 '' c_x ,
  l_sycucol35 l_field35 l_int_tabname '' c_l  l_txt35
l_tabname3
   l_reffield35 l_sel_ltxt35 l_sel_mtxt35 l_sel_stxt35 '' c_x ,
  l_sycucol36 l_field36 l_int_tabname '' c_l  l_txt36 ''
   l_reffield36 l_sel_ltxt36 l_sel_mtxt36 l_sel_stxt36 '' c_x ,
  l_sycucol37 l_field37 l_int_tabname '' c_l  l_txt37
l_tabname3
   l_reffield37 l_sel_ltxt37 l_sel_mtxt37 l_sel_stxt37 '' c_x ,
  l_sycucol38 l_field38 l_int_tabname '' c_l  l_txt38
l_tabname3
   l_reffield38 l_sel_ltxt38 l_sel_mtxt38 l_sel_stxt38 '' c_x ,
  l_sycucol39 l_field39 l_int_tabname '' c_l  l_txt39
l_tabname3
   l_reffield39 l_sel_ltxt39 l_sel_mtxt39 l_sel_stxt39 '' c_x ,
  l_sycucol40 l_field40 l_int_tabname '' c_l  l_txt40
l_tabname4
   l_reffield40 l_sel_ltxt40 l_sel_mtxt40 l_sel_stxt40 '' c_x ,
  l_sycucol41 l_field41 l_int_tabname '' c_l  l_txt41
l_tabname4
   l_reffield41 l_sel_ltxt41 l_sel_mtxt41 l_sel_stxt41 '' c_x ,
  l_sycucol42 l_field42 l_int_tabname '' c_l  l_txt42
l_tabname4
   l_reffield42 l_sel_ltxt42 l_sel_mtxt42 l_sel_stxt42 '' c_x ,
  l_sycucol43 l_field43 l_int_tabname '' c_l  l_txt43
l_tabname4
   l_reffield43 l_sel_ltxt43 l_sel_mtxt43 l_sel_stxt43 '' c_x ,
  l_sycucol44 l_field44 l_int_tabname '' c_l  l_txt44
l_tabname4
   l_reffield44 l_sel_ltxt44 l_sel_mtxt44 l_sel_stxt44 '' c_x ,
  l_sycucol45 l_field45 l_int_tabname '' c_l  l_txt45
l_tabname4
   l_reffield45 l_sel_ltxt45 l_sel_mtxt45 l_sel_stxt45 '' c_x ,
  l_sycucol46 l_field46 l_int_tabname '' c_l  l_txt46
l_tabname4
   l_reffield46 l_sel_ltxt46 l_sel_mtxt46 l_sel_stxt46 '' c_x .

ENDFORM.                    " sub_fcat_build
*&---------------------------------------------------------------------*
*&      Form  sub_fcat_fill
*&---------------------------------------------------------------------*
* This subroutine populates the field catalog
*----------------------------------------------------------------------*
FORM sub_fcat_fill USING    in_pos TYPE sycucol
                            in_fld TYPE fieldname
                            in_tab TYPE tabname
                            in_key TYPE char1
                            in_jus TYPE char1
                            in_txt TYPE reptext
                            in_reftab TYPE char30
                            in_reffld TYPE fieldname
                            in_seltxtl TYPE reptxt
                            in_seltxtm TYPE reptxt
                            in_seltxts TYPE reptxt
                            in_do_sum TYPE char1
                            in_no_out TYPE char1.

  CONSTANTS: c_ddictxt TYPE c VALUE 'L'. " value of L

  DATA     : i_lfl_fcat TYPE slis_fieldcat_alv.

  i_lfl_fcat-col_pos            = in_pos. "position of column
  i_lfl_fcat-fieldname          = in_fld. "name of field
  i_lfl_fcat-tabname            = in_tab. "name of table
  i_lfl_fcat-key                = in_key. "key flag
  i_lfl_fcat-just               = in_jus. "justified - R/L
  i_lfl_fcat-reptext_ddic       = in_txt. "text header
  i_lfl_fcat-ref_tabname        = in_reftab. "reference table
  i_lfl_fcat-ref_fieldname      = in_reffld. "reference field
  i_lfl_fcat-seltext_l          = in_seltxtl. "selection text long
  i_lfl_fcat-seltext_m          = in_seltxtm. "selection text medium
  i_lfl_fcat-seltext_s          = in_seltxts. "selection text short
  i_lfl_fcat-do_sum             = in_do_sum."do sum
  i_lfl_fcat-no_out             = in_no_out."no out
  i_lfl_fcat-ddictxt            = c_ddictxt.

  IF in_fld = text-013.               " ERFMG
    i_lfl_fcat-QFIELDNAME = text-014. " ERFME
  ELSEIF in_fld = text-029.           " MENGE
    i_lfl_fcat-QFIELDNAME = text-028. " MEINS
  ENDIF.

  APPEND i_lfl_fcat  TO i_fcat.
  CLEAR  i_lfl_fcat.

ENDFORM.                    " sub_fcat_fill
*&---------------------------------------------------------------------*
*&      Form  sortinfo_build
*&---------------------------------------------------------------------*
* This subroutine builds the sort table passed to the ALV
*----------------------------------------------------------------------*
FORM sortinfo_build .

  DATA: l_sort TYPE slis_sortinfo_alv.

* Sort criteria material number and batch
  CLEAR l_sort.
  l_sort-spos = c_01.
  l_sort-fieldname = text-004. " MATNR
  l_sort-tabname = 'I_OUTPUT'.
  l_sort-up = c_x.
  l_sort-subtot = c_x.
  APPEND l_sort TO i_sort.

  CLEAR l_sort.
  l_sort-spos = c_02.
  l_sort-fieldname = text-005. " CHARG
  l_sort-tabname = 'I_OUTPUT'.
  l_sort-up = c_x.
  APPEND l_sort TO i_sort.

ENDFORM.                    " sortinfo_build
*&---------------------------------------------------------------------*
*&      Form  varinfo_build
*&---------------------------------------------------------------------*
*    This subroutines builds up the variant information
*----------------------------------------------------------------------*
FORM varinfo_build .

  struct_variant-report = v_repid.

ENDFORM.                    " varinfo_build
*&---------------------------------------------------------------------*
*&      Form  layout_build
*&---------------------------------------------------------------------*
*  This subroutine builds the layout for column optmise and color
*  display.
*----------------------------------------------------------------------*

FORM layout_build USING l_layout TYPE slis_layout_alv.
  DATA :  lv_colno    TYPE i.

  l_layout-colwidth_optimize  = 'X'.
  l_layout-coltab_fieldname   = 'COLOR'.

  REFRESH: i_output-color,
           i_col_layout.

  LOOP AT i_output.
    IF i_output-shkzg = c_h.
      lv_colno = 6.       "color RED

      PERFORM sub_set_color USING i_col_layout
                                  text-013  "ERFMG
                                  text-014  "ERFME
                                  text-028  "MEINS
                                  text-029  "MENGE
                                  lv_colno.
    ELSE.
      lv_colno = 5.        "color GREEN
      PERFORM sub_set_color USING i_col_layout
                                  text-013  "ERFMG
                                  text-014  "ERFME
                                  text-028  "MEINS
                                  text-029  "MENGE
                                  lv_colno.
    ENDIF.
    i_output-color[] = i_col_layout[].
    MODIFY i_output TRANSPORTING color.
    CLEAR: i_col_layout[].

  ENDLOOP.
ENDFORM.                    " layout_build
*&---------------------------------------------------------------------*
*&      Form  SUB_SET_COLOR
*&---------------------------------------------------------------------*
*  This subroutine sets the colour of the Quantity and Unit of measure
*  cells depending on Debit/Credit
*----------------------------------------------------------------------*

FORM sub_set_color USING  ls_color LIKE i_col_layout
                          p_fieldname1
                          p_fieldname2
                          p_fieldname3
                          p_fieldname4
                          p_colno.

  DATA: i_lfl_color TYPE slis_specialcol_alv.

  CLEAR i_lfl_color.
  i_lfl_color-fieldname = p_fieldname1.
  i_lfl_color-color-col = p_colno.
  i_lfl_color-nokeycol   = 'X'.
  APPEND i_lfl_color TO ls_color.

  CLEAR i_lfl_color.
  i_lfl_color-fieldname = p_fieldname2.
  i_lfl_color-color-col = p_colno.
  i_lfl_color-nokeycol   = 'X'.
  APPEND i_lfl_color TO ls_color.

  CLEAR i_lfl_color.
  i_lfl_color-fieldname = p_fieldname3.
  i_lfl_color-color-col = p_colno.
  i_lfl_color-nokeycol   = 'X'.
  APPEND i_lfl_color TO ls_color.

  CLEAR i_lfl_color.
  i_lfl_color-fieldname = p_fieldname4.
  i_lfl_color-color-col = p_colno.
  i_lfl_color-nokeycol   = 'X'.
  APPEND i_lfl_color TO ls_color.

ENDFORM.                    " SUB_SET_COLOR
*&---------------------------------------------------------------------*
*&      Form  Populate_detl_meins
*&---------------------------------------------------------------------*
*  This subroutine populates the Base Unit (MEINS) from LTAP table
* into the i_detl internal table.
*----------------------------------------------------------------------*
FORM Populate_detl_meins .

DATA l_index type i.

CLEAR l_index.

  IF NOT i_detl[] IS INITIAL.
*  Retreieve BAse UNit (MEINS) from LTAP
    SELECT a~lgnum    " Warehouse no.
           a~tanum    " Transfer order no.
           a~tapos    " Transfer order item
           a~matnr    " Material no.
           a~meins    " Base unit
    INTO TABLE i_meins_ltap
    FROM ltap AS a
    FOR ALL ENTRIES IN i_detl
    WHERE a~lgnum = i_detl-lgnum
           AND a~tanum = i_detl-tanum
           AND a~tapos = i_detl-tapos
           AND a~matnr = i_detl-matnr.

    l_index = 1.
    LOOP AT i_detl.
    CLEAR i_meins_ltap.
    READ TABLE i_meins_ltap WITH KEY lgnum = i_detl-lgnum
                           tanum = i_detl-tanum
                           tapos = i_detl-tapos
                           matnr = i_detl-matnr.

    IF sy-subrc = 0.
      i_detl-meins_to = i_meins_ltap-meins.
      MODIFY i_detl index l_index TRANSPORTING meins_to.
    ENDIF.
    CLEAR i_detl.
    l_index = l_index + 1.
    ENDLOOP.
 ENDIF.

ENDFORM.                    " Populate_detl_meins

*Selection texts
*----------------------------------------------------------
* P_ORDER         Purchase Order
* S_BATCH         Batch
* S_MAT         Material
* S_MVTYPE         Movement Type
* S_PSTDTE         Posting date
* S_STRBIN         Storage Bin
* S_STRTYP         Storage Type
* S_STRUNT         Storage Unit
* S_USER         User

*Messages
*----------------------------------------------------------
*
* Message class: ZDEV
*999

--------------------------------------------------------------------------------

  • No labels