*&---------------------------------------------------------------------*
*& Report ZMMR114
*&---------------------------------------------------------------------*
*& Author : NathanSun
*& Create Date : 2019-07-09
*& Program Type : Report
*& Description : 模具管理报表
*&---------------------------------------------------------------------*
REPORT ZMMR114.
*&---------------------------------------------------------------------*
*& 包含 YN_TEST02_TOP
*&---------------------------------------------------------------------*
TABLES:MARC,MARA,ZTMJCP,ZTMJZD.
TYPE-POOLS:SLIS,T001W.
"定义ALV输出所需变量
DATA: S_LAYOUT TYPE SLIS_LAYOUT_ALV,
GT_FIELDCAT TYPE SLIS_T_FIELDCAT_ALV.
TYPES: BEGIN OF GTS_DATA,
WERKS TYPE MARC-WERKS, "工厂
MATNR_MJ TYPE MARC-MATNR, "模具编号
PRDHA TYPE MARA-PRDHA, "系列
ERSDA TYPE MARA-ERSDA, "模具创建日期
MATNR_CP TYPE ZTMJCP-MATNR_CP, "产品编码
MAKTX TYPE MAKT-MAKTX, "产品名称
ZMCQS TYPE ZTMJCP-ZMCQS, "模具产品腔数
ZMJQS TYPE ZTMJZD-ZMJQS, "模具腔数
ZMCCN TYPE ZTMJCP-ZMCCN, "产能
ZMJDM TYPE ZTMJCP-ZMJDM, "模具简码
ZCNDW TYPE ZTMJCP-ZCNDW, "产能单位
MJCSM TYPE ZTMJZD-MJCSM, "模具设计寿命(啤数)
MJYSM1 TYPE ZTMJZD-MJYSM1, "模具延长设计寿命1(啤数)
MJYSM2 TYPE ZTMJZD-MJYSM2, "模具延长设计寿命2(啤数)
MJYSM3 TYPE ZTMJZD-MJYSM3, "模具延长设计寿命3(啤数)
MENGE TYPE MSEG-MENGE, "累计数量
MJCSM_LJ TYPE ZTMJZD-MJCSM, "模具累计生产啤数
MJCSY_PS TYPE ZTMJZD-MJCSM, "剩余寿命(啤数)
MJCSY_SL TYPE ZTMJZD-MJCSM, "剩余寿命(数量)
MJCCP_SL TYPE ZTMJZD-MJCSM, "模具对应物料总计划数量
BUDAT_MKPF TYPE MSEG-BUDAT_MKPF, "最后一次使用日期
END OF GTS_DATA.
DATA: GT_DATA TYPE TABLE OF GTS_DATA WITH HEADER LINE.
DATA: GT_DATA_A TYPE TABLE OF GTS_DATA WITH HEADER LINE.
DATA:MRP_ITEMS LIKE BAPI_MRP_ITEMS OCCURS 0 WITH HEADER LINE .
DATA:MRP_IND_LINES LIKE BAPI_MRP_IND_LINES OCCURS 0 WITH HEADER LINE .
SELECTION-SCREEN BEGIN OF BLOCK B1 WITH FRAME.
PARAMETERS: S_WERKS TYPE ZTMJCP-WERKS MODIF ID C1 OBLIGATORY. "工厂
SELECT-OPTIONS: S_MATMJ FOR ZTMJCP-MATNR_MJ MODIF ID C1 . "磨具编码
SELECT-OPTIONS: S_MATCP FOR ZTMJCP-MATNR_CP MODIF ID C1 . "产品物料编码
SELECTION-SCREEN END OF BLOCK B1.
*&---------------------------------------------------------------------*
*& Form SCREEN_SETTING
*&---------------------------------------------------------------------*
*& text
*&---------------------------------------------------------------------*
*& --> p1 text
*& <-- p2 text
*&---------------------------------------------------------------------*
FORM SCREEN_SETTING .
ENDFORM.
*&---------------------------------------------------------------------*
*& Form FOM_GETDATA
*&---------------------------------------------------------------------*
*& text
*&---------------------------------------------------------------------*
*& --> p1 text
*& <-- p2 text
*&---------------------------------------------------------------------*
FORM FOM_GETDATA .
CLEAR GT_DATA[] .
SELECT
MARC~WERKS
MARC~MATNR AS MATNR_MJ
MARA~ERSDA
ZTMJZD~ZMJQS
ZTMJZD~MJCSM
ZTMJZD~MJYSM1
ZTMJZD~MJYSM2
ZTMJZD~MJYSM3
ZTMJZD~MJCSM
ZTMJCP~MATNR_CP
ZTMJCP~ZMCQS
ZTMJCP~ZMCCN
ZTMJCP~ZCNDW
ZTMJCP~ZMJDM
INTO CORRESPONDING FIELDS OF TABLE GT_DATA[]
FROM MARC
INNER JOIN MARA ON MARC~MATNR = MARA~MATNR
INNER JOIN ZTMJZD ON MARC~WERKS = ZTMJZD~WERKS AND MARC~MATNR = ZTMJZD~MATNR
INNER JOIN ZTMJCP ON MARC~WERKS = ZTMJCP~WERKS AND MARC~MATNR = ZTMJCP~MATNR_MJ
WHERE MARC~WERKS = S_WERKS
AND MARA~MTART = 'Z005'
AND MARC~MATNR IN S_MATMJ
AND ZTMJCP~MATNR_CP IN S_MATCP
.
SORT GT_DATA[] BY WERKS MATNR_MJ MATNR_CP .
GT_DATA_A[] = GT_DATA[] .
DELETE ADJACENT DUPLICATES FROM GT_DATA_A[] COMPARING WERKS MATNR_MJ.
LOOP AT GT_DATA .
SELECT SINGLE PRDHA INTO GT_DATA-PRDHA FROM MARA
WHERE MATNR = GT_DATA-MATNR_CP
.
SELECT SINGLE MAKTX INTO GT_DATA-MAKTX FROM MAKT
WHERE MATNR = GT_DATA-MATNR_CP
.
*模具设计寿命(啤数)
GT_DATA-MJCSM = GT_DATA-MJCSM + GT_DATA-MJYSM1 + GT_DATA-MJYSM2 + GT_DATA-MJYSM3 .
*模具累计生产啤数
SELECT SUBSTRING( CHARG , 7 , 2 ) AS ZMJDM ,
MENGE ,
MATNR
FROM MSEG
WHERE BWART IN ( '101','102' )
AND WERKS = @GT_DATA-WERKS
AND MATNR = @GT_DATA-MATNR_CP
INTO TABLE @DATA(GT_RESULT)
.
DELETE GT_RESULT[] WHERE ZMJDM <> GT_DATA-ZMJDM .
CLEAR GT_DATA-MENGE.
LOOP AT GT_RESULT INTO DATA(GS_RESULT).
GT_DATA-MENGE = GT_DATA-MENGE + GS_RESULT-MENGE .
CLEAR GS_RESULT .
ENDLOOP.
CLEAR GT_RESULT[].
IF GT_DATA-ZMCQS <> 0.
GT_DATA-MJCSM_LJ = GT_DATA-MENGE / GT_DATA-ZMCQS .
ENDIF.
*最后一次使用日期
SELECT MAX( BUDAT_MKPF ) INTO GT_DATA-BUDAT_MKPF FROM MSEG
WHERE MATNR = GT_DATA-MATNR_CP
.
*模具对应物料总计划数量
CLEAR MRP_ITEMS[].
CLEAR MRP_IND_LINES[].
CALL FUNCTION 'BAPI_MATERIAL_STOCK_REQ_LIST'
EXPORTING
MATERIAL_LONG = GT_DATA-MATNR_CP
PLANT = GT_DATA-WERKS
GET_ITEM_DETAILS = 'X'
TABLES
MRP_ITEMS = MRP_ITEMS[]
MRP_IND_LINES = MRP_IND_LINES[].
LOOP AT MRP_IND_LINES WHERE MRP_ELEMNT = 'OrdRes' OR MRP_ELEMNT = 'OldRes'.
* READ TABLE MDPSX WITH KEY DAT00 = MDEZX-DAT01 BAUGR = MDEZX-EXTRA.
CLEAR MRP_ITEMS .
READ TABLE MRP_ITEMS INDEX SY-TABIX.
GT_DATA-MJCCP_SL = GT_DATA-MJCCP_SL + MRP_IND_LINES-REC_REQD_QTY .
CLEAR MRP_IND_LINES .
ENDLOOP.
MODIFY GT_DATA.
CLEAR GT_DATA.
ENDLOOP.
LOOP AT GT_DATA_A .
LOOP AT GT_DATA WHERE WERKS = GT_DATA_A-WERKS AND MATNR_MJ = GT_DATA_A-MATNR_MJ.
GT_DATA_A-MJCSY_PS = GT_DATA_A-MJCSY_PS + GT_DATA-MJCSM_LJ .
CLEAR GT_DATA .
ENDLOOP.
GT_DATA_A-MJCSY_PS = GT_DATA_A-MJCSM - GT_DATA_A-MJCSY_PS .
MODIFY GT_DATA_A .
CLEAR GT_DATA_A .
ENDLOOP.
LOOP AT GT_DATA.
READ TABLE GT_DATA_A WITH KEY WERKS = GT_DATA-WERKS MATNR_MJ = GT_DATA-MATNR_MJ .
*剩余寿命(啤数)
GT_DATA-MJCSY_PS = GT_DATA_A-MJCSY_PS .
*剩余寿命(数量)
GT_DATA-MJCSY_SL = GT_DATA-MJCSY_PS * GT_DATA-ZMCQS .
MODIFY GT_DATA.
CLEAR GT_DATA.
ENDLOOP.
ENDFORM.
*&---------------------------------------------------------------------*
*& Form FRM_DISPLAY
*&---------------------------------------------------------------------*
*& text
*&---------------------------------------------------------------------*
*& --> p1 text
*& <-- p2 text
*&---------------------------------------------------------------------*
FORM FRM_DISPLAY .
CLEAR S_LAYOUT.
S_LAYOUT-ZEBRA = 'X'.
S_LAYOUT-COLWIDTH_OPTIMIZE = 'X'.
S_LAYOUT-INFO_FIELDNAME = 'CLR'. "行颜色代码的字段
* s_layout-box_fieldname = 'BOX'.
PERFORM FRM_FILL_FIELD .
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
IS_LAYOUT = S_LAYOUT
IT_FIELDCAT = GT_FIELDCAT
I_CALLBACK_PROGRAM = SY-REPID
* I_CALLBACK_PF_STATUS_SET = 'PF_STATUS_SET'
* i_callback_html_top_of_page = 'HTML_TOP_OF_PAGE'
I_CALLBACK_USER_COMMAND = 'USER_COMMAND'
TABLES
T_OUTTAB = GT_DATA[].
ENDFORM.
FORM FRM_FILL_FIELD .
DATA: WA_FIELDCAT TYPE SLIS_FIELDCAT_ALV.
DEFINE FILL_FIELD.
wa_fieldcat-fieldname = &1.
wa_fieldcat-seltext_l = &2.
* IF wa_fieldcat-fieldname = 'MSLJH' or wa_fieldcat-fieldname = 'WCBJH'.
* wa_fieldcat-EMPHASIZE = 'C600'. "设置字段的颜色
* ENDIF.
*
* IF wa_fieldcat-fieldname = 'MSLMB' or wa_fieldcat-fieldname = 'WCBMB'.
* wa_fieldcat-EMPHASIZE = 'C710'. "设置字段的颜色
* ENDIF.
IF wa_fieldcat-fieldname = 'PLNBEZ' OR wa_fieldcat-fieldname = 'MATNR' .
wa_fieldcat-ref_tabname = 'MARA'.
wa_fieldcat-ref_fieldname = 'MATNR'.
ENDIF.
IF wa_fieldcat-fieldname = 'ARKTX' OR wa_fieldcat-fieldname = 'WAKTX' .
wa_fieldcat-ref_tabname = 'VBAP'.
wa_fieldcat-ref_fieldname = 'ARKTX'.
ENDIF.
IF wa_fieldcat-fieldname = 'AUFNR' .
wa_fieldcat-ref_tabname = 'AUFK'.
wa_fieldcat-ref_fieldname = 'AUFNR'.
ENDIF.
APPEND wa_fieldcat TO gt_fieldcat.
CLEAR wa_fieldcat.
END-OF-DEFINITION.
FILL_FIELD :
'WERKS' '工厂',
'MATNR_MJ' '模具编号',
'PRDHA' '系列',
'ERSDA' '模具创建日期',
'MATNR_CP' '产品编码',
'MAKTX' '产品名称',
'ZMCQS' '模具产品腔数',
'ZMJQS' '模具腔数',
'ZMCCN' '产能',
'ZMJDM' '模具简码',
'ZCNDW' '产能单位',
'MJCSM' '模具设计寿命(啤数)',
'MENGE' '累计数量',
'MJCSM_LJ' '模具累计生产啤数',
'MJCSY_PS' '剩余寿命(啤数)',
'MJCSY_SL' '剩余寿命(数量)',
'MJCCP_SL' '模具对应物料总计划数量',
'BUDAT_MKPF' '最后一次使用日期'.
ENDFORM.
FORM PF_STATUS_SET USING RT_EXTAB TYPE SLIS_T_EXTAB.
SET PF-STATUS 'STANDARD_FULLSCREEN'.
ENDFORM.
FORM USER_COMMAND USING I_UCOMM LIKE SY-UCOMM
IS_SELFIELD TYPE SLIS_SELFIELD.
DATA: REF TYPE REF TO CL_GUI_ALV_GRID.
DATA : LV_STABLE TYPE LVC_S_STBL. "刷新稳定性
RANGES: L_WERKS FOR T001W-WERKS.
RANGES: L_MATNR FOR MARA-MATNR.
DATA:L_BUKRS TYPE T001K-BUKRS.
LV_STABLE-ROW = '1'.
LV_STABLE-COL = '1'.
CALL FUNCTION 'GET_GLOBALS_FROM_SLVC_FULLSCR'
IMPORTING
E_GRID = REF.
CALL METHOD REF->CHECK_CHANGED_DATA.
CASE I_UCOMM.
WHEN '&IC1'."表示双击
* IF IS_SELFIELD-FIELDNAME = 'EBELN' .
* CHECK IS_SELFIELD-TABINDEX > 0.
* CLEAR GT_DATA .
* READ TABLE GT_DATA INDEX IS_SELFIELD-TABINDEX.
*
* CALL FUNCTION 'ME_DISPLAY_PURCHASE_DOCUMENT'
* EXPORTING
* I_EBELN = GT_DATA-EBELN
* EXCEPTIONS
* NOT_FOUND =
* 1
* NO_AUTHORITY = 2
* INVALID_CALL = 3
* PREVIEW_NOT_POSSIBLE = 4
* OTHERS = 5.
*
* IF SY-SUBRC
* <> 0.
*
* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER
* SY-MSGNO
*
* WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
*
* ENDIF.
*
* IF SY-SUBRC <> 0.
** Implement suitable error handling here
* ENDIF.
*
* ELSE .
* MESSAGE '请选择有效字段!'TYPE 'S' DISPLAY LIKE 'W'.
* ENDIF .
WHEN 'POST_T'.
ENDCASE.
CALL METHOD REF->REFRESH_TABLE_DISPLAY
EXPORTING
IS_STABLE = LV_STABLE.
ENDFORM.
INITIALIZATION .
AT SELECTION-SCREEN.
PERFORM SCREEN_SETTING.
START-OF-SELECTION.
PERFORM FOM_GETDATA .
PERFORM FRM_DISPLAY.
模具管理报表
最新推荐文章于 2023-03-15 15:51:25 发布