REPORT ZPPRTR001 NO STANDARD PAGE HEADING MESSAGE-ID MG.
*----------------------------------------------------------------------*
* Program : ZPPRTR001 *
* Author : Patrick,Song *
* Date : Aug 20, 2008 *
* Code type : conversion *
* Version : new creation *
* (interface/conversion/on-line transaction/report) *
* *
*----------------------------------------------------------------------*
* Error handling : *
*----------------------------------------------------------------------*
* 1. *
* *
*----------------------------------------------------------------------*
* Change log : *
*----------------------------------------------------------------------*
* CR# : *
* Corr. no. : *
* Date : *
* Author : *
* Change : *
* *
*&---------------------------------------------------------------------*
*&---------------------------------------------------------------------*
* Table declaration
*&---------------------------------------------------------------------*
TABLES: MAST. " Material to BOM Link
TABLES: MARA. " General Material Data
TABLES: MAPL. " Assignment of Task Lists to Materials
TABLES: PLAF. " Planned order
TABLES: PLAS. " Task list - selection of operations/activities
TABLES: PLPO. " Task list - operation/activity
TABLES: CRHD. " Work Center Header
TABLES: MAKT. " Material Descriptions
TABLES: ZPP_RTVIEWS . " Routing Views among Table MAPL, PLAS and PLPO
*&---------------------------------------------------------------------*
* Subrouting declaration
*&---------------------------------------------------------------------*
INCLUDE : <ICON>.
TYPE-POOLS: SLIS, KCDE..
INCLUDE : ABAPRETN, ZBCDWI000.
*&---------------------------------------------------------------------*
* Declaration Constant Data
*&---------------------------------------------------------------------*
CONSTANTS : ST_FORMNAME_TOP_OF_PAGE TYPE SLIS_FORMNAME
VALUE 'TOP_OF_PAGE-ALV'.
*&---------------------------------------------------------------------*
* selection screen define
*&---------------------------------------------------------------------*
SELECTION-SCREEN BEGIN OF BLOCK A1 WITH FRAME TITLE TEXT-SC1 .
SELECT-OPTIONS: S_MATNR FOR MAST-MATNR.
SELECT-OPTIONS: S_MTART FOR MARA-MTART DEFAULT 'FERT' TO 'HALB'.
SELECT-OPTIONS: S_MAKTX FOR MAKT-MAKTX .
SELECTION-SCREEN END OF BLOCK A1 .
SELECTION-SCREEN BEGIN OF BLOCK A3 WITH FRAME TITLE TEXT-SC3 .
PARAMETERS : P_WERKS LIKE T001W-WERKS DEFAULT '2001' OBLIGATORY .
PARAMETERS : P_EMENG LIKE RC29N-EMENG DEFAULT '10000' OBLIGATORY .
SELECTION-SCREEN END OF BLOCK A3 .
SELECTION-SCREEN BEGIN OF BLOCK A2 WITH FRAME TITLE TEXT-SC2 .
PARAMETERS : P_PLNTY LIKE MAPL-PLNTY OBLIGATORY DEFAULT 'N'.
PARAMETERS : P_PLNAL LIKE MAPL-PLNAL OBLIGATORY DEFAULT '1'.
SELECT-OPTIONS: S_VORNR FOR PLPO-VORNR .
SELECT-OPTIONS: S_LTXA1 FOR PLPO-LTXA1 .
SELECT-OPTIONS: S_ARBPL FOR CRHD-ARBPL .
SELECT-OPTIONS: S_STEUS FOR PLPO-STEUS .
SELECTION-SCREEN END OF BLOCK A2 .
*&---------------------------------------------------------------------*
* globe parameters declaration
*&---------------------------------------------------------------------*
* define table to store tempoary data
DATA INT_TAB TYPE KCDE_INTERN_STRUC OCCURS 0 WITH HEADER LINE.
*-> define internal table to store these material number temp.
DATA: BEGIN OF I_MATNR OCCURS 0 .
DATA: MATNR LIKE MAST-MATNR .
DATA: WERKS LIKE MAST-WERKS .
DATA: END OF I_MATNR .
DATA: I_PLAS LIKE PLAS OCCURS 0 WITH HEADER LINE .
DATA: BEGIN OF RTG_LOGS OCCURS 0.
DATA: MATNR LIKE MAPL-MATNR . " Material Number
DATA: MWERK LIKE MAPL-WERKS . " Plant
DATA: PLNTY LIKE MAPL-PLNTY . " Task List Type
DATA: PLNNR LIKE MAPL-PLNNR . " Key for Task List Group
DATA: PLNAL LIKE MAPL-PLNAL . " Group Counter
DATA: PLNKN LIKE PLAS-PLNKN . " Number of the task list node
DATA: ZAEHL LIKE PLAS-ZAEHL . " Internal counter
DATA: VORNR LIKE PLPO-VORNR . " Operation\Activity
DATA: STEUS LIKE PLPO-STEUS . " Control key
DATA: WERKS LIKE PLPO-WERKS . " Plant of Work Center
DATA: ARBID LIKE PLPO-ARBID . " Object ID of Work center
DATA: DATUV LIKE PLPO-DATUV . " Valid-From Date
DATA: ANDAT LIKE PLPO-ANDAT . " Date record created on
DATA: AEDAT LIKE PLPO-AEDAT . " Changed On
DATA: AENNR LIKE PLPO-AENNR . " Change Number
DATA: ARBPL LIKE CRHD-ARBPL . " Work center
DATA: LTXA1 LIKE PLPO-LTXA1 . " Operation short text
DATA: BMSCH LIKE PLPO-BMSCH . " Base Quantity in Operation\Activity
DATA: MEINH LIKE PLPO-MEINH . " Unit for Base Quantity
DATA: VGE01 LIKE PLPO-VGE01 . " Unit(Time)
DATA: VGW01 LIKE PLPO-VGW01 . " Setup Time
DATA: VGE02 LIKE PLPO-VGE02 . " Unit(Time)
DATA: VGW02 LIKE PLPO-VGW02 . " Machine Time
DATA: VGE03 LIKE PLPO-VGE03 . " Unit(Time)
DATA: VGW03 LIKE PLPO-VGW03 . " Labor Time
DATA: VGE04 LIKE PLPO-VGE04 . " Unit(Time)
DATA: VGW04 LIKE PLPO-VGW04 . " Standard value 1
DATA: VGE05 LIKE PLPO-VGE05 . " Unit(Time)
DATA: VGW05 LIKE PLPO-VGW05 . " Standard value 2
DATA: VGE06 LIKE PLPO-VGE06 . " Unit(Time)
DATA: VGW06 LIKE PLPO-VGW06 . " Standard value 3
DATA: ZWNOR LIKE PLPO-ZWNOR . " Standard queue time
DATA: ZEIWM LIKE PLPO-ZEIWM . " Unit for the minumum queue time
DATA: SPMUS LIKE PLPO-SPMUS . " Required Splitting
DATA: SPLIM LIKE PLPO-SPLIM . " No. of splits
DATA: VGWTM LIKE PLPO-VGW01 . " Required Time (H)
DATA: VGW00 LIKE PLPO-VGW01 . " Required Time (H)
DATA: HMEIN LIKE PLPO-MEINH . " Time Unit - Hours
DATA: SPLI1 LIKE PLPO-SPLIM . " Personnel in Calculation
DATA: EMENG LIKE RC29N-EMENG. " Required quantity
DATA: SELK TYPE C .
DATA: END OF RTG_LOGS .
*-> define internal table
DATA: BEGIN OF ITAB OCCURS 0 .
*Routing Header Data
DATA: MATNR LIKE MAPL-MATNR . " Material Number
DATA: MWERK LIKE MAPL-WERKS . " Plant
DATA: MTART LIKE MARA-MTART . " General Material Data
DATA: PLNTY LIKE MAPL-PLNTY . " Task List Type
DATA: PLNNR LIKE MAPL-PLNNR . " Key for Task List Group
DATA: PLNAL LIKE MAPL-PLNAL . " Group Counter
* Material data & Expected Quantity
DATA: MAKTX LIKE MAKT-MAKTX . " Material Descriptions
DATA: EMENG LIKE RC29N-EMENG. " Required quantity
*Operation Assignment located by Group Counter
DATA: PLNKN LIKE PLAS-PLNKN . " Number of the task list node
DATA: ZAEHL LIKE PLAS-ZAEHL . " Internal counter
* Operation&Activity
DATA: VERWE LIKE CRHD-VERWE . " Work center cat.
DATA: OBJTY LIKE CRHD-OBJTY . " Object types of the CIM resource
DATA: VORNR LIKE PLPO-VORNR . " Operation\Activity
DATA: STEUS LIKE PLPO-STEUS . " Control key
DATA: WERKS LIKE PLPO-WERKS . " Plant of Work Center
DATA: ARBID LIKE PLPO-ARBID . " Object ID of Work center
DATA: ARBPL LIKE CRHD-ARBPL . " Work center
DATA: LTXA1 LIKE PLPO-LTXA1 . " Operation short text
DATA: BMSCH LIKE PLPO-BMSCH . " Base Quantity in Operation\Activity
DATA: MEINH LIKE PLPO-MEINH . " Unit for Base Quantity
DATA: VGE01 LIKE PLPO-VGE01 . " Unit(Time)
DATA: VGW01 LIKE PLPO-VGW01 . " Setup Time
DATA: VGE02 LIKE PLPO-VGE02 . " Unit(Time)
DATA: VGW02 LIKE PLPO-VGW02 . " Machine Time
DATA: VGE03 LIKE PLPO-VGE03 . " Unit(Time)
DATA: VGW03 LIKE PLPO-VGW03 . " Labor Time
DATA: VGE04 LIKE PLPO-VGE04 . " Unit(Time)
DATA: VGW04 LIKE PLPO-VGW04 . " Standard value 1
DATA: VGE05 LIKE PLPO-VGE05 . " Unit(Time)
DATA: VGW05 LIKE PLPO-VGW05 . " Standard value 2
DATA: VGE06 LIKE PLPO-VGE06 . " Unit(Time)
DATA: VGW06 LIKE PLPO-VGW06 . " Standard value 3
DATA: ZWNOR LIKE PLPO-ZWNOR . " Standard queue time
DATA: ZEIWM LIKE PLPO-ZEIWM . " Unit for the minumum queue time
DATA: SPMUS LIKE PLPO-SPMUS . " Required Splitting
DATA: SPLIM LIKE PLPO-SPLIM . " No. of splits
DATA: VGWTM LIKE PLPO-VGW01 . " Required Time (H)
DATA: VGW00 LIKE PLPO-VGW01 . " Required Time (H)
DATA: HMEIN LIKE PLPO-MEINH . " Time Unit - Hours
DATA: SPLI1 LIKE PLPO-SPLIM . " Personnel in Calculation
DATA: SELK TYPE C .
DATA: END OF ITAB .
*-> define internal table to store uploading data
DATA: BEGIN OF MTAB OCCURS 0 .
DATA: MATNR LIKE MARA-MATNR . " Material Number
DATA: MAKTX LIKE MAKT-MAKTX . " Material Descriptions
DATA: MTART LIKE MARA-MTART . " General Material Data
DATA: WERKS LIKE MARC-WERKS . " Plant
DATA: PLNTY LIKE AFKO-PLNTY . " Task List Type
DATA: PLNNR LIKE AFKO-PLNNR . " Key for Task List Group
DATA: PLNAL LIKE AFKO-PLNAL . " Group Counter
DATA: END OF MTAB .
DATA: OPRTAB LIKE CAPP_OPR OCCURS 0 WITH HEADER LINE .
DATA: TSKTAB LIKE CAPP_TSK OCCURS 0 WITH HEADER LINE .
DATA: SEQTAB LIKE CAPP_SEQ OCCURS 0 WITH HEADER LINE .
DATA: PHASETAB LIKE CAPP_OPR OCCURS 0 WITH HEADER LINE .
DATA: SUBOPRTAB LIKE CAPP_OPR OCCURS 0 WITH HEADER LINE .
DATA: RELTAB LIKE CAPP_REL OCCURS 0 WITH HEADER LINE .
DATA: COMTAB LIKE CAPP_COM OCCURS 0 WITH HEADER LINE .
DATA: REFERRTAB LIKE CAPP_OPR OCCURS 0 WITH HEADER LINE .
DATA: REFMISTAB LIKE CAPP_OPR OCCURS 0 WITH HEADER LINE .
*-> 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,
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_LOG TYPE SLIS_FORMNAME VALUE 'STANDARD_ST02',
S_USER_COMMLOG TYPE SLIS_FORMNAME VALUE 'USER_COMMLOG-ALV',
S_USER_COMMAND TYPE SLIS_FORMNAME VALUE 'USER_COMMAND-ALV'.
DATA: BEGIN OF EXTAB OCCURS 0,
FCODE LIKE RSMPE-FUNC.
DATA: END OF EXTAB.
DATA: TAB TYPE SLIS_T_EXTAB.
*-> for user downloading operation
DATA: L_FILE LIKE RLGRAP-FILENAME. " filename for data downloading
DATA: BEGIN OF FIELDNAMES OCCURS 0,
NAME(030),
END OF FIELDNAMES.
*&---------------------------------------------------------------------*
* initialization.
*&---------------------------------------------------------------------*
INITIALIZATION.
REFRESH: ITAB .
CLEAR : ITAB .
*&---------------------------------------------------------------------*
* at selection-screen
*&---------------------------------------------------------------------*
AT SELECTION-SCREEN .
*&---------------------------------------------------------------------*
* start-of-selection.
*&---------------------------------------------------------------------*
START-OF-SELECTION.
PERFORM PREPARE_ALV_FIELDS .
PERFORM EXTRACT_ROUTING_DATA .
PERFORM DISPLAY_ALV_RESULT .
*&---------------------------------------------------------------------*
* end-of-selection.
*&---------------------------------------------------------------------*
END-OF-SELECTION.
*&---------------------------------------------------------------------*
*& Form PREPARE_ALV_FIELDS
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM PREPARE_ALV_FIELDS .
CLEAR : G_ALV_FIELDCAT .
PERFORM SET_ALV_FIELDS USING 'PLNNR' 'ITAB' '' TEXT-C01.
PERFORM SET_ALV_FIELDS USING 'PLNAL' 'ITAB' '' TEXT-C35.
PERFORM SET_ALV_FIELDS USING 'MATNR' 'ITAB' '' TEXT-C02.
PERFORM SET_ALV_FIELDS USING 'MAKTX' 'ITAB' '' TEXT-C03.
PERFORM SET_ALV_FIELDS USING 'MTART' 'ITAB' '' TEXT-C00.
PERFORM SET_ALV_FIELDS USING 'MWERK' 'ITAB' '' TEXT-C04.
PERFORM SET_ALV_FIELDS USING 'VERWE' 'ITAB' '' TEXT-C05.
PERFORM SET_ALV_FIELDS USING 'ARBPL' 'ITAB' '' TEXT-C07.
PERFORM SET_ALV_FIELDS USING 'WERKS' 'ITAB' '' TEXT-C11.
PERFORM SET_ALV_FIELDS USING 'VORNR' 'ITAB' '' TEXT-C08.
PERFORM SET_ALV_FIELDS USING 'STEUS' 'ITAB' '' TEXT-C09.
PERFORM SET_ALV_FIELDS USING 'LTXA1' 'ITAB' '' TEXT-C12.
PERFORM SET_ALV_FIELDS USING 'MEINH' 'ITAB' '' TEXT-C13.
PERFORM SET_ALV_FIELDS USING 'BMSCH' 'ITAB' '' TEXT-C14.
PERFORM SET_ALV_FIELDS USING 'VGE01' 'ITAB' '' TEXT-C15.
PERFORM SET_ALV_FIELDS USING 'VGW01' 'ITAB' '' TEXT-C16.
PERFORM SET_ALV_FIELDS USING 'VGW02' 'ITAB' '' TEXT-C18.
PERFORM SET_ALV_FIELDS USING 'VGE02' 'ITAB' '' TEXT-C15.
PERFORM SET_ALV_FIELDS USING 'VGW03' 'ITAB' '' TEXT-C20.
PERFORM SET_ALV_FIELDS USING 'VGE03' 'ITAB' '' TEXT-C15.
PERFORM SET_ALV_FIELDS USING 'ZWNOR' 'ITAB' '' TEXT-C33.
PERFORM SET_ALV_FIELDS USING 'ZEIWM' 'ITAB' '' TEXT-C29.
PERFORM SET_ALV_FIELDS USING 'SPMUS' 'ITAB' '' TEXT-C27.
PERFORM SET_ALV_FIELDS USING 'SPLIM' 'ITAB' '' TEXT-C28.
PERFORM SET_ALV_FIELDS USING 'EMENG' 'ITAB' '' TEXT-B01.
PERFORM SET_ALV_FIELDS USING 'VGWTM' 'ITAB' '' TEXT-B02.
PERFORM SET_ALV_FIELDS USING 'VGW00' 'ITAB' '' TEXT-B05.
PERFORM SET_ALV_FIELDS USING 'HMEIN' 'ITAB' '' TEXT-B03.
PERFORM SET_ALV_FIELDS USING 'SPLI1' 'ITAB' '' TEXT-B06.
PERFORM LAYOUT_BUILD USING G_ALV_LAYOUT .
ENDFORM. " PREPARE_ALV_FIELDS
*&---------------------------------------------------------------------*
*& Form DISPLAY_ALV_RESULT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM DISPLAY_ALV_RESULT .
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[].
ENDFORM. " DISPLAY_ALV_RESULT
*&---------------------------------------------------------------------*
*& 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 STANDARD_ST02
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* -->EXTAB text
*----------------------------------------------------------------------*
FORM STANDARD_ST02 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 'ST02'.
SET TITLEBAR 'ST02'.
ENDFORM. " STANDARD_ST02
*-------------------------------------------------------------------
* FORM USER_COMMAND-ALV
*-------------------------------------------------------------------
FORM USER_COMMAND-ALV USING R_UCOMM LIKE SY-UCOMM
RS_SELFIELD TYPE SLIS_SELFIELD.
DATA: FELD(10) TYPE C.
* table rs_selfield store the information of cursor and table index.
RS_SELFIELD-REFRESH = 'X'.
CASE R_UCOMM.
WHEN 'PICK'.
READ TABLE ITAB INDEX RS_SELFIELD-TABINDEX.
CASE RS_SELFIELD-FIELDNAME.
WHEN 'MATNR'.
SET PARAMETER ID 'MAT' FIELD ITAB-MATNR.
CALL TRANSACTION 'MM03' AND SKIP FIRST SCREEN.
WHEN 'ARBPL'.
SET PARAMETER ID 'AGR' FIELD ITAB-ARBPL.
SET PARAMETER ID 'WRK' FIELD ITAB-WERKS.
CALL TRANSACTION 'CR03' AND SKIP FIRST SCREEN.
WHEN 'VORNR' OR 'STEUS'.
PERFORM EXTRACT_RTG_CHANGELOGS.
PERFORM DISPLAY_CHANGE_LOGS .
WHEN OTHERS.
SET PARAMETER ID 'MAT' FIELD ITAB-MATNR.
SET PARAMETER ID 'WRK' FIELD ITAB-WERKS.
CALL TRANSACTION 'CA03' AND SKIP FIRST SCREEN.
ENDCASE .
ENDCASE .
CLEAR R_UCOMM.
ENDFORM. " USER_COMMAND-ALV
*&---------------------------------------------------------------------*
*& Form USER_COMMLOG-ALV
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* -->R_UCOMM text
* -->RS_SELFIELD text
*----------------------------------------------------------------------*
FORM USER_COMMLOG-ALV USING R_UCOMM LIKE SY-UCOMM
RS_SELFIELD TYPE SLIS_SELFIELD.
DATA: FELD(10) TYPE C.
* table rs_selfield store the information of cursor and table index.
RS_SELFIELD-REFRESH = 'X'.
CASE R_UCOMM.
WHEN 'PICK'.
READ TABLE RTG_LOGS INDEX RS_SELFIELD-TABINDEX.
CASE RS_SELFIELD-FIELDNAME.
WHEN OTHERS.
IF NOT RTG_LOGS-AENNR IS INITIAL .
SET PARAMETER ID 'AEN' FIELD RTG_LOGS-AENNR.
CALL TRANSACTION 'CC03' AND SKIP FIRST SCREEN.
ENDIF .
ENDCASE .
ENDCASE .
CLEAR R_UCOMM.
ENDFORM. " USER_COMMLOG-ALV
*&---------------------------------------------------------------------*
*& Form EXTRACT_ROUTING_DATA
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM EXTRACT_ROUTING_DATA .
REFRESH: MTAB, ITAB . CLEAR: MTAB, ITAB .
SELECT * INTO CORRESPONDING FIELDS OF TABLE MTAB
FROM MAPL INNER JOIN MAKT ON MAKT~MANDT = MAPL~MANDT
AND MAKT~MATNR = MAPL~MATNR
INNER JOIN MARA ON MARA~MANDT = MAPL~MANDT
AND MARA~MATNR = MAPL~MATNR
CLIENT SPECIFIED
WHERE MAPL~MANDT EQ SY-MANDT
AND MAPL~MATNR IN S_MATNR
AND MAPL~WERKS EQ P_WERKS
AND MAPL~PLNTY EQ P_PLNTY
AND MAPL~LOEKZ EQ SPACE
AND MARA~MTART IN S_MTART
AND MAKT~MAKTX IN S_MAKTX
AND MAKT~SPRAS EQ '1' .
LOOP AT MTAB .
REFRESH: OPRTAB. CLEAR: OPRTAB .
PERFORM CARO_ROUTING_READ USING MTAB-PLNTY
MTAB-PLNNR
MTAB-PLNAL
MTAB-MATNR .
LOOP AT OPRTAB WHERE LTXA1 IN S_LTXA1 AND VORNR IN S_VORNR AND STEUS IN S_STEUS.
CLEAR: CRHD .
SELECT SINGLE * FROM CRHD CLIENT SPECIFIED WHERE MANDT EQ SY-MANDT
AND OBJTY EQ 'A'
AND OBJID EQ OPRTAB-ARBID
AND ARBPL IN S_ARBPL .
IF SY-SUBRC = 0 .
MOVE-CORRESPONDING MTAB TO ITAB .
MOVE MTAB-WERKS TO ITAB-MWERK .
MOVE CRHD-ARBPL TO ITAB-ARBPL .
MOVE CRHD-VERWE TO ITAB-VERWE .
MOVE-CORRESPONDING OPRTAB TO ITAB .
MOVE 'H' TO ITAB-ZEIWM .
MOVE P_EMENG TO ITAB-EMENG .
IF OPRTAB-SPLIM NE 0 AND OPRTAB-SPMUS EQ 'X' .
IF CRHD-VERWE = '0001'.
ITAB-VGWTM = OPRTAB-VGW02 * P_EMENG / OPRTAB-BMSCH / OPRTAB-SPLIM / 3600.
ITAB-VGW00 = CEIL( 3600 / ( OPRTAB-VGW02 / OPRTAB-BMSCH / OPRTAB-SPLIM ) ).
IF OPRTAB-VGW02 NE 0 .
ITAB-SPLI1 = OPRTAB-VGW03 / OPRTAB-VGW02 .
ENDIF .
ENDIF .
IF CRHD-VERWE = '0003'.
ITAB-VGWTM = OPRTAB-VGW03 * P_EMENG / OPRTAB-BMSCH / OPRTAB-SPLIM / 3600.
ITAB-VGW00 = CEIL( 3600 / ( OPRTAB-VGW03 / OPRTAB-BMSCH / OPRTAB-SPLIM ) ).
ITAB-SPLI1 = ITAB-SPLIM .
ENDIF .
ITAB-SPLIM = OPRTAB-SPLIM.
ITAB-BMSCH = OPRTAB-BMSCH.
ENDIF.
ITAB-HMEIN = 'H'.
ENDIF .
APPEND ITAB. CLEAR: ITAB .
ENDLOOP .
ENDLOOP .
ENDFORM. " EXTRACT_ROUTING_DATA
*&---------------------------------------------------------------------*
*& Form CARO_ROUTING_READ
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* -->P_MTAB_PLNTY text
* -->P_MTAB_PLNNR text
* -->P_MTAB_PLNAL text
* -->P_MTAB_MATNR text
*----------------------------------------------------------------------*
FORM CARO_ROUTING_READ USING PLNTY PLNNR PLNAL PLNBEZ.
CALL FUNCTION 'CARO_ROUTING_READ'
EXPORTING
DATE_FROM = SY-DATUM
DATE_TO = '99991231'
PLNTY = 'N'
PLNNR = PLNNR
PLNAL = PLNAL
MATNR = PLNBEZ
BUFFER_DEL_FLG = 'X'
DELETE_ALL_CAL_FLG = 'X'
ADAPT_FLG = 'X'
IV_CREATE_ADD_CHANGE = SPACE
TABLES
TSK_TAB = TSKTAB
OPR_TAB = OPRTAB
SEQ_TAB = SEQTAB
PHASE_TAB = PHASETAB
SUBOPR_TAB = SUBOPRTAB
REL_TAB = RELTAB
COM_TAB = COMTAB
REFERR_TAB = REFERRTAB
REFMIS_TAB = REFMISTAB
EXCEPTIONS
NOT_FOUND = 01
REF_NOT_EXP = 02
NOT_VALID = 03
OTHERS = 04.
ENDFORM. " CARO_ROUTING_READ
*&---------------------------------------------------------------------*
*& Form EXTRACT_RTG_CHANGELOGS
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM EXTRACT_RTG_CHANGELOGS .
REFRESH: RTG_LOGS .
CLEAR : RTG_LOGS .
SELECT * INTO CORRESPONDING FIELDS OF TABLE RTG_LOGS
FROM PLAS INNER JOIN PLPO ON PLPO~MANDT = PLAS~MANDT
AND PLPO~PLNTY = PLAS~PLNTY
AND PLPO~PLNNR = PLAS~PLNNR
AND PLPO~PLNKN = PLAS~PLNKN
CLIENT SPECIFIED
WHERE PLAS~MANDT EQ SY-MANDT
AND PLAS~PLNTY EQ 'N'
AND PLAS~PLNNR EQ ITAB-PLNNR
AND PLAS~PLNAL EQ ITAB-PLNAL
AND PLPO~VORNR EQ ITAB-VORNR
ORDER BY PLAS~PLNTY PLAS~PLNNR PLAS~PLNAL PLPO~VORNR.
LOOP AT RTG_LOGS .
CLEAR: CRHD .
SELECT SINGLE * FROM CRHD CLIENT SPECIFIED WHERE MANDT EQ SY-MANDT
AND OBJTY EQ 'A'
AND OBJID EQ RTG_LOGS-ARBID .
IF SY-SUBRC = 0 .
MOVE CRHD-ARBPL TO RTG_LOGS-ARBPL .
MOVE 'H' TO RTG_LOGS-ZEIWM .
MOVE P_EMENG TO RTG_LOGS-EMENG .
IF RTG_LOGS-SPLIM NE 0 AND RTG_LOGS-SPMUS EQ 'X' .
IF CRHD-VERWE = '0001'.
RTG_LOGS-VGWTM = RTG_LOGS-VGW02 * P_EMENG / RTG_LOGS-BMSCH / RTG_LOGS-SPLIM / 3600.
RTG_LOGS-VGW00 = CEIL( 3600 / ( RTG_LOGS-VGW02 / RTG_LOGS-BMSCH / RTG_LOGS-SPLIM ) ).
IF RTG_LOGS-VGW02 NE 0 .
RTG_LOGS-SPLI1 = RTG_LOGS-VGW03 / RTG_LOGS-VGW02 .
ENDIF .
ENDIF .
IF CRHD-VERWE = '0003'.
RTG_LOGS-VGWTM = RTG_LOGS-VGW03 * P_EMENG / RTG_LOGS-BMSCH / RTG_LOGS-SPLIM / 3600.
RTG_LOGS-VGW00 = CEIL( 3600 / ( RTG_LOGS-VGW03 / RTG_LOGS-BMSCH / RTG_LOGS-SPLIM ) ).
RTG_LOGS-SPLI1 = RTG_LOGS-SPLIM .
ENDIF .
RTG_LOGS-SPLIM = RTG_LOGS-SPLIM.
RTG_LOGS-BMSCH = RTG_LOGS-BMSCH.
ENDIF.
RTG_LOGS-HMEIN = 'H'.
ENDIF .
MOVE ITAB-MATNR TO RTG_LOGS-MATNR.
MODIFY RTG_LOGS.
ENDLOOP .
SORT RTG_LOGS BY MATNR PLNNR PLNAL VORNR ANDAT AEDAT AENNR .
ENDFORM. " EXTRACT_RTG_CHANGELOGS
*&---------------------------------------------------------------------*
*& Form DISPLAY_CHANGE_LOGS
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM DISPLAY_CHANGE_LOGS .
CLEAR : G_ALV_FIELDCAT .
PERFORM SET_ALV_FIELDS USING 'MATNR' 'RTG_LOGS' '' TEXT-C02.
PERFORM SET_ALV_FIELDS USING 'PLNNR' 'RTG_LOGS' '' TEXT-C01.
PERFORM SET_ALV_FIELDS USING 'PLNAL' 'RTG_LOGS' '' TEXT-C35.
PERFORM SET_ALV_FIELDS USING 'VORNR' 'RTG_LOGS' '' TEXT-C08.
PERFORM SET_ALV_FIELDS USING 'ANDAT' 'RTG_LOGS' '' TEXT-C38.
PERFORM SET_ALV_FIELDS USING 'AEDAT' 'RTG_LOGS' '' TEXT-C48.
PERFORM SET_ALV_FIELDS USING 'AENNR' 'RTG_LOGS' '' TEXT-C58.
PERFORM SET_ALV_FIELDS USING 'STEUS' 'RTG_LOGS' '' TEXT-C09.
PERFORM SET_ALV_FIELDS USING 'LTXA1' 'RTG_LOGS' '' TEXT-C12.
PERFORM SET_ALV_FIELDS USING 'BMSCH' 'RTG_LOGS' '' TEXT-C14.
PERFORM SET_ALV_FIELDS USING 'MEINH' 'RTG_LOGS' '' TEXT-C13.
PERFORM SET_ALV_FIELDS USING 'VGW02' 'RTG_LOGS' '' TEXT-C18.
PERFORM SET_ALV_FIELDS USING 'VGW03' 'RTG_LOGS' '' TEXT-C20.
PERFORM SET_ALV_FIELDS USING 'VGE03' 'RTG_LOGS' '' TEXT-C15.
PERFORM SET_ALV_FIELDS USING 'SPLIM' 'RTG_LOGS' '' TEXT-C28.
PERFORM SET_ALV_FIELDS USING 'VGW00' 'RTG_LOGS' '' TEXT-B05.
PERFORM SET_ALV_FIELDS USING 'VGWTM' 'RTG_LOGS' '' TEXT-B52.
PERFORM LAYOUT_BUILD USING G_ALV_LAYOUT .
SY-TITLE = TEXT-T00 .
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_LOG
I_DEFAULT = 'X'
I_SAVE = 'X'
I_CALLBACK_USER_COMMAND = S_USER_COMMLOG
IT_FIELDCAT = G_ALV_FIELDCAT[]
IT_EVENTS = G_ALV_EVENT
TABLES
T_OUTTAB = RTG_LOGS[].
ENDFORM. " DISPLAY_CHANGE_LOGS
*----------------------------------------------------------------------*
* Program : ZPPRTR001 *
* Author : Patrick,Song *
* Date : Aug 20, 2008 *
* Code type : conversion *
* Version : new creation *
* (interface/conversion/on-line transaction/report) *
* *
*----------------------------------------------------------------------*
* Error handling : *
*----------------------------------------------------------------------*
* 1. *
* *
*----------------------------------------------------------------------*
* Change log : *
*----------------------------------------------------------------------*
* CR# : *
* Corr. no. : *
* Date : *
* Author : *
* Change : *
* *
*&---------------------------------------------------------------------*
*&---------------------------------------------------------------------*
* Table declaration
*&---------------------------------------------------------------------*
TABLES: MAST. " Material to BOM Link
TABLES: MARA. " General Material Data
TABLES: MAPL. " Assignment of Task Lists to Materials
TABLES: PLAF. " Planned order
TABLES: PLAS. " Task list - selection of operations/activities
TABLES: PLPO. " Task list - operation/activity
TABLES: CRHD. " Work Center Header
TABLES: MAKT. " Material Descriptions
TABLES: ZPP_RTVIEWS . " Routing Views among Table MAPL, PLAS and PLPO
*&---------------------------------------------------------------------*
* Subrouting declaration
*&---------------------------------------------------------------------*
INCLUDE : <ICON>.
TYPE-POOLS: SLIS, KCDE..
INCLUDE : ABAPRETN, ZBCDWI000.
*&---------------------------------------------------------------------*
* Declaration Constant Data
*&---------------------------------------------------------------------*
CONSTANTS : ST_FORMNAME_TOP_OF_PAGE TYPE SLIS_FORMNAME
VALUE 'TOP_OF_PAGE-ALV'.
*&---------------------------------------------------------------------*
* selection screen define
*&---------------------------------------------------------------------*
SELECTION-SCREEN BEGIN OF BLOCK A1 WITH FRAME TITLE TEXT-SC1 .
SELECT-OPTIONS: S_MATNR FOR MAST-MATNR.
SELECT-OPTIONS: S_MTART FOR MARA-MTART DEFAULT 'FERT' TO 'HALB'.
SELECT-OPTIONS: S_MAKTX FOR MAKT-MAKTX .
SELECTION-SCREEN END OF BLOCK A1 .
SELECTION-SCREEN BEGIN OF BLOCK A3 WITH FRAME TITLE TEXT-SC3 .
PARAMETERS : P_WERKS LIKE T001W-WERKS DEFAULT '2001' OBLIGATORY .
PARAMETERS : P_EMENG LIKE RC29N-EMENG DEFAULT '10000' OBLIGATORY .
SELECTION-SCREEN END OF BLOCK A3 .
SELECTION-SCREEN BEGIN OF BLOCK A2 WITH FRAME TITLE TEXT-SC2 .
PARAMETERS : P_PLNTY LIKE MAPL-PLNTY OBLIGATORY DEFAULT 'N'.
PARAMETERS : P_PLNAL LIKE MAPL-PLNAL OBLIGATORY DEFAULT '1'.
SELECT-OPTIONS: S_VORNR FOR PLPO-VORNR .
SELECT-OPTIONS: S_LTXA1 FOR PLPO-LTXA1 .
SELECT-OPTIONS: S_ARBPL FOR CRHD-ARBPL .
SELECT-OPTIONS: S_STEUS FOR PLPO-STEUS .
SELECTION-SCREEN END OF BLOCK A2 .
*&---------------------------------------------------------------------*
* globe parameters declaration
*&---------------------------------------------------------------------*
* define table to store tempoary data
DATA INT_TAB TYPE KCDE_INTERN_STRUC OCCURS 0 WITH HEADER LINE.
*-> define internal table to store these material number temp.
DATA: BEGIN OF I_MATNR OCCURS 0 .
DATA: MATNR LIKE MAST-MATNR .
DATA: WERKS LIKE MAST-WERKS .
DATA: END OF I_MATNR .
DATA: I_PLAS LIKE PLAS OCCURS 0 WITH HEADER LINE .
DATA: BEGIN OF RTG_LOGS OCCURS 0.
DATA: MATNR LIKE MAPL-MATNR . " Material Number
DATA: MWERK LIKE MAPL-WERKS . " Plant
DATA: PLNTY LIKE MAPL-PLNTY . " Task List Type
DATA: PLNNR LIKE MAPL-PLNNR . " Key for Task List Group
DATA: PLNAL LIKE MAPL-PLNAL . " Group Counter
DATA: PLNKN LIKE PLAS-PLNKN . " Number of the task list node
DATA: ZAEHL LIKE PLAS-ZAEHL . " Internal counter
DATA: VORNR LIKE PLPO-VORNR . " Operation\Activity
DATA: STEUS LIKE PLPO-STEUS . " Control key
DATA: WERKS LIKE PLPO-WERKS . " Plant of Work Center
DATA: ARBID LIKE PLPO-ARBID . " Object ID of Work center
DATA: DATUV LIKE PLPO-DATUV . " Valid-From Date
DATA: ANDAT LIKE PLPO-ANDAT . " Date record created on
DATA: AEDAT LIKE PLPO-AEDAT . " Changed On
DATA: AENNR LIKE PLPO-AENNR . " Change Number
DATA: ARBPL LIKE CRHD-ARBPL . " Work center
DATA: LTXA1 LIKE PLPO-LTXA1 . " Operation short text
DATA: BMSCH LIKE PLPO-BMSCH . " Base Quantity in Operation\Activity
DATA: MEINH LIKE PLPO-MEINH . " Unit for Base Quantity
DATA: VGE01 LIKE PLPO-VGE01 . " Unit(Time)
DATA: VGW01 LIKE PLPO-VGW01 . " Setup Time
DATA: VGE02 LIKE PLPO-VGE02 . " Unit(Time)
DATA: VGW02 LIKE PLPO-VGW02 . " Machine Time
DATA: VGE03 LIKE PLPO-VGE03 . " Unit(Time)
DATA: VGW03 LIKE PLPO-VGW03 . " Labor Time
DATA: VGE04 LIKE PLPO-VGE04 . " Unit(Time)
DATA: VGW04 LIKE PLPO-VGW04 . " Standard value 1
DATA: VGE05 LIKE PLPO-VGE05 . " Unit(Time)
DATA: VGW05 LIKE PLPO-VGW05 . " Standard value 2
DATA: VGE06 LIKE PLPO-VGE06 . " Unit(Time)
DATA: VGW06 LIKE PLPO-VGW06 . " Standard value 3
DATA: ZWNOR LIKE PLPO-ZWNOR . " Standard queue time
DATA: ZEIWM LIKE PLPO-ZEIWM . " Unit for the minumum queue time
DATA: SPMUS LIKE PLPO-SPMUS . " Required Splitting
DATA: SPLIM LIKE PLPO-SPLIM . " No. of splits
DATA: VGWTM LIKE PLPO-VGW01 . " Required Time (H)
DATA: VGW00 LIKE PLPO-VGW01 . " Required Time (H)
DATA: HMEIN LIKE PLPO-MEINH . " Time Unit - Hours
DATA: SPLI1 LIKE PLPO-SPLIM . " Personnel in Calculation
DATA: EMENG LIKE RC29N-EMENG. " Required quantity
DATA: SELK TYPE C .
DATA: END OF RTG_LOGS .
*-> define internal table
DATA: BEGIN OF ITAB OCCURS 0 .
*Routing Header Data
DATA: MATNR LIKE MAPL-MATNR . " Material Number
DATA: MWERK LIKE MAPL-WERKS . " Plant
DATA: MTART LIKE MARA-MTART . " General Material Data
DATA: PLNTY LIKE MAPL-PLNTY . " Task List Type
DATA: PLNNR LIKE MAPL-PLNNR . " Key for Task List Group
DATA: PLNAL LIKE MAPL-PLNAL . " Group Counter
* Material data & Expected Quantity
DATA: MAKTX LIKE MAKT-MAKTX . " Material Descriptions
DATA: EMENG LIKE RC29N-EMENG. " Required quantity
*Operation Assignment located by Group Counter
DATA: PLNKN LIKE PLAS-PLNKN . " Number of the task list node
DATA: ZAEHL LIKE PLAS-ZAEHL . " Internal counter
* Operation&Activity
DATA: VERWE LIKE CRHD-VERWE . " Work center cat.
DATA: OBJTY LIKE CRHD-OBJTY . " Object types of the CIM resource
DATA: VORNR LIKE PLPO-VORNR . " Operation\Activity
DATA: STEUS LIKE PLPO-STEUS . " Control key
DATA: WERKS LIKE PLPO-WERKS . " Plant of Work Center
DATA: ARBID LIKE PLPO-ARBID . " Object ID of Work center
DATA: ARBPL LIKE CRHD-ARBPL . " Work center
DATA: LTXA1 LIKE PLPO-LTXA1 . " Operation short text
DATA: BMSCH LIKE PLPO-BMSCH . " Base Quantity in Operation\Activity
DATA: MEINH LIKE PLPO-MEINH . " Unit for Base Quantity
DATA: VGE01 LIKE PLPO-VGE01 . " Unit(Time)
DATA: VGW01 LIKE PLPO-VGW01 . " Setup Time
DATA: VGE02 LIKE PLPO-VGE02 . " Unit(Time)
DATA: VGW02 LIKE PLPO-VGW02 . " Machine Time
DATA: VGE03 LIKE PLPO-VGE03 . " Unit(Time)
DATA: VGW03 LIKE PLPO-VGW03 . " Labor Time
DATA: VGE04 LIKE PLPO-VGE04 . " Unit(Time)
DATA: VGW04 LIKE PLPO-VGW04 . " Standard value 1
DATA: VGE05 LIKE PLPO-VGE05 . " Unit(Time)
DATA: VGW05 LIKE PLPO-VGW05 . " Standard value 2
DATA: VGE06 LIKE PLPO-VGE06 . " Unit(Time)
DATA: VGW06 LIKE PLPO-VGW06 . " Standard value 3
DATA: ZWNOR LIKE PLPO-ZWNOR . " Standard queue time
DATA: ZEIWM LIKE PLPO-ZEIWM . " Unit for the minumum queue time
DATA: SPMUS LIKE PLPO-SPMUS . " Required Splitting
DATA: SPLIM LIKE PLPO-SPLIM . " No. of splits
DATA: VGWTM LIKE PLPO-VGW01 . " Required Time (H)
DATA: VGW00 LIKE PLPO-VGW01 . " Required Time (H)
DATA: HMEIN LIKE PLPO-MEINH . " Time Unit - Hours
DATA: SPLI1 LIKE PLPO-SPLIM . " Personnel in Calculation
DATA: SELK TYPE C .
DATA: END OF ITAB .
*-> define internal table to store uploading data
DATA: BEGIN OF MTAB OCCURS 0 .
DATA: MATNR LIKE MARA-MATNR . " Material Number
DATA: MAKTX LIKE MAKT-MAKTX . " Material Descriptions
DATA: MTART LIKE MARA-MTART . " General Material Data
DATA: WERKS LIKE MARC-WERKS . " Plant
DATA: PLNTY LIKE AFKO-PLNTY . " Task List Type
DATA: PLNNR LIKE AFKO-PLNNR . " Key for Task List Group
DATA: PLNAL LIKE AFKO-PLNAL . " Group Counter
DATA: END OF MTAB .
DATA: OPRTAB LIKE CAPP_OPR OCCURS 0 WITH HEADER LINE .
DATA: TSKTAB LIKE CAPP_TSK OCCURS 0 WITH HEADER LINE .
DATA: SEQTAB LIKE CAPP_SEQ OCCURS 0 WITH HEADER LINE .
DATA: PHASETAB LIKE CAPP_OPR OCCURS 0 WITH HEADER LINE .
DATA: SUBOPRTAB LIKE CAPP_OPR OCCURS 0 WITH HEADER LINE .
DATA: RELTAB LIKE CAPP_REL OCCURS 0 WITH HEADER LINE .
DATA: COMTAB LIKE CAPP_COM OCCURS 0 WITH HEADER LINE .
DATA: REFERRTAB LIKE CAPP_OPR OCCURS 0 WITH HEADER LINE .
DATA: REFMISTAB LIKE CAPP_OPR OCCURS 0 WITH HEADER LINE .
*-> 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,
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_LOG TYPE SLIS_FORMNAME VALUE 'STANDARD_ST02',
S_USER_COMMLOG TYPE SLIS_FORMNAME VALUE 'USER_COMMLOG-ALV',
S_USER_COMMAND TYPE SLIS_FORMNAME VALUE 'USER_COMMAND-ALV'.
DATA: BEGIN OF EXTAB OCCURS 0,
FCODE LIKE RSMPE-FUNC.
DATA: END OF EXTAB.
DATA: TAB TYPE SLIS_T_EXTAB.
*-> for user downloading operation
DATA: L_FILE LIKE RLGRAP-FILENAME. " filename for data downloading
DATA: BEGIN OF FIELDNAMES OCCURS 0,
NAME(030),
END OF FIELDNAMES.
*&---------------------------------------------------------------------*
* initialization.
*&---------------------------------------------------------------------*
INITIALIZATION.
REFRESH: ITAB .
CLEAR : ITAB .
*&---------------------------------------------------------------------*
* at selection-screen
*&---------------------------------------------------------------------*
AT SELECTION-SCREEN .
*&---------------------------------------------------------------------*
* start-of-selection.
*&---------------------------------------------------------------------*
START-OF-SELECTION.
PERFORM PREPARE_ALV_FIELDS .
PERFORM EXTRACT_ROUTING_DATA .
PERFORM DISPLAY_ALV_RESULT .
*&---------------------------------------------------------------------*
* end-of-selection.
*&---------------------------------------------------------------------*
END-OF-SELECTION.
*&---------------------------------------------------------------------*
*& Form PREPARE_ALV_FIELDS
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM PREPARE_ALV_FIELDS .
CLEAR : G_ALV_FIELDCAT .
PERFORM SET_ALV_FIELDS USING 'PLNNR' 'ITAB' '' TEXT-C01.
PERFORM SET_ALV_FIELDS USING 'PLNAL' 'ITAB' '' TEXT-C35.
PERFORM SET_ALV_FIELDS USING 'MATNR' 'ITAB' '' TEXT-C02.
PERFORM SET_ALV_FIELDS USING 'MAKTX' 'ITAB' '' TEXT-C03.
PERFORM SET_ALV_FIELDS USING 'MTART' 'ITAB' '' TEXT-C00.
PERFORM SET_ALV_FIELDS USING 'MWERK' 'ITAB' '' TEXT-C04.
PERFORM SET_ALV_FIELDS USING 'VERWE' 'ITAB' '' TEXT-C05.
PERFORM SET_ALV_FIELDS USING 'ARBPL' 'ITAB' '' TEXT-C07.
PERFORM SET_ALV_FIELDS USING 'WERKS' 'ITAB' '' TEXT-C11.
PERFORM SET_ALV_FIELDS USING 'VORNR' 'ITAB' '' TEXT-C08.
PERFORM SET_ALV_FIELDS USING 'STEUS' 'ITAB' '' TEXT-C09.
PERFORM SET_ALV_FIELDS USING 'LTXA1' 'ITAB' '' TEXT-C12.
PERFORM SET_ALV_FIELDS USING 'MEINH' 'ITAB' '' TEXT-C13.
PERFORM SET_ALV_FIELDS USING 'BMSCH' 'ITAB' '' TEXT-C14.
PERFORM SET_ALV_FIELDS USING 'VGE01' 'ITAB' '' TEXT-C15.
PERFORM SET_ALV_FIELDS USING 'VGW01' 'ITAB' '' TEXT-C16.
PERFORM SET_ALV_FIELDS USING 'VGW02' 'ITAB' '' TEXT-C18.
PERFORM SET_ALV_FIELDS USING 'VGE02' 'ITAB' '' TEXT-C15.
PERFORM SET_ALV_FIELDS USING 'VGW03' 'ITAB' '' TEXT-C20.
PERFORM SET_ALV_FIELDS USING 'VGE03' 'ITAB' '' TEXT-C15.
PERFORM SET_ALV_FIELDS USING 'ZWNOR' 'ITAB' '' TEXT-C33.
PERFORM SET_ALV_FIELDS USING 'ZEIWM' 'ITAB' '' TEXT-C29.
PERFORM SET_ALV_FIELDS USING 'SPMUS' 'ITAB' '' TEXT-C27.
PERFORM SET_ALV_FIELDS USING 'SPLIM' 'ITAB' '' TEXT-C28.
PERFORM SET_ALV_FIELDS USING 'EMENG' 'ITAB' '' TEXT-B01.
PERFORM SET_ALV_FIELDS USING 'VGWTM' 'ITAB' '' TEXT-B02.
PERFORM SET_ALV_FIELDS USING 'VGW00' 'ITAB' '' TEXT-B05.
PERFORM SET_ALV_FIELDS USING 'HMEIN' 'ITAB' '' TEXT-B03.
PERFORM SET_ALV_FIELDS USING 'SPLI1' 'ITAB' '' TEXT-B06.
PERFORM LAYOUT_BUILD USING G_ALV_LAYOUT .
ENDFORM. " PREPARE_ALV_FIELDS
*&---------------------------------------------------------------------*
*& Form DISPLAY_ALV_RESULT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM DISPLAY_ALV_RESULT .
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[].
ENDFORM. " DISPLAY_ALV_RESULT
*&---------------------------------------------------------------------*
*& 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 STANDARD_ST02
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* -->EXTAB text
*----------------------------------------------------------------------*
FORM STANDARD_ST02 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 'ST02'.
SET TITLEBAR 'ST02'.
ENDFORM. " STANDARD_ST02
*-------------------------------------------------------------------
* FORM USER_COMMAND-ALV
*-------------------------------------------------------------------
FORM USER_COMMAND-ALV USING R_UCOMM LIKE SY-UCOMM
RS_SELFIELD TYPE SLIS_SELFIELD.
DATA: FELD(10) TYPE C.
* table rs_selfield store the information of cursor and table index.
RS_SELFIELD-REFRESH = 'X'.
CASE R_UCOMM.
WHEN 'PICK'.
READ TABLE ITAB INDEX RS_SELFIELD-TABINDEX.
CASE RS_SELFIELD-FIELDNAME.
WHEN 'MATNR'.
SET PARAMETER ID 'MAT' FIELD ITAB-MATNR.
CALL TRANSACTION 'MM03' AND SKIP FIRST SCREEN.
WHEN 'ARBPL'.
SET PARAMETER ID 'AGR' FIELD ITAB-ARBPL.
SET PARAMETER ID 'WRK' FIELD ITAB-WERKS.
CALL TRANSACTION 'CR03' AND SKIP FIRST SCREEN.
WHEN 'VORNR' OR 'STEUS'.
PERFORM EXTRACT_RTG_CHANGELOGS.
PERFORM DISPLAY_CHANGE_LOGS .
WHEN OTHERS.
SET PARAMETER ID 'MAT' FIELD ITAB-MATNR.
SET PARAMETER ID 'WRK' FIELD ITAB-WERKS.
CALL TRANSACTION 'CA03' AND SKIP FIRST SCREEN.
ENDCASE .
ENDCASE .
CLEAR R_UCOMM.
ENDFORM. " USER_COMMAND-ALV
*&---------------------------------------------------------------------*
*& Form USER_COMMLOG-ALV
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* -->R_UCOMM text
* -->RS_SELFIELD text
*----------------------------------------------------------------------*
FORM USER_COMMLOG-ALV USING R_UCOMM LIKE SY-UCOMM
RS_SELFIELD TYPE SLIS_SELFIELD.
DATA: FELD(10) TYPE C.
* table rs_selfield store the information of cursor and table index.
RS_SELFIELD-REFRESH = 'X'.
CASE R_UCOMM.
WHEN 'PICK'.
READ TABLE RTG_LOGS INDEX RS_SELFIELD-TABINDEX.
CASE RS_SELFIELD-FIELDNAME.
WHEN OTHERS.
IF NOT RTG_LOGS-AENNR IS INITIAL .
SET PARAMETER ID 'AEN' FIELD RTG_LOGS-AENNR.
CALL TRANSACTION 'CC03' AND SKIP FIRST SCREEN.
ENDIF .
ENDCASE .
ENDCASE .
CLEAR R_UCOMM.
ENDFORM. " USER_COMMLOG-ALV
*&---------------------------------------------------------------------*
*& Form EXTRACT_ROUTING_DATA
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM EXTRACT_ROUTING_DATA .
REFRESH: MTAB, ITAB . CLEAR: MTAB, ITAB .
SELECT * INTO CORRESPONDING FIELDS OF TABLE MTAB
FROM MAPL INNER JOIN MAKT ON MAKT~MANDT = MAPL~MANDT
AND MAKT~MATNR = MAPL~MATNR
INNER JOIN MARA ON MARA~MANDT = MAPL~MANDT
AND MARA~MATNR = MAPL~MATNR
CLIENT SPECIFIED
WHERE MAPL~MANDT EQ SY-MANDT
AND MAPL~MATNR IN S_MATNR
AND MAPL~WERKS EQ P_WERKS
AND MAPL~PLNTY EQ P_PLNTY
AND MAPL~LOEKZ EQ SPACE
AND MARA~MTART IN S_MTART
AND MAKT~MAKTX IN S_MAKTX
AND MAKT~SPRAS EQ '1' .
LOOP AT MTAB .
REFRESH: OPRTAB. CLEAR: OPRTAB .
PERFORM CARO_ROUTING_READ USING MTAB-PLNTY
MTAB-PLNNR
MTAB-PLNAL
MTAB-MATNR .
LOOP AT OPRTAB WHERE LTXA1 IN S_LTXA1 AND VORNR IN S_VORNR AND STEUS IN S_STEUS.
CLEAR: CRHD .
SELECT SINGLE * FROM CRHD CLIENT SPECIFIED WHERE MANDT EQ SY-MANDT
AND OBJTY EQ 'A'
AND OBJID EQ OPRTAB-ARBID
AND ARBPL IN S_ARBPL .
IF SY-SUBRC = 0 .
MOVE-CORRESPONDING MTAB TO ITAB .
MOVE MTAB-WERKS TO ITAB-MWERK .
MOVE CRHD-ARBPL TO ITAB-ARBPL .
MOVE CRHD-VERWE TO ITAB-VERWE .
MOVE-CORRESPONDING OPRTAB TO ITAB .
MOVE 'H' TO ITAB-ZEIWM .
MOVE P_EMENG TO ITAB-EMENG .
IF OPRTAB-SPLIM NE 0 AND OPRTAB-SPMUS EQ 'X' .
IF CRHD-VERWE = '0001'.
ITAB-VGWTM = OPRTAB-VGW02 * P_EMENG / OPRTAB-BMSCH / OPRTAB-SPLIM / 3600.
ITAB-VGW00 = CEIL( 3600 / ( OPRTAB-VGW02 / OPRTAB-BMSCH / OPRTAB-SPLIM ) ).
IF OPRTAB-VGW02 NE 0 .
ITAB-SPLI1 = OPRTAB-VGW03 / OPRTAB-VGW02 .
ENDIF .
ENDIF .
IF CRHD-VERWE = '0003'.
ITAB-VGWTM = OPRTAB-VGW03 * P_EMENG / OPRTAB-BMSCH / OPRTAB-SPLIM / 3600.
ITAB-VGW00 = CEIL( 3600 / ( OPRTAB-VGW03 / OPRTAB-BMSCH / OPRTAB-SPLIM ) ).
ITAB-SPLI1 = ITAB-SPLIM .
ENDIF .
ITAB-SPLIM = OPRTAB-SPLIM.
ITAB-BMSCH = OPRTAB-BMSCH.
ENDIF.
ITAB-HMEIN = 'H'.
ENDIF .
APPEND ITAB. CLEAR: ITAB .
ENDLOOP .
ENDLOOP .
ENDFORM. " EXTRACT_ROUTING_DATA
*&---------------------------------------------------------------------*
*& Form CARO_ROUTING_READ
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* -->P_MTAB_PLNTY text
* -->P_MTAB_PLNNR text
* -->P_MTAB_PLNAL text
* -->P_MTAB_MATNR text
*----------------------------------------------------------------------*
FORM CARO_ROUTING_READ USING PLNTY PLNNR PLNAL PLNBEZ.
CALL FUNCTION 'CARO_ROUTING_READ'
EXPORTING
DATE_FROM = SY-DATUM
DATE_TO = '99991231'
PLNTY = 'N'
PLNNR = PLNNR
PLNAL = PLNAL
MATNR = PLNBEZ
BUFFER_DEL_FLG = 'X'
DELETE_ALL_CAL_FLG = 'X'
ADAPT_FLG = 'X'
IV_CREATE_ADD_CHANGE = SPACE
TABLES
TSK_TAB = TSKTAB
OPR_TAB = OPRTAB
SEQ_TAB = SEQTAB
PHASE_TAB = PHASETAB
SUBOPR_TAB = SUBOPRTAB
REL_TAB = RELTAB
COM_TAB = COMTAB
REFERR_TAB = REFERRTAB
REFMIS_TAB = REFMISTAB
EXCEPTIONS
NOT_FOUND = 01
REF_NOT_EXP = 02
NOT_VALID = 03
OTHERS = 04.
ENDFORM. " CARO_ROUTING_READ
*&---------------------------------------------------------------------*
*& Form EXTRACT_RTG_CHANGELOGS
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM EXTRACT_RTG_CHANGELOGS .
REFRESH: RTG_LOGS .
CLEAR : RTG_LOGS .
SELECT * INTO CORRESPONDING FIELDS OF TABLE RTG_LOGS
FROM PLAS INNER JOIN PLPO ON PLPO~MANDT = PLAS~MANDT
AND PLPO~PLNTY = PLAS~PLNTY
AND PLPO~PLNNR = PLAS~PLNNR
AND PLPO~PLNKN = PLAS~PLNKN
CLIENT SPECIFIED
WHERE PLAS~MANDT EQ SY-MANDT
AND PLAS~PLNTY EQ 'N'
AND PLAS~PLNNR EQ ITAB-PLNNR
AND PLAS~PLNAL EQ ITAB-PLNAL
AND PLPO~VORNR EQ ITAB-VORNR
ORDER BY PLAS~PLNTY PLAS~PLNNR PLAS~PLNAL PLPO~VORNR.
LOOP AT RTG_LOGS .
CLEAR: CRHD .
SELECT SINGLE * FROM CRHD CLIENT SPECIFIED WHERE MANDT EQ SY-MANDT
AND OBJTY EQ 'A'
AND OBJID EQ RTG_LOGS-ARBID .
IF SY-SUBRC = 0 .
MOVE CRHD-ARBPL TO RTG_LOGS-ARBPL .
MOVE 'H' TO RTG_LOGS-ZEIWM .
MOVE P_EMENG TO RTG_LOGS-EMENG .
IF RTG_LOGS-SPLIM NE 0 AND RTG_LOGS-SPMUS EQ 'X' .
IF CRHD-VERWE = '0001'.
RTG_LOGS-VGWTM = RTG_LOGS-VGW02 * P_EMENG / RTG_LOGS-BMSCH / RTG_LOGS-SPLIM / 3600.
RTG_LOGS-VGW00 = CEIL( 3600 / ( RTG_LOGS-VGW02 / RTG_LOGS-BMSCH / RTG_LOGS-SPLIM ) ).
IF RTG_LOGS-VGW02 NE 0 .
RTG_LOGS-SPLI1 = RTG_LOGS-VGW03 / RTG_LOGS-VGW02 .
ENDIF .
ENDIF .
IF CRHD-VERWE = '0003'.
RTG_LOGS-VGWTM = RTG_LOGS-VGW03 * P_EMENG / RTG_LOGS-BMSCH / RTG_LOGS-SPLIM / 3600.
RTG_LOGS-VGW00 = CEIL( 3600 / ( RTG_LOGS-VGW03 / RTG_LOGS-BMSCH / RTG_LOGS-SPLIM ) ).
RTG_LOGS-SPLI1 = RTG_LOGS-SPLIM .
ENDIF .
RTG_LOGS-SPLIM = RTG_LOGS-SPLIM.
RTG_LOGS-BMSCH = RTG_LOGS-BMSCH.
ENDIF.
RTG_LOGS-HMEIN = 'H'.
ENDIF .
MOVE ITAB-MATNR TO RTG_LOGS-MATNR.
MODIFY RTG_LOGS.
ENDLOOP .
SORT RTG_LOGS BY MATNR PLNNR PLNAL VORNR ANDAT AEDAT AENNR .
ENDFORM. " EXTRACT_RTG_CHANGELOGS
*&---------------------------------------------------------------------*
*& Form DISPLAY_CHANGE_LOGS
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM DISPLAY_CHANGE_LOGS .
CLEAR : G_ALV_FIELDCAT .
PERFORM SET_ALV_FIELDS USING 'MATNR' 'RTG_LOGS' '' TEXT-C02.
PERFORM SET_ALV_FIELDS USING 'PLNNR' 'RTG_LOGS' '' TEXT-C01.
PERFORM SET_ALV_FIELDS USING 'PLNAL' 'RTG_LOGS' '' TEXT-C35.
PERFORM SET_ALV_FIELDS USING 'VORNR' 'RTG_LOGS' '' TEXT-C08.
PERFORM SET_ALV_FIELDS USING 'ANDAT' 'RTG_LOGS' '' TEXT-C38.
PERFORM SET_ALV_FIELDS USING 'AEDAT' 'RTG_LOGS' '' TEXT-C48.
PERFORM SET_ALV_FIELDS USING 'AENNR' 'RTG_LOGS' '' TEXT-C58.
PERFORM SET_ALV_FIELDS USING 'STEUS' 'RTG_LOGS' '' TEXT-C09.
PERFORM SET_ALV_FIELDS USING 'LTXA1' 'RTG_LOGS' '' TEXT-C12.
PERFORM SET_ALV_FIELDS USING 'BMSCH' 'RTG_LOGS' '' TEXT-C14.
PERFORM SET_ALV_FIELDS USING 'MEINH' 'RTG_LOGS' '' TEXT-C13.
PERFORM SET_ALV_FIELDS USING 'VGW02' 'RTG_LOGS' '' TEXT-C18.
PERFORM SET_ALV_FIELDS USING 'VGW03' 'RTG_LOGS' '' TEXT-C20.
PERFORM SET_ALV_FIELDS USING 'VGE03' 'RTG_LOGS' '' TEXT-C15.
PERFORM SET_ALV_FIELDS USING 'SPLIM' 'RTG_LOGS' '' TEXT-C28.
PERFORM SET_ALV_FIELDS USING 'VGW00' 'RTG_LOGS' '' TEXT-B05.
PERFORM SET_ALV_FIELDS USING 'VGWTM' 'RTG_LOGS' '' TEXT-B52.
PERFORM LAYOUT_BUILD USING G_ALV_LAYOUT .
SY-TITLE = TEXT-T00 .
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_LOG
I_DEFAULT = 'X'
I_SAVE = 'X'
I_CALLBACK_USER_COMMAND = S_USER_COMMLOG
IT_FIELDCAT = G_ALV_FIELDCAT[]
IT_EVENTS = G_ALV_EVENT
TABLES
T_OUTTAB = RTG_LOGS[].
ENDFORM. " DISPLAY_CHANGE_LOGS