REPORT ZPPPDR001  NO STANDARD PAGE HEADING MESSAGE-ID MG .

*----------------------------------------------------------------------*
*                                                                      *
* Program     :  ZPPPDR001                                             *
* Author      :  Patrick Song                                          *
* Date        :  Aug 10, 2008                                          *
* 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.
*----------------------------------------------------------------------*
* Constants                                                            *
*----------------------------------------------------------------------*

*----------------------------------------------------------------------*
* Data dictionary tables and structures                                *
*----------------------------------------------------------------------*
TABLES: AFKO.          " Order header data PP orders
TABLES: AFPO.          " Order item
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: MSLB.          " Special Stocks with Vendor
TABLES: PLAF.          " Planned order
TABLES: RESB.          " Reservation/dependent requirements
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
TABLES: CAUFV.         " Production order table
TABLES: MSEG.          " Material doc. detail

*----------------------------------------------------------------------*
* Select options and parameters                                        *
*----------------------------------------------------------------------*
SELECTION-SCREEN BEGIN OF BLOCK B1 WITH FRAME TITLE TEXT-F01.
SELECT-OPTIONS: S_AUFNR FOR RESB-AUFNR  MEMORY ID ANR."MATCHCODE OBJECT ORDER.
SELECT-OPTIONS: S_MATNR FOR RESB-MATNR  MATCHCODE OBJECT MAT MEMORY ID MAT.
SELECT-OPTIONS: S_MTART FOR MARA-MTART  DEFAULT 'ROH'.
SELECT-OPTIONS: S_BDTER FOR RESB-BDTER  DEFAULT SY-DATUM.
SELECT-OPTIONS: S_WERKS FOR T001W-WERKS DEFAULT '2001' OBLIGATORY.
*PARAMETERS   : P_WERKS LIKE T001W-WERKS DEFAULT '2001' OBLIGATORY.
SELECT-OPTIONS: S_DISPO FOR MARC-DISPO MEMORY ID DGR.
SELECT-OPTIONS: S_EKGRP FOR MARC-EKGRP MEMORY ID EKG.
SELECT-OPTIONS: S_EBELN FOR EKPO-EBELN .
SELECT-OPTIONS: S_EBELP FOR EKPO-EBELP .
PARAMETERS    : P_EXOPN AS CHECKBOX DEFAULT 'X'"Exclude zero open qty.
PARAMETERS    : P_OUTST AS CHECKBOX DEFAULT 'X'.
SELECTION-SCREEN SKIP .
SELECTION-SCREEN BEGIN OF LINE.
PARAMETERS    : P_PRDCHK RADIOBUTTON GROUP GRP.
SELECTION-SCREEN COMMENT 04(15TEXT-AB1.
PARAMETERS    : P_POCHK  RADIOBUTTON GROUP GRP.
SELECTION-SCREEN COMMENT 22(16TEXT-AB2.
PARAMETERS    : P_PLAN   RADIOBUTTON GROUP GRP.
SELECTION-SCREEN COMMENT 41(20TEXT-AB4.
PARAMETERS    : P_ALL    RADIOBUTTON GROUP GRP.
SELECTION-SCREEN COMMENT 64(17TEXT-AB3.
SELECTION-SCREEN END OF LINE.
SELECTION-SCREEN BEGIN OF LINE.
PARAMETERS    : P_DET    RADIOBUTTON GROUP GRP DEFAULT 'X'.
SELECTION-SCREEN COMMENT 04(40TEXT-AB5.
SELECTION-SCREEN END OF LINE.

SELECTION-SCREEN END OF BLOCK B1.

SELECTION-SCREEN BEGIN OF BLOCK B2 WITH FRAME TITLE TEXT-F02.
SELECTION-SCREEN END OF BLOCK B2.

SELECTION-SCREEN BEGIN OF BLOCK B3 WITH FRAME TITLE TEXT-F03.
SELECTION-SCREEN END OF BLOCK B3.

SELECTION-SCREEN BEGIN OF BLOCK B4 WITH FRAME TITLE TEXT-F04.
PARAMETERS    : P_DAT00 LIKE MDEZ-DAT00 OBLIGATORY DEFAULT SY-DATUM.
PARAMETERS    : P_DAY   RADIOBUTTON GROUP RAD1.
PARAMETERS    : P_WEEK  RADIOBUTTON GROUP RAD1 DEFAULT 'X'.
PARAMETERS    : P_MNTH  RADIOBUTTON GROUP RAD1.
SELECTION-SCREEN END OF BLOCK B4.

SELECTION-SCREEN BEGIN OF BLOCK B5 WITH FRAME TITLE TEXT-F05.
PARAMETERS    : P_COLT RADIOBUTTON GROUP DPL  DEFAULT 'X' .
PARAMETERS    : P_DETL RADIOBUTTON GROUP DPL.
SELECTION-SCREEN END OF BLOCK B5.
*--------------------------------------------------------------------*
* Constants                                                          *
*--------------------------------------------------------------------*
CONSTANTS: TRUE(001)   TYPE C VALUE  '0'.
CONSTANTS: FALSE(001)  TYPE C VALUE  '1'.
CONSTANTS: D_INTER     TYPE I VALUE  '69'.
CONSTANTS: TCODE       LIKE T450N-TCODE VALUE 'MD04'.
CONSTANTS: ANZML(002)  TYPE C   VALUE 'B7'  .
CONSTANTS: LFRML(002)  TYPE C   VALUE 'L7'  .
CONSTANTS: CHAR1(001)  TYPE C   VALUE '1'   .
CONSTANTS: XFLAG(001)  TYPE C   VALUE 'X'   .

*----------------------------------------------------------------------*
* Internal tables and field strings                                    *
*----------------------------------------------------------------------*

TYPES:  BEGIN OF WTAB_TYPE,                   "
         MATNR        LIKE   MARA-MATNR,   " Material Number
         MAKTX        LIKE   MAKT-MAKTX,   " Material description
         WERKS        LIKE   MARD-WERKS,   " Plant
         DAT00        LIKE   MDEZ-DAT00,   " Date
         OSQTY        LIKE   MDEZ-MNG01,   " WO/PO oustanding qty
END OF WTAB_TYPE.

TYPES:  BEGIN OF ITAB_TYPE,
         MATNR        LIKE   MARA-MATNR,   " Material Number
         MAKTX        LIKE   MAKT-MAKTX,   " Material description
         WERKS        LIKE   MARD-WERKS,   " Plant
         BACK_LOGQTY  LIKE   MDEZ-MNG01,   " Backlog qty
         OSQTY01      LIKE   MDEZ-MNG01,   " WO/PO oustanding qty
         OSQTY02      LIKE   MDEZ-MNG01,   " WO/PO oustanding qty
         OSQTY03      LIKE   MDEZ-MNG01,   " WO/PO oustanding qty
         OSQTY04      LIKE   MDEZ-MNG01,   " WO/PO oustanding qty
         OSQTY05      LIKE   MDEZ-MNG01,   " WO/PO oustanding qty
         OSQTY06      LIKE   MDEZ-MNG01,   " WO/PO oustanding qty
         OSQTY07      LIKE   MDEZ-MNG01,   " WO/PO oustanding qty
         OSQTY08      LIKE   MDEZ-MNG01,   " WO/PO oustanding qty
         OSQTY09      LIKE   MDEZ-MNG01,   " WO/PO oustanding qty
         OSQTY10      LIKE   MDEZ-MNG01,   " WO/PO oustanding qty
         OSQTY11      LIKE   MDEZ-MNG01,   " WO/PO oustanding qty
         OSQTY12      LIKE   MDEZ-MNG01,   " WO/PO oustanding qty
         OSQTY13      LIKE   MDEZ-MNG01,   " WO/PO oustanding qty
         OSQTY14      LIKE   MDEZ-MNG01,   " WO/PO oustanding qty
         OSQTY15      LIKE   MDEZ-MNG01,   " WO/PO oustanding qty
         OSQTY16      LIKE   MDEZ-MNG01,   " WO/PO oustanding qty
         OSQTY17      LIKE   MDEZ-MNG01,   " WO/PO oustanding qty
         OSQTY18      LIKE   MDEZ-MNG01,   " WO/PO oustanding qty
         OSQTY19      LIKE   MDEZ-MNG01,   " WO/PO oustanding qty
         OSQTY20      LIKE   MDEZ-MNG01,   " WO/PO oustanding qty
         OSQTY21      LIKE   MDEZ-MNG01,   " WO/PO oustanding qty
         OSQTY22      LIKE   MDEZ-MNG01,   " WO/PO oustanding qty
         OSQTY23      LIKE   MDEZ-MNG01,   " WO/PO oustanding qty
         OSQTY24      LIKE   MDEZ-MNG01,   " WO/PO oustanding qty
         OSQTY25      LIKE   MDEZ-MNG01,   " WO/PO oustanding qty
         OSQTY26      LIKE   MDEZ-MNG01,   " WO/PO oustanding qty
         OSQTY27      LIKE   MDEZ-MNG01,   " WO/PO oustanding qty
         OSQTY28      LIKE   MDEZ-MNG01,   " WO/PO oustanding qty
         OSQTY29      LIKE   MDEZ-MNG01,   " WO/PO oustanding qty
         OSQTY30      LIKE   MDEZ-MNG01,   " WO/PO oustanding qty
         OSQTY31      LIKE   MDEZ-MNG01,   " WO/PO oustanding qty
         OVER_QTY     LIKE   MDEZ-MNG01,   " Over qty
         ICON(004),
         SELK(001),
END OF ITAB_TYPE.

DATA : PTAB TYPE ITAB_TYPE OCCURS 0 WITH HEADER LINE.
DATA : WTAB TYPE WTAB_TYPE OCCURS 0 WITH HEADER LINE.

DATABEGIN OF MTAB OCCURS 0.
DATA: MATNR  LIKE MARA-MATNR.
DATA: MAKTX  LIKE MAKT-MAKTX.
DATA: WERKS  LIKE MARC-WERKS.
DATA: LABST  LIKE MARD-LABST .  " Standard Stock
DATA: UMLME  LIKE MARD-UMLME.
DATA: INSME  LIKE MARD-INSME.   " Stock in Quality Inspection
DATA: SLABS  LIKE MKOL-SLABS.
DATA: LBLAB  LIKE MSLB-LBLAB .  " Valuated Unrestricted-Use Stock
DATA: AVASTK LIKE MARD-LABST.   " Available Stock
DATAEND OF MTAB.

DATABEGIN OF I_RESB OCCURS 0 .
        INCLUDE STRUCTURE RESB .
DATA: SELK(001).                  " Selected Fields
DATAICON(004).
DATAEND   OF I_RESB .

DATABEGIN OF ITAB OCCURS 0 .
        INCLUDE STRUCTURE RESB .
DATA: MAKTX    LIKE MAKT-MAKTX.   " Component description
DATA: MTART    LIKE MARA-MTART.   " Material Type
DATA: OPNQTY   LIKE RESB-BDMNG.   " Qty Open
DATA: SHORTAGE LIKE RESB-ENMNG.   " Material Shortage
DATA: AVASTK   LIKE MARD-LABST.   " Available Stock
DATA: XMENG    LIKE RESB-ENMNG.   " Outstanding PO
DATA: BDMNG1   LIKE RESB-BDMNG.   " Total Req'd Qty => Reservation
DATA: LABST    LIKE MARD-LABST.   " Standard Stock
DATA: UMLME    LIKE MARD-UMLME.   " Stock in transfer
DATA: INSME    LIKE MARD-INSME.   " Stock in Quality Inspection
DATA: SLABS    LIKE MKOL-SLABS .  " Consignment Stock
DATA: LBLAB    LIKE MSLB-LBLAB .  " Valuated Unrestricted-Use Stock
DATA: BACK_LOGQTY LIKE MDEZ-MNG01." Backlog qty
DATA: OSQTY01  LIKE MDEZ-MNG01.   " WO/PO oustanding qty
DATA: OSQTY02  LIKE MDEZ-MNG01.   " WO/PO oustanding qty
DATA: OSQTY03  LIKE MDEZ-MNG01.   " WO/PO oustanding qty
DATA: OSQTY04  LIKE MDEZ-MNG01.   " WO/PO oustanding qty
DATA: OSQTY05  LIKE MDEZ-MNG01.   " WO/PO oustanding qty
DATA: OSQTY06  LIKE MDEZ-MNG01.   " WO/PO oustanding qty
DATA: OSQTY07  LIKE MDEZ-MNG01.   " WO/PO oustanding qty
DATA: OSQTY08  LIKE MDEZ-MNG01.   " WO/PO oustanding qty
DATA: OSQTY09  LIKE MDEZ-MNG01.   " WO/PO oustanding qty
DATA: OSQTY10  LIKE MDEZ-MNG01.   " WO/PO oustanding qty
DATA: OSQTY11  LIKE MDEZ-MNG01.   " WO/PO oustanding qty
DATA: OSQTY12  LIKE MDEZ-MNG01.   " WO/PO oustanding qty
DATA: OSQTY13  LIKE MDEZ-MNG01.   " WO/PO oustanding qty
DATA: OSQTY14  LIKE MDEZ-MNG01.   " WO/PO oustanding qty
DATA: OSQTY15  LIKE MDEZ-MNG01.   " WO/PO oustanding qty
DATA: OSQTY16  LIKE MDEZ-MNG01.   " WO/PO oustanding qty
DATA: OSQTY17  LIKE MDEZ-MNG01.   " WO/PO oustanding qty
DATA: OSQTY18  LIKE MDEZ-MNG01.   " WO/PO oustanding qty
DATA: OSQTY19  LIKE MDEZ-MNG01.   " WO/PO oustanding qty
DATA: OSQTY20  LIKE MDEZ-MNG01.   " WO/PO oustanding qty
DATA: OSQTY21  LIKE MDEZ-MNG01.   " WO/PO oustanding qty
DATA: OSQTY22  LIKE MDEZ-MNG01.   " WO/PO oustanding qty
DATA: OSQTY23  LIKE MDEZ-MNG01.   " WO/PO oustanding qty
DATA: OSQTY24  LIKE MDEZ-MNG01.   " WO/PO oustanding qty
DATA: OSQTY25  LIKE MDEZ-MNG01.   " WO/PO oustanding qty
DATA: OSQTY26  LIKE MDEZ-MNG01.   " WO/PO oustanding qty
DATA: OSQTY27  LIKE MDEZ-MNG01.   " WO/PO oustanding qty
DATA: OSQTY28  LIKE MDEZ-MNG01.   " WO/PO oustanding qty
DATA: OSQTY29  LIKE MDEZ-MNG01.   " WO/PO oustanding qty
DATA: OSQTY30  LIKE MDEZ-MNG01.   " WO/PO oustanding qty
DATA: OSQTY31  LIKE MDEZ-MNG01.   " WO/PO oustanding qty
DATA: OVER_QTY LIKE MDEZ-MNG01.   " Over qty
DATA: SELK(001).                  " Selected Fields
DATAICON(004).
DATAEND   OF ITAB .

* define internal table for collective
DATABEGIN OF COLLECT_ITAB OCCURS 0 .
DATA: MATNR    LIKE RESB-MATNR.
DATA: MAKTX    LIKE MAKT-MAKTX.   " Component description
DATA: BDART    LIKE RESB-BDART.
DATA: MTART    LIKE MARA-MTART.   " Material Type
DATA: EKGRP    LIKE RESB-EKGRP.
DATA: MEINS    LIKE RESB-MEINS.
DATA: WERKS    LIKE RESB-WERKS.
DATA: BDMNG    LIKE RESB-BDMNG.
DATA: ENMNG    LIKE RESB-ENMNG.
DATA: OPNQTY   LIKE RESB-BDMNG.   " Qty Open
DATA: SHORTAGE LIKE RESB-ENMNG.   " Material Shortage
DATA: AVASTK   LIKE MARD-LABST.   " Available Stock
DATA: XMENG    LIKE RESB-ENMNG.   " Outstanding PO
DATA: BDMNG1   LIKE RESB-BDMNG.   " Total Req'd Qty => Reservation
DATA: LABST    LIKE MARD-LABST.   " Standard Stock
DATA: UMLME    LIKE MARD-UMLME.   " Stock in transfer
DATA: INSME    LIKE MARD-INSME.   " Stock in Quality Inspection
DATA: SLABS    LIKE MKOL-SLABS .  " Consignment Stock
DATA: LBLAB    LIKE MSLB-LBLAB .  " Valuated Unrestricted-Use Stock
DATA: BACK_LOGQTY LIKE MDEZ-MNG01." Backlog qty
DATA: OSQTY01  LIKE MDEZ-MNG01.   " WO/PO oustanding qty
DATA: OSQTY02  LIKE MDEZ-MNG01.   " WO/PO oustanding qty
DATA: OSQTY03  LIKE MDEZ-MNG01.   " WO/PO oustanding qty
DATA: OSQTY04  LIKE MDEZ-MNG01.   " WO/PO oustanding qty
DATA: OSQTY05  LIKE MDEZ-MNG01.   " WO/PO oustanding qty
DATA: OSQTY06  LIKE MDEZ-MNG01.   " WO/PO oustanding qty
DATA: OSQTY07  LIKE MDEZ-MNG01.   " WO/PO oustanding qty
DATA: OSQTY08  LIKE MDEZ-MNG01.   " WO/PO oustanding qty
DATA: OSQTY09  LIKE MDEZ-MNG01.   " WO/PO oustanding qty
DATA: OSQTY10  LIKE MDEZ-MNG01.   " WO/PO oustanding qty
DATA: OSQTY11  LIKE MDEZ-MNG01.   " WO/PO oustanding qty
DATA: OSQTY12  LIKE MDEZ-MNG01.   " WO/PO oustanding qty
DATA: OSQTY13  LIKE MDEZ-MNG01.   " WO/PO oustanding qty
DATA: OSQTY14  LIKE MDEZ-MNG01.   " WO/PO oustanding qty
DATA: OSQTY15  LIKE MDEZ-MNG01.   " WO/PO oustanding qty
DATA: OSQTY16  LIKE MDEZ-MNG01.   " WO/PO oustanding qty
DATA: OSQTY17  LIKE MDEZ-MNG01.   " WO/PO oustanding qty
DATA: OSQTY18  LIKE MDEZ-MNG01.   " WO/PO oustanding qty
DATA: OSQTY19  LIKE MDEZ-MNG01.   " WO/PO oustanding qty
DATA: OSQTY20  LIKE MDEZ-MNG01.   " WO/PO oustanding qty
DATA: OSQTY21  LIKE MDEZ-MNG01.   " WO/PO oustanding qty
DATA: OSQTY22  LIKE MDEZ-MNG01.   " WO/PO oustanding qty
DATA: OSQTY23  LIKE MDEZ-MNG01.   " WO/PO oustanding qty
DATA: OSQTY24  LIKE MDEZ-MNG01.   " WO/PO oustanding qty
DATA: OSQTY25  LIKE MDEZ-MNG01.   " WO/PO oustanding qty
DATA: OSQTY26  LIKE MDEZ-MNG01.   " WO/PO oustanding qty
DATA: OSQTY27  LIKE MDEZ-MNG01.   " WO/PO oustanding qty
DATA: OSQTY28  LIKE MDEZ-MNG01.   " WO/PO oustanding qty
DATA: OSQTY29  LIKE MDEZ-MNG01.   " WO/PO oustanding qty
DATA: OSQTY30  LIKE MDEZ-MNG01.   " WO/PO oustanding qty
DATA: OSQTY31  LIKE MDEZ-MNG01.   " WO/PO oustanding qty
DATA: OVER_QTY LIKE MDEZ-MNG01.   " Over qty
DATA: SELK(001).                  " Selected Fields
DATAICON(004).
DATAEND   OF COLLECT_ITAB .

DATA:  BEGIN OF DATE_TAB OCCURS 0."Column heading for date displaying
DATA:  DAT00 LIKE MDEZ-DAT00.     "Date
DATA:  WEEK  LIKE SCAL-WEEK.      "Week
DATA:  MONTH LIKE S031-SPMON.     "Month
DATA:  END OF DATE_TAB.

DATA: IMARD LIKE MARD OCCURS 0 WITH HEADER LINE.
DATA: IMKOL LIKE MKOL OCCURS 0 WITH HEADER LINE.

*> bom explosion data store
DATA: I_BOM    LIKE STPOX  OCCURS 0 WITH HEADER LINE.
DATA: I_MATCAT LIKE CSCMAT OCCURS 0 WITH HEADER LINE.

DATA:  BEGIN OF DUMMY OCCURS 1,
         DUMMY,
       END OF DUMMY.

DATA:  MT61D           LIKE MT61D,
       CM61X           LIKE CM61X,
       CM61W           LIKE CM61W,
       CM61M           LIKE CM61M,
       MTCOM           LIKE MTCOM,
       MTCOR           LIKE MTCOR,
       MASEL           LIKE MASEL.

DATA:  MDKP            LIKE MDKP,
       MDKPS           LIKE MDKP,
       MDST            LIKE MDST,
       MDSTA           LIKE MDSTA,
       MDPSX           LIKE MDPS   OCCURS 0 WITH HEADER LINE,
       MDEZX           LIKE MDEZ   OCCURS 0 WITH HEADER LINE,
       MDSUX           LIKE MDSU   OCCURS 0 WITH HEADER LINE,
       MDINX           LIKE MDIN   OCCURS 0 WITH HEADER LINE.

DATA:  MDEZX_MLINE     LIKE SY-TABIX,
       MDSUX_MLINE     LIKE SY-TABIX,
       MDSUX_BLINE     LIKE SY-TABIX.

*--> 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.
*--> Kennzeichen Mengenabw. Stahl, Wirkst.
DATA: KZWSO LIKE MARA-KZWSM.

*--> Tabelle der Reservierungen
DATABEGIN OF XTAB1 OCCURS 10,        "Tabelle der Reservierungen
         WERKS LIKE RESB-WERKS,
         LGORT LIKE RESB-LGORT,
         CHARG LIKE RESB-CHARG,
         MATNR LIKE RESB-MATNR,
         BDMNG LIKE RESB-BDMNG,
         BDMNS LIKE RESB-BDMNG,
         ERFME LIKE RESB-ERFME,                      "ALRK014884 SW
         ERFMG LIKE RESB-ERFMG,                      "ALRK014884 SW
       END OF XTAB1.

*--> Hilfsfelder f榛?die Sammelanzeige aktuelle BBLs
DATABEGIN OF MATOV.
DATA: WERKS(004TYPE C.           "Werk aus dem Einstiegsbild
DATA: INITF(001TYPE C.           "Initialisierung wurde durchgef榛╮t
DATA: DISVI(001TYPE C.           "Disponenten-Feinsel. sichtbar
DATA: LIFVI(001TYPE C.           "Lieferanten-Feinsel. sichtbar
DATA: FLIVI(001TYPE C.           "Fert.Linien-Feinsel. sichtbar
DATA: MODUS(001TYPE C.           "Materialdaten Ermittelungsmodus
DATA: ERROR(001TYPE C.           "Fehler beim Ermitteln ABBL
DATA: DSPER(001TYPE C.           "Ausgabe von Fehlern: 'X', wenn ja
DATA: REFRE(001TYPE C.           "Auffrischmodus f榛?die ABBL
DATAEND OF MATOV.

* data declaration for times recorded
DATA:  V_TIMES  TYPE P.

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,
      ST_EVENTS      TYPE SLIS_T_EVENT,          "event header
*     s_default(001) type c,
*     s_exit(001)    type c,
*     st_variant     like disvariant,
      CODE           LIKE DISVARIANT-HANDLE,
      S_VARIANT      LIKE DISVARIANT,
      S_STATUS       TYPE SLIS_FORMNAME VALUE 'STANDARD_ST01',
      S_STATUS_CP    TYPE SLIS_FORMNAME VALUE 'STANDARD_ST02',
      S_USER_COMMAND TYPE SLIS_FORMNAME VALUE 'USER_COMMAND-ALV',
      S_USER_COMM_SO TYPE SLIS_FORMNAME VALUE 'USER_COMM_SO-ALV',
      S_USER_COMM_CP TYPE SLIS_FORMNAME VALUE 'USER_COMM_CP-ALV',
      S_USER_COMDTL  TYPE SLIS_FORMNAME VALUE 'USER_COMDTL-ALV'.

DATA  : BEGIN OF EXTAB OCCURS 0,
        FCODE LIKE RSMPE-FUNC.
DATA  : END OF EXTAB.

DATA  : TAB TYPE SLIS_T_EXTAB.
RANGES: XBDART FOR RESB-BDART .

DATA  : BEGIN OF BOM_MAT OCCURS 0 .
DATA  : MATNR LIKE MARC-MATNR .
DATA  : WERKS LIKE MARC-WERKS .
DATA  : END   OF BOM_MAT .


DATA: TOPMAT  LIKE MC29S   OCCURS 0 WITH HEADER LINE .
DATA: WULTB   LIKE STPOV   OCCURS 0 WITH HEADER LINE .
DATA: EQUICAT LIKE CSCEQUI OCCURS 0 WITH HEADER LINE .
DATA: KNDCAT  LIKE CSCKND  OCCURS 0 WITH HEADER LINE .
DATA: MATCAT  LIKE CSCMAT  OCCURS 0 WITH HEADER LINE .
DATA: STDCAT  LIKE CSCSTD  OCCURS 0 WITH HEADER LINE .
DATA: TPLCAT  LIKE CSCTPL  OCCURS 0 WITH HEADER LINE .
DATA: CSCMAT  LIKE CSCMAT  OCCURS 0 WITH HEADER LINE .

DATABEGIN OF SO_ITAB OCCURS 0,
         WERKS     LIKE   VBAP-WERKS,   " PLANT
         VBELN     LIKE   VBAK-VBELN,   " DOCUMENT
         POSNR     LIKE   VBAP-POSNR,   " POSITION
         BSTNK     LIKE   VBAK-BSTNK,   " Customer PO no
         VGBEL     LIKE   VBAP-VGBEL,   " QUOTATION
         VGPOS     LIKE   VBAP-VGPOS,   " POSITION
         KUNNR     LIKE   VBAK-KUNNR,   " CUSTOMER
         NAME1     LIKE   KNA1-NAME1,   " CUSTOMER NAME
         MATNR     LIKE   VBAP-MATNR,   " MATERIAL
         STLAN     LIKE   MAST-STLAN,   " BOM USAGE
         MAKTX     LIKE   MAKT-MAKTX,   " DESCRIPTION
         ETTYP     LIKE   VBEP-ETTYP,   " MRP
         KWMENG    LIKE   VBAP-KWMENG,  " ORDER QTY
         BMENG     LIKE   VBEP-BMENG,   " CONFIRMED QTY
         SHIPPED   LIKE   VBAP-KWMENG,  " SHIPPED QTY
         OUT_QTY   LIKE   VBAP-KWMENG,  " OUTSTANDING QTY
         VRKME     LIKE   VBEP-VRKME,   " UNIT
         EDATU     LIKE   VBEP-EDATU,   " NEXT DELIVERY DATE
         VKORG     LIKE   VBAK-VKORG,   " SALES ORG.
         VTWEG     LIKE   VBAK-VTWEG,   " DIS. CHANNEL
         AUDAT     LIKE   VBAK-AUDAT,   " DOCUMENT DATE
         VDATU     LIKE   VBAK-VDATU,   " DELIVERY DATE
         VKBUR     LIKE   VBAK-VKBUR,   " SALES OFFICE
         VSTEL     LIKE   VBAP-VSTEL,   " SHIPPING POINT
         IHREZ     LIKE   VBAK-IHREZ,
         NAME2     LIKE   KNA1-NAME1,
         SELK(001).
DATAEND   OF SO_ITAB .

DATA:  L_VBELN LIKE VBAK-VBELN .

DATA:  TMP_VBTYP   LIKE   VBAK-VBTYP.  " DOCUMENT CATEGORY
DATA:  VBFA_ITAB   LIKE   VBFA OCCURS 0 WITH HEADER LINE"get_ship_info
DATA:  VBFA_ITAB_A LIKE   VBFA OCCURS 0 WITH HEADER LINE"get_ship_info

*----------------------------------------------------------------------*
* Global program variables                                             *
*----------------------------------------------------------------------*

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

  REFRESH: DATE_TAB, DUMMY, ITAB .
  CLEAR  : DATE_TAB, DUMMY, ITAB .

  S_REPID = SY-REPID.

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

*----------------------------------------------------------------------*
* Start-of-selection                                                   *
*----------------------------------------------------------------------*
START-OF-SELECTION.
  PERFORM DATE_RANGE_BUILD .
  PERFORM PREPARE_ALV_FIELDS.
  PERFORM EXTRACT_DATA .
  PERFORM GET_STOCK_LIST .
  PERFORM ITAB_BUILD.
  PERFORM DISPLAY_ALV_RESULT .

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

 

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

  DATA:FLDNAME(007)   TYPE C.
  DATA:V_DATEFLD(015TYPE C.
  DATA:COUNT_NO(002)  TYPE N.

  CLEAR  : G_ALV_FIELDCAT .

  IF NOT P_COLT IS INITIAL .
    PERFORM SET_ALV_FIELDS USING 'MATNR'       'COLLECT_ITAB' '' TEXT-C10.
    PERFORM SET_ALV_FIELDS USING 'MAKTX'       'COLLECT_ITAB' '' TEXT-B03.
    PERFORM SET_ALV_FIELDS USING 'MTART'       'COLLECT_ITAB' '' TEXT-C32.
    PERFORM SET_ALV_FIELDS USING 'BDART'       'COLLECT_ITAB' '' TEXT-C33.
    PERFORM SET_ALV_FIELDS USING 'EKGRP'       'COLLECT_ITAB' '' TEXT-C02.
    PERFORM SET_ALV_FIELDS USING 'WERKS'       'COLLECT_ITAB' '' TEXT-C31.
    PERFORM SET_ALV_FIELDS USING 'BDMNG'       'COLLECT_ITAB' '' TEXT-C12.
    PERFORM SET_ALV_FIELDS USING 'ENMNG'       'COLLECT_ITAB' '' TEXT-C13.
    PERFORM SET_ALV_FIELDS USING 'MEINS'       'COLLECT_ITAB' '' TEXT-C11.
    PERFORM SET_ALV_FIELDS USING 'OPNQTY'      'COLLECT_ITAB' '' TEXT-C14.
    PERFORM SET_ALV_FIELDS USING 'AVASTK'      'COLLECT_ITAB' '' TEXT-C19.
    PERFORM SET_ALV_FIELDS USING 'ICON'        'COLLECT_ITAB' '' TEXT-C27.
    PERFORM SET_ALV_FIELDS_SP USING 'SHORTAGE' 'COLLECT_ITAB' '' TEXT-C20  'X'.
    PERFORM SET_ALV_FIELDS USING 'LABST'       'COLLECT_ITAB' '' TEXT-C15.
    PERFORM SET_ALV_FIELDS USING 'SLABS'       'COLLECT_ITAB' '' TEXT-C24.
    PERFORM SET_ALV_FIELDS USING 'UMLME'       'COLLECT_ITAB' '' TEXT-C16.
    PERFORM SET_ALV_FIELDS USING 'INSME'       'COLLECT_ITAB' '' TEXT-C17.
    PERFORM SET_ALV_FIELDS USING 'LBLAB'       'COLLECT_ITAB' '' TEXT-C34.
    PERFORM SET_ALV_FIELDS USING 'XMENG'       'COLLECT_ITAB' '' TEXT-C18.
    PERFORM SET_ALV_FIELDS USING 'BDMNG1'      'COLLECT_ITAB' '' TEXT-C21.
  ELSE.
    PERFORM SET_ALV_FIELDS USING 'MATNR'       'ITAB' '' TEXT-C10.
    PERFORM SET_ALV_FIELDS USING 'MAKTX'       'ITAB' '' TEXT-B03.
    IF NOT P_ALL IS INITIAL .
      PERFORM SET_ALV_FIELDS USING 'AUFNR'     'ITAB' '' TEXT-C05.
      PERFORM SET_ALV_FIELDS USING 'EBELN'     'ITAB' '' TEXT-B14.
      PERFORM SET_ALV_FIELDS USING 'EBELP'     'ITAB' '' TEXT-B15.
      PERFORM SET_ALV_FIELDS USING 'EBELE'     'ITAB' '' TEXT-B16.
    ELSEIF NOT P_POCHK IS INITIAL .
      PERFORM SET_ALV_FIELDS USING 'EBELN'     'ITAB' '' TEXT-B14.
      PERFORM SET_ALV_FIELDS USING 'EBELP'     'ITAB' '' TEXT-B15.
      PERFORM SET_ALV_FIELDS USING 'EBELE'     'ITAB' '' TEXT-B16.
    ELSEIF NOT P_PRDCHK IS INITIAL .
      PERFORM SET_ALV_FIELDS USING 'AUFNR'     'ITAB' '' TEXT-C05.
    ELSEIF NOT P_DET IS INITIAL .
      PERFORM SET_ALV_FIELDS USING 'EBELN'     'ITAB' '' TEXT-B14.
      PERFORM SET_ALV_FIELDS USING 'EBELP'     'ITAB' '' TEXT-B15.
      PERFORM SET_ALV_FIELDS USING 'EBELE'     'ITAB' '' TEXT-B16.
      PERFORM SET_ALV_FIELDS USING 'AUFNR'     'ITAB' '' TEXT-C05.
    ENDIF .

    PERFORM SET_ALV_FIELDS USING 'BDART'       'ITAB' '' TEXT-C33.
    PERFORM SET_ALV_FIELDS USING 'MTART'       'ITAB' '' TEXT-C32.
    PERFORM SET_ALV_FIELDS USING 'EKGRP'       'ITAB' '' TEXT-C02.
    PERFORM SET_ALV_FIELDS USING 'BAUGR'       'ITAB' '' TEXT-C01.
    PERFORM SET_ALV_FIELDS USING 'BDTER'       'ITAB' '' TEXT-C06.
    PERFORM SET_ALV_FIELDS USING 'WERKS'       'ITAB' '' TEXT-C31.
    PERFORM SET_ALV_FIELDS USING 'BDMNG'       'ITAB' '' TEXT-C12.
    PERFORM SET_ALV_FIELDS USING 'ENMNG'       'ITAB' '' TEXT-C13.
    PERFORM SET_ALV_FIELDS USING 'MEINS'       'ITAB' '' TEXT-C11.
    PERFORM SET_ALV_FIELDS USING 'OPNQTY'      'ITAB' '' TEXT-C14.
    PERFORM SET_ALV_FIELDS USING 'AVASTK'      'ITAB' '' TEXT-C19.
    PERFORM SET_ALV_FIELDS USING 'ICON'        'ITAB' '' TEXT-C27.
    PERFORM SET_ALV_FIELDS_SP USING 'SHORTAGE' 'ITAB' '' TEXT-C20 'X'.
    PERFORM SET_ALV_FIELDS USING 'LABST'       'ITAB' '' TEXT-C15.
    PERFORM SET_ALV_FIELDS USING 'SLABS'       'ITAB' '' TEXT-C24.
    PERFORM SET_ALV_FIELDS USING 'UMLME'       'ITAB' '' TEXT-C16.
    PERFORM SET_ALV_FIELDS USING 'INSME'       'ITAB' '' TEXT-C17.
    PERFORM SET_ALV_FIELDS USING 'LBLAB'       'ITAB' '' TEXT-C34.
    PERFORM SET_ALV_FIELDS USING 'XMENG'       'ITAB' '' TEXT-C18.
    PERFORM SET_ALV_FIELDS USING 'BDMNG1'      'ITAB' '' TEXT-C21.
  ENDIF .
  IF     P_DAY  = 'X'.
    LOOP AT DATE_TAB.
      COUNT_NO = SY-TABIX.
      CONCATENATE 'OSQTY' COUNT_NO INTO FLDNAME.
      WRITE DATE_TAB-DAT00           TO V_DATEFLD.
      IF NOT P_COLT IS INITIAL .
        PERFORM SET_ALV_FIELDS USING FLDNAME 'COLLECT_ITAB' '' V_DATEFLD .
      ELSE.
        PERFORM SET_ALV_FIELDS USING FLDNAME 'ITAB'         '' V_DATEFLD .
      ENDIF .
    ENDLOOP .
  ELSEIF P_WEEK = 'X'.
    LOOP AT DATE_TAB.
      COUNT_NO = SY-TABIX.
      CONCATENATE 'OSQTY' COUNT_NO INTO FLDNAME.
      CONCATENATE 'W' DATE_TAB-WEEK+4(2INTO V_DATEFLD
      SEPARATED BY SPACE.
      CONCATENATE V_DATEFLD '/' DATE_TAB-WEEK(4INTO V_DATEFLD.

      IF NOT P_COLT IS INITIAL .
        PERFORM SET_ALV_FIELDS USING FLDNAME 'COLLECT_ITAB' '' V_DATEFLD .
      ELSE.
        PERFORM SET_ALV_FIELDS USING FLDNAME 'ITAB'         '' V_DATEFLD .
      ENDIF .
    ENDLOOP .
  ELSEIF P_MNTH = 'X'.
    LOOP AT DATE_TAB.
      COUNT_NO = SY-TABIX.
      CONCATENATE 'OSQTY' COUNT_NO INTO FLDNAME.
      CONCATENATE 'M' DATE_TAB-MONTH+4(2INTO V_DATEFLD SEPARATED BY SPACE.
      CONCATENATE V_DATEFLD '/' DATE_TAB-MONTH(4INTO V_DATEFLD.

      IF NOT P_COLT IS INITIAL .
        PERFORM SET_ALV_FIELDS USING FLDNAME 'COLLECT_ITAB' '' V_DATEFLD .
      ELSE.
        PERFORM SET_ALV_FIELDS USING FLDNAME 'ITAB'         '' V_DATEFLD .
      ENDIF .
    ENDLOOP .
  ENDIF.

  IF NOT P_COLT IS INITIAL .
    PERFORM SET_ALV_FIELDS USING 'BACK_LOGQTY' 'COLLECT_ITAB' '' TEXT-C25.
    PERFORM SET_ALV_FIELDS USING 'OVER_QTY'    'COLLECT_ITAB' '' TEXT-C26.
  ELSE.
    PERFORM SET_ALV_FIELDS USING 'BACK_LOGQTY' 'ITAB'         '' TEXT-C25.
    PERFORM SET_ALV_FIELDS USING 'OVER_QTY'    'ITAB'         '' TEXT-C26.
  ENDIF .

  PERFORM LAYOUT_BUILD_A   USING G_ALV_LAYOUT  'SHORTAGE'.

ENDFORM.                    " PREPARE_ALV_FIELDS

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

  IF NOT P_COLT IS INITIAL .
    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
        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                    = COLLECT_ITAB[].
  ELSE.

    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
        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                    = ITAB[].
  ENDIF .

ENDFORM.                    " DISPLAY_ALV_RESULT

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

  DATA: V_DATE LIKE SY-DATUM.
  DATA: V_WEEK LIKE SCAL-WEEK.
  DATA: V_CHAR(6TYPE C.
  DATA: V_NEWDATE LIKE SY-DATUM.

  V_DATE = P_DAT00.
  IF P_DAY = 'X'"Print day header with 31 days column
    V_TIMES = 31.
    DO V_TIMES TIMES.
* Store 31 consecutive days for building column heading
      DATE_TAB-DAT00 = V_DATE.
      APPEND DATE_TAB.
      V_DATE = V_DATE + 1.
    ENDDO.
  ELSEIF P_WEEK = 'X'.
    CALL FUNCTION 'DATE_GET_WEEK'
      EXPORTING
        DATE = V_DATE
      IMPORTING
        WEEK = V_WEEK.
*           EXCEPTIONS
*             DATE_INVALID       = 1
*             OTHERS             = 2
    IF SY-SUBRC <> 0.
* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
*         WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
    ENDIF.
    DATE_TAB-WEEK = V_WEEK.
    APPEND DATE_TAB.
    V_TIMES = 12.
    DO V_TIMES TIMES.
      CALL FUNCTION 'NEXT_WEEK'
        EXPORTING
          CURRENT_WEEK = V_WEEK
        IMPORTING
          NEXT_WEEK    = V_WEEK.
      DATE_TAB-WEEK = V_WEEK.
      APPEND DATE_TAB.
    ENDDO.
  ELSEIF P_MNTH = 'X'.
    V_TIMES = 6.
    CONCATENATE V_DATE(4) V_DATE+4(2INTO V_CHAR.
    MOVE V_CHAR TO DATE_TAB-MONTH.
    APPEND DATE_TAB.
    DO V_TIMES TIMES.
* call the function to determine next calendar month
      CALL FUNCTION 'MONTH_PLUS_DETERMINE'
        EXPORTING
          MONTHS  = SY-INDEX
          OLDDATE = V_DATE
        IMPORTING
          NEWDATE = V_NEWDATE.
      CONCATENATE V_NEWDATE(4) V_NEWDATE+4(2INTO V_CHAR.
      MOVE V_CHAR TO DATE_TAB-MONTH.
      APPEND DATE_TAB.
    ENDDO.
  ENDIF.
ENDFORM.                    " DATE_RANGE_BUILD