REPORT ZPPPDR001A NO STANDARD PAGE HEADING MESSAGE-ID MG .

*----------------------------------------------------------------------*
*                                                                      *
* Program     :  ZPPPDR001A                                            *
* Author      :  Patrick Song                                          *
* Date        :  Feb 16, 2009                                          *
* Code type   :  REPORT                                                *
* (interface/conversion/on-line transaction/report)                    *
*                                                                      *
*  Security   :                                                        *
*  Auth.Group :  N/A                                                   *
*  Built In   :                                                        *
*                                                                      *
* Description :  List of shortage raw materials in production order.   *
*                                                                      *
*----------------------------------------------------------------------*
* Processes :                                                          *
* 1.                                                                   *
*                                                                      *
*----------------------------------------------------------------------*
* Error handling :                                                     *
*----------------------------------------------------------------------*
* 1.                                                                   *
*                                                                      *
*----------------------------------------------------------------------*
* Change log :                                                         *
*----------------------------------------------------------------------*
* CR#       :                                                          *
* Corr. no. :                                                          *
* Date      :                                                          *
* Author    :                                                          *
* Search ID :                                                          *
* Change    :                                                          *
*                                                                      *
*----------------------------------------------------------------------*

*----------------------------------------------------------------------*
* Standard header and time include                                     *
*----------------------------------------------------------------------*
INCLUDE ZBCDWI000.
INCLUDE <ICON>.
TYPE-POOLS: SLIS.


*----------------------------------------------------------------------*
* Data dictionary tables and structures                                *
*----------------------------------------------------------------------*
TABLES: AFKO.          " Order header data PP orders
TABLES: AFPO.          " Order item
TABLES: CAUFV.         " Production order table
TABLES: EKKO.          " Purchasing Document Header
TABLES: EKPO.          " Purchasing Document Item
TABLES: JEST.          " Individual Object Status
TABLES: MARA.          " General Material Data
TABLES: MARC.          " Plant Data for Material
TABLES: MARD.          " Storage Location Data for Material
TABLES: MAKT.          " Material Descriptions
TABLES: MAST.          " Material to BOM Link
TABLES: MBEW.          " Material Valuation
TABLES: MKOL.          " Special Stocks from Vendor
TABLES: MSKA.          " Sales Order Stock
TABLES: MSLB.          " Special Stocks with Vendor
TABLES: PLAF.          " Planned order
TABLES: RESB.          " Reservation/dependent requirements
TABLES: T001L.         " Storage Locations
TABLES: T001W.         " Plants/Branches
TABLES: TJ02T.         " System status texts
TABLES: T001.          " Company Codes
TABLES: T001K.         " Valuation area
TABLES: T024W.         " Valid Purchasing Organizations for Plant
TABLES: T399D.         " Control Parameters for MRP
TABLES: T438A.         " MRP Type
TABLES: T438M.         " Control Parameter for MRP -Material Level
TABLES: T450N.         " Transaction Control MRP With Object
TABLES: VBEP .         " Sales Document: Schedule Line Data


*----------------------------------------------------------------------*
* Select options and parameters                                        *
*----------------------------------------------------------------------*
SELECTION-SCREEN BEGIN OF BLOCK B1 WITH FRAME TITLE TEXT-B01.
SELECT-OPTIONS: S_BDART FOR RESB-BDART MEMORY ID BDA.
SELECT-OPTIONS: S_SOBKZ FOR RESB-SOBKZ DEFAULT   'E'   OBLIGATORY .
SELECT-OPTIONS: S_WERKS FOR RESB-WERKS DEFAULT  '2001' OBLIGATORY.
SELECT-OPTIONS: S_BDTER FOR RESB-BDTER DEFAULT   SY-DATUM.
SELECTION-SCREEN SKIP.
SELECT-OPTIONS: S_AUFNR FOR RESB-AUFNR MEMORY ID ANR.
SELECTION-SCREEN SKIP.
SELECT-OPTIONS: S_KDAUF FOR RESB-KDAUF MEMORY ID AUN.
SELECT-OPTIONS: S_KDPOS FOR RESB-KDPOS MEMORY ID KPO.
SELECTION-SCREEN SKIP.
SELECT-OPTIONS: S_EBELN FOR EKPO-EBELN MEMORY ID BES.
SELECT-OPTIONS: S_EBELP FOR EKPO-EBELP MEMORY ID BSP.
SELECTION-SCREEN SKIP.
SELECT-OPTIONS: S_MATNR FOR RESB-MATNR MEMORY ID MAT.
SELECT-OPTIONS: S_MATKL FOR MARA-MATKL MEMORY ID MKL.
SELECT-OPTIONS: S_DISPO FOR MARC-DISPO MEMORY ID DGR.
SELECT-OPTIONS: S_EKGRP FOR MARC-EKGRP MEMORY ID EKG.
SELECTION-SCREEN END OF BLOCK B1.

*--------------------------------------------------------------------*
* Constants                                                          *
*--------------------------------------------------------------------*

*----------------------------------------------------------------------*
* Internal tables and field strings                                    *
*----------------------------------------------------------------------*
* define internal table to store reservation data
DATABEGIN OF I_RESB OCCURS 0 .
        INCLUDE STRUCTURE RESB .
DATA: MAKTX LIKE MAKT-MAKTX .
DATA: OPNQTY   LIKE RESB-BDMNG.   " Qty Open
DATA: SHORTAGE LIKE RESB-ENMNG.   " Material Shortage
DATA: KALAB    LIKE MSKA-KALAB.   " Valuated Unrestricted-Use Stock
DATA: KAINS    LIKE MSKA-KAINS.   " Stock in Quality Inspection
DATA: AVASTK   LIKE MARD-LABST.   " Available Stock
DATA: XMENG    LIKE RESB-ENMNG.   " Outstanding PO
DATA: LABST    LIKE MARD-LABST.   " Standard Stock
DATA: INSME    LIKE MARD-INSME.   " Stock in Quality Inspection
DATA: SLABS    LIKE MKOL-SLABS .  " Consignment Stock
DATA: SINSM    LIKE MKOL-SINSM .  " Consignment Stock
DATA: SELK(001).                  " Selected Fields
DATAICON(004).
DATAEND   OF I_RESB .

*--> Tabelle der offenen Bestellungen
DATABEGIN OF XTAB OCCURS 10,
         WERKS LIKE EKPO-WERKS,
         LGORT LIKE EKPO-LGORT,
         MATNR LIKE EKPO-MATNR,
         MENGE LIKE EKPO-MENGE,
         MENGK LIKE EKPO-MENGE,
       END OF XTAB.

*--> Define internal table to store available stock for reservation check
DATABEGIN OF MTAB OCCURS 0.
DATA: MATNR  LIKE MARA-MATNR.
DATA: WERKS  LIKE MARC-WERKS.
DATA: LGORT  LIKE MSKA-LGORT.
DATA: SOBKZ  LIKE MSKA-SOBKZ.
DATA: VBELN  LIKE MSKA-VBELN.
DATA: POSNR  LIKE MSKA-POSNR.
DATA: KALAB  LIKE MSKA-KALAB.
DATA: KAINS  LIKE MSKA-KAINS.
DATAEND OF MTAB.

*--> Define internal table to store available stock for reservation check
DATABEGIN OF ORD_STK OCCURS 0.
DATA: MATNR  LIKE MARA-MATNR.
DATA: WERKS  LIKE MARC-WERKS.
DATA: SOBKZ  LIKE MSKA-SOBKZ.
DATA: VBELN  LIKE MSKA-VBELN.
DATA: POSNR  LIKE MSKA-POSNR.
DATA: KALAB  LIKE MSKA-KALAB.
DATA: KAINS  LIKE MSKA-KAINS.
DATA: AVASTK LIKE MARD-LABST.   " Available Stock
DATAEND OF ORD_STK.

* define data for cusor determination
DATA: IDX     TYPE SY-TABIX.
DATA: MTAB_WA LIKE ORD_STK.

* define internal table to store Sales Order Stock
DATABEGIN OF ITAB OCCURS 0.
DATA: MATNR LIKE RESB-MATNR.
DATA: WERKS LIKE RESB-WERKS.
DATAEND   OF ITAB .

*----------------------------------------------------------------------*
* Global program variables                                             *
*----------------------------------------------------------------------*
*-> define internal table for ALV-Output
DATA: S_REPID LIKE SY-REPID,
      ST_LIST_TOP_OF_PAGE TYPE SLIS_T_LISTHEADER."page header
DATA: ST_FIELDCAT      TYPE SLIS_T_FIELDCAT_ALV,   "table col name
      ST_LAYOUT        TYPE SLIS_LAYOUT_ALV,       "layoutsetting
      ST_SP_GROUP      TYPE SLIS_T_SP_GROUP_ALV,   "Globale Typen
      ST_EVENTS        TYPE SLIS_T_EVENT,          "event header
      CODE             LIKE DISVARIANT-HANDLE,     "Mgt. ID for repeated calls
      S_VARIANT        LIKE DISVARIANT,            "Layout (External Use)
      S_STATUS_ST01    TYPE SLIS_FORMNAME VALUE 'STANDARD_ST01',
      S_USER_COMMAND   TYPE SLIS_FORMNAME VALUE 'USER_COMMAND-ALV'.
DATABEGIN OF EXTAB OCCURS 0,
      FCODE LIKE RSMPE-FUNC.
DATAEND OF EXTAB.
DATA: TAB TYPE SLIS_T_EXTAB.
*-> Global variables for handling ALV functionality
DATA: ALV_DEFAULT_VARIANT    TYPE DISVARIANT-VARIANT.
DATA: ALV_KEYINFO            TYPE SLIS_KEYINFO_ALV.
DATA: ALV_VARIANT            TYPE DISVARIANT.
DATA: ALV_LAYOUT             TYPE SLIS_LAYOUT_ALV.
DATA: ALV_REPID              LIKE SY-REPID.
DATA: ALV_PRINT              TYPE SLIS_PRINT_ALV.
DATA: ALV_DETAIL_FUNC(030).
DATA: ALV_COLOURIZE_FIELDS   LIKE  MMIM_REP_PRINT-COLOR.    "n555893


*----------------------------------------------------------------------*
* initialization .
*----------------------------------------------------------------------*
INITIALIZATION .

  REFRESH: I_RESB .
  CLEAR  : I_RESB .


*----------------------------------------------------------------------*
* At Selection-screen                                                  *
*----------------------------------------------------------------------*
AT SELECTION-SCREEN.



*----------------------------------------------------------------------*
* Start-of-selection                                                   *
*----------------------------------------------------------------------*
START-OF-SELECTION.

  PERFORM EXTRACT_RESERVATION_DATA .


*----------------------------------------------------------------------*
* End-of-selection                                                     *
*----------------------------------------------------------------------*
END-OF-SELECTION.

*&---------------------------------------------------------------------*
*&      Form  EXTRACT_RESERVATION_DATA
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*  -->  p1        text
*  <--  p2        text
*----------------------------------------------------------------------*
FORM EXTRACT_RESERVATION_DATA .

  REFRESH: I_RESB, ITAB, ORD_STK. CLEAR: I_RESB, ITAB, ORD_STK .

  SELECT * INTO CORRESPONDING FIELDS OF TABLE I_RESB
           FROM RESB INNER JOIN MARC ON RESB~MANDT = MARC~MANDT
                                    AND RESB~MATNR = MARC~MATNR
                                    AND RESB~WERKS = MARC~WERKS
                     INNER JOIN MARA ON MARA~MANDT = RESB~MANDT
                                    AND MARA~MATNR = RESB~MATNR
                     INNER JOIN MAKT ON MAKT~MANDT = RESB~MANDT
                                    AND MAKT~MATNR = RESB~MATNR
          CLIENT SPECIFIED
           WHERE RESB~MANDT EQ SY-MANDT AND RESB~BDART IN S_BDART
             AND RESB~AUFNR IN S_AUFNR  AND RESB~EBELN IN S_EBELN
             AND RESB~KDAUF IN S_KDAUF  AND RESB~KDPOS IN S_KDPOS
             AND RESB~MATNR IN S_MATNR  AND RESB~BDTER IN S_BDTER
             AND RESB~SOBKZ IN S_SOBKZ  AND RESB~XLOEK EQ SPACE
             AND RESB~KZEAR EQ SPACE    AND RESB~WERKS IN S_WERKS
             AND RESB~BDMNG GT 0        AND MAKT~SPRAS EQ '1'
             AND MARC~EKGRP IN S_EKGRP  AND MARC~DISPO IN S_DISPO
             AND MARA~MATKL IN S_MATKL
           ORDER BY RESB~MATNR RESB~WERKS RESB~BDTER .
  LOOP AT I_RESB .
    MOVE I_RESB-MATNR TO ITAB-MATNR.
    MOVE I_RESB-WERKS TO ITAB-WERKS.
    COLLECT ITAB .
    CLEAR   ITAB .
  ENDLOOP .

  CLEAR: MSKA, T001L.
  SELECT * INTO CORRESPONDING FIELDS OF TABLE MTAB
           FROM MSKA INNER JOIN T001L
                             ON MSKA~MANDT = T001L~MANDT
                            AND MSKA~WERKS = T001L~WERKS
                            AND MSKA~LGORT = T001L~LGORT
                            FOR ALL ENTRIES IN ITAB
          WHERE   MSKA~MANDT  EQ SY-MANDT
            AND   MSKA~MATNR  EQ ITAB-MATNR
            AND   MSKA~WERKS  EQ ITAB-WERKS
            AND ( MSKA~KALAB  GT 0
               OR MSKA~KAINS  GT 0 )
            AND   T001L~DISKZ EQ SPACE.
  LOOP AT MTAB .
    MOVE-CORRESPONDING MTAB TO ORD_STK.
    ORD_STK-AVASTK = ORD_STK-KALAB + ORD_STK-KAINS .
    COLLECT ORD_STK.
    CLEAR   ORD_STK .
  ENDLOOP .

  LOOP AT I_RESB .
    I_RESB-OPNQTY = I_RESB-BDMNG - I_RESB-ENMNG .
    CLEAR: MSKA.
    SELECT SUM( KALAB ) INTO I_RESB-KALAB FROM MSKA CLIENT SPECIFIED
                       WHERE MANDT EQ SY-MANDT
                         AND MATNR EQ I_RESB-MATNR
                         AND WERKS EQ I_RESB-WERKS
                         AND SOBKZ EQ I_RESB-SOBKZ
                         AND VBELN EQ I_RESB-KDAUF
                         AND POSNR EQ I_RESB-KDPOS.

    CLEAR XTAB. REFRESH XTAB.
    CALL FUNCTION 'MB_ADD_PURCHASE_ORDER_QUANTITY'
      EXPORTING
        X_MATNR = I_RESB-MATNR
        X_MEINS = I_RESB-MEINS
        X_ELIKZ = SPACE
        X_LOEKZ = SPACE
      TABLES
        XTAB    = XTAB
        XWERKS  = S_WERKS.
    READ TABLE XTAB WITH KEY MATNR = I_RESB-MATNR
                             WERKS = I_RESB-WERKS BINARY SEARCH.
    IF SY-SUBRC = 0 .
      I_RESB-XMENG = XTAB-MENGE  + XTAB-MENGK.
    ENDIF .

    I_RESB-SHORTAGE = I_RESB-KALAB - I_RESB-OPNQTY .

    CLEAR: MARD.
    SELECT SUM( LABST ) SUM( INSME ) INTO (I_RESB-LABST, I_RESB-INSME ) FROM MARD CLIENT SPECIFIED
                       WHERE MANDT EQ SY-MANDT
                         AND MATNR EQ I_RESB-MATNR
                         AND WERKS EQ I_RESB-WERKS.
    CLEAR: MKOL.
    SELECT SUM( SLABS ) SUM( SINSM ) INTO (I_RESB-SLABS, I_RESB-SINSM ) FROM MKOL CLIENT SPECIFIED
                       WHERE MANDT EQ SY-MANDT
                         AND MATNR EQ I_RESB-MATNR
                         AND WERKS EQ I_RESB-WERKS.

    READ TABLE ORD_STK WITH KEY MATNR = I_RESB-MATNR
                                WERKS = I_RESB-WERKS
                                SOBKZ = I_RESB-SOBKZ
                                VBELN = I_RESB-KDAUF
                                POSNR = I_RESB-KDPOS.
    IF SY-SUBRC = 0 .
      IDX = SY-TABIX.
      MOVE ORD_STK-AVASTK        TO I_RESB-AVASTK.
      MOVE-CORRESPONDING ORD_STK TO MTAB_WA .
      MTAB_WA-AVASTK     = MTAB_WA-AVASTK - I_RESB-OPNQTY .
      IF MTAB_WA-AVASTK LT 0 .
        MTAB_WA-AVASTK = 0.
      ENDIF .
      MODIFY ORD_STK INDEX IDX FROM MTAB_WA TRANSPORTING AVASTK.
    ENDIF .
    MODIFY I_RESB .

  ENDLOOP .

  CLEAR: G_ALV_FIELDCAT .
  PERFORM SET_ALV_FIELDS_SP USING 'MATNR'       'I_RESB' '' TEXT-C01 ' '.
  PERFORM SET_ALV_FIELDS_SP USING 'MAKTX'       'I_RESB' '' TEXT-C02 ' '.
  PERFORM SET_ALV_FIELDS_SP USING 'EKGRP'       'I_RESB' '' TEXT-C03 ' '.
  PERFORM SET_ALV_FIELDS_SP USING 'BDART'       'I_RESB' '' TEXT-C04 ' '.
  PERFORM SET_ALV_FIELDS_SP USING 'AUFNR'       'I_RESB' '' TEXT-C05 ' '.
  PERFORM SET_ALV_FIELDS_SP USING 'EBELN'       'I_RESB' '' TEXT-C06 ' '.
  PERFORM SET_ALV_FIELDS_SP USING 'EBELP'       'I_RESB' '' TEXT-C07 ' '.
* PERFORM SET_ALV_FIELDS_SP USING 'EBELE'       'I_RESB' '' TEXT-C08 ' '.
  PERFORM SET_ALV_FIELDS_SP USING 'SOBKZ'       'I_RESB' '' TEXT-C09 ' '.
  PERFORM SET_ALV_FIELDS_SP USING 'KDAUF'       'I_RESB' '' TEXT-C10 ' '.
  PERFORM SET_ALV_FIELDS_SP USING 'KDPOS'       'I_RESB' '' TEXT-C11 ' '.
  PERFORM SET_ALV_FIELDS_SP USING 'BAUGR'       'I_RESB' '' TEXT-C12 ' '.
  PERFORM SET_ALV_FIELDS_SP USING 'BDTER'       'I_RESB' '' TEXT-C13 ' '.
  PERFORM SET_ALV_FIELDS_SP USING 'WERKS'       'I_RESB' '' TEXT-C14 ' '.
  PERFORM SET_ALV_FIELDS_SP USING 'BDMNG'       'I_RESB' '' TEXT-C15 ' '.
  PERFORM SET_ALV_FIELDS_SP USING 'ENMNG'       'I_RESB' '' TEXT-C16 ' '.
  PERFORM SET_ALV_FIELDS_SP USING 'OPNQTY'      'I_RESB' '' TEXT-C17 ' '.
  PERFORM SET_ALV_FIELDS_SP USING 'SHORTAGE'    'I_RESB' '' TEXT-C18 'X'.
  PERFORM SET_ALV_FIELDS_SP USING 'KALAB'       'I_RESB' '' TEXT-C24 'X'.
  PERFORM SET_ALV_FIELDS_SP USING 'KAINS'       'I_RESB' '' TEXT-C25 'X'.
  PERFORM SET_ALV_FIELDS_SP USING 'AVASTK'      'I_RESB' '' TEXT-C26 'X'.
  PERFORM SET_ALV_FIELDS_SP USING 'XMENG'       'I_RESB' '' TEXT-C27 'X'.
  PERFORM SET_ALV_FIELDS_SP USING 'MEINS'       'I_RESB' '' TEXT-C19 ' '.
  PERFORM SET_ALV_FIELDS_SP USING 'LABST'       'I_RESB' '' TEXT-C20 'X'.
  PERFORM SET_ALV_FIELDS_SP USING 'SLABS'       'I_RESB' '' TEXT-C21 'X'.
  PERFORM SET_ALV_FIELDS_SP USING 'INSME'       'I_RESB' '' TEXT-C22 'X'.
  PERFORM SET_ALV_FIELDS_SP USING 'SINSM'       'I_RESB' '' TEXT-C23 'X'.


  PERFORM LAYOUT_BUILD   USING G_ALV_LAYOUT .

  CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
     EXPORTING
        I_CALLBACK_PROGRAM          = SY-CPROG
        IS_LAYOUT                   = G_ALV_LAYOUT
*       i_callback_html_top_of_page = 'ALV_TOP_OF_PAGE'
        I_CALLBACK_PF_STATUS_SET    = S_STATUS_ST01
        I_DEFAULT                   = 'X'
        I_SAVE                      = 'X'
        I_CALLBACK_USER_COMMAND     = S_USER_COMMAND
        IT_FIELDCAT                 = G_ALV_FIELDCAT[]
        IT_EVENTS                   = G_ALV_EVENT
     TABLES
        T_OUTTAB                    = I_RESB[].

ENDFORM.                    " EXTRACT_RESERVATION_DATA

*&---------------------------------------------------------------------*
*&      Form  STANDARD_ST01
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*      -->EXTAB      text
*----------------------------------------------------------------------*
FORM STANDARD_ST01 USING EXTAB TYPE SLIS_T_EXTAB.

* contain all fcode from ALV *
  DELETE EXTAB WHERE FCODE = '&RNT_PREV'.
  DELETE EXTAB WHERE FCODE = '&LFO'.
  DELETE EXTAB WHERE FCODE = '&NFO'.
  DELETE EXTAB WHERE FCODE = '&RNT'.
  SET PF-STATUS 'ST01'.
  SET TITLEBAR  'ST01'.

ENDFORM.                    "standard_st01


*&---------------------------------------------------------------------*
*&      Form  USER_COMMAND-ALV
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*      -->R_UCOMM      text
*      -->RS_SELFIELD  text
*----------------------------------------------------------------------*
FORM USER_COMMAND-ALV USING R_UCOMM LIKE SY-UCOMM
                  RS_SELFIELD TYPE SLIS_SELFIELD.

  DATA: FELD(10TYPE C.
* table rs_selfield store the information of cursor and table index.
  RS_SELFIELD-REFRESH = 'X'.

  CASE R_UCOMM.
    WHEN 'PICK'.
      READ TABLE I_RESB INDEX RS_SELFIELD-TABINDEX.
      IF SY-SUBRC = 0.
        CASE RS_SELFIELD-FIELDNAME.
          WHEN 'AUFNR'.
            IF NOT I_RESB-AUFNR IS INITIAL .
              CLEAR: R_UCOMM .
              SET PARAMETER ID 'ANR' FIELD I_RESB-AUFNR .
              CALL TRANSACTION 'CO03' AND SKIP FIRST SCREEN.
            ENDIF .

          WHEN 'MATNR' OR 'MAKTX'.
            CLEAR: R_UCOMM .
            SET PARAMETER ID 'MAT' FIELD I_RESB-MATNR .
            SET PARAMETER ID 'WRK' FIELD I_RESB-WERKS .
            CALL TRANSACTION 'MM03' AND SKIP FIRST SCREEN.

          WHEN 'BAUGR'.
            CLEAR: R_UCOMM .
            SET PARAMETER ID 'MAT' FIELD I_RESB-BAUGR .
            SET PARAMETER ID 'WRK' FIELD I_RESB-WERKS .
            CALL TRANSACTION 'MM03' AND SKIP FIRST SCREEN.

          WHEN 'EBELN' OR 'EBELP'.
            IF NOT I_RESB-EBELN IS INITIAL .
              CLEAR: R_UCOMM .
              SET PARAMETER ID 'BES' FIELD I_RESB-EBELN.
              CALL TRANSACTION 'ME23N' AND SKIP FIRST SCREEN.
            ENDIF .

          WHEN 'KDAUF' OR 'KDPOS'.
            SET PARAMETER ID 'AUN' FIELD I_RESB-KDAUF .
            CALL TRANSACTION 'VA03' AND SKIP FIRST SCREEN.

          WHEN 'BDTER' OR 'BDMNG' OR 'ENMNG' OR 'OPNQTY' OR 'SHORTAGE'.
            SET PARAMETER ID 'MAT' FIELD I_RESB-MATNR .
            SET PARAMETER ID 'WRK' FIELD I_RESB-WERKS .
            CALL TRANSACTION 'MD04' AND SKIP FIRST SCREEN.

          WHEN OTHERS .
            SET PARAMETER ID 'MAT' FIELD I_RESB-MATNR .
            CALL TRANSACTION 'MMBE' AND SKIP FIRST SCREEN.
        ENDCASE .
      ENDIF .
    WHEN 'DISPL'.

  ENDCASE .
ENDFORM.                    "USER_COMMAND-ALV