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(15) TEXT-AB1.
PARAMETERS : P_POCHK RADIOBUTTON GROUP GRP.
SELECTION-SCREEN COMMENT 22(16) TEXT-AB2.
PARAMETERS : P_PLAN RADIOBUTTON GROUP GRP.
SELECTION-SCREEN COMMENT 41(20) TEXT-AB4.
PARAMETERS : P_ALL RADIOBUTTON GROUP GRP.
SELECTION-SCREEN COMMENT 64(17) TEXT-AB3.
SELECTION-SCREEN END OF LINE.
SELECTION-SCREEN BEGIN OF LINE.
PARAMETERS : P_DET RADIOBUTTON GROUP GRP DEFAULT 'X'.
SELECTION-SCREEN COMMENT 04(40) TEXT-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.
DATA: BEGIN 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
DATA: END OF MTAB.
DATA: BEGIN OF I_RESB OCCURS 0 .
INCLUDE STRUCTURE RESB .
DATA: SELK(001). " Selected Fields
DATA: ICON(004).
DATA: END OF I_RESB .
DATA: BEGIN 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
DATA: ICON(004).
DATA: END OF ITAB .
* define internal table for collective
DATA: BEGIN 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
DATA: ICON(004).
DATA: END 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
DATA: BEGIN 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
DATA: BEGIN 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
DATA: BEGIN OF MATOV.
DATA: WERKS(004) TYPE C. "Werk aus dem Einstiegsbild
DATA: INITF(001) TYPE C. "Initialisierung wurde durchgef榛╮t
DATA: DISVI(001) TYPE C. "Disponenten-Feinsel. sichtbar
DATA: LIFVI(001) TYPE C. "Lieferanten-Feinsel. sichtbar
DATA: FLIVI(001) TYPE C. "Fert.Linien-Feinsel. sichtbar
DATA: MODUS(001) TYPE C. "Materialdaten Ermittelungsmodus
DATA: ERROR(001) TYPE C. "Fehler beim Ermitteln ABBL
DATA: DSPER(001) TYPE C. "Ausgabe von Fehlern: 'X', wenn ja
DATA: REFRE(001) TYPE C. "Auffrischmodus f榛?die ABBL
DATA: END 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 .
DATA: BEGIN 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).
DATA: END 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(015) TYPE 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(2) INTO V_DATEFLD
SEPARATED BY SPACE.
CONCATENATE V_DATEFLD '/' DATE_TAB-WEEK(4) INTO 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(2) INTO V_DATEFLD SEPARATED BY SPACE.
CONCATENATE V_DATEFLD '/' DATE_TAB-MONTH(4) INTO 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(6) TYPE 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(2) INTO 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(2) INTO V_CHAR.
MOVE V_CHAR TO DATE_TAB-MONTH.
APPEND DATE_TAB.
ENDDO.
ENDIF.
ENDFORM. " DATE_RANGE_BUILD