模具管理报表

*&---------------------------------------------------------------------*
*& 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输出所需变量
DATAS_LAYOUT    TYPE SLIS_LAYOUT_ALV,
      GT_FIELDCAT TYPE SLIS_T_FIELDCAT_ALV.

TYPESBEGIN 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.

DATAGT_DATA      TYPE TABLE OF GTS_DATA WITH HEADER LINE.
DATAGT_DATA_A    TYPE TABLE OF GTS_DATA WITH HEADER LINE.
DATA:MRP_ITEMS     LIKE BAPI_MRP_ITEMS OCCURS WITH HEADER LINE  .
DATA:MRP_IND_LINES LIKE BAPI_MRP_IND_LINES OCCURS WITH HEADER LINE  .

SELECTION-SCREEN BEGIN OF BLOCK B1 WITH FRAME.
PARAMETERS:     S_WERKS  TYPE  ZTMJCP-WERKS      MODIF ID C1 OBLIGATORY.              "工厂
SELECT-OPTIONSS_MATMJ  FOR   ZTMJCP-MATNR_MJ   MODIF ID C1 .                        "磨具编码
SELECT-OPTIONSS_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 SUBSTRINGCHARG 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 MAXBUDAT_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.
  DATAREF TYPE REF TO CL_GUI_ALV_GRID.
  DATA LV_STABLE TYPE LVC_S_STBL.   "刷新稳定性
  RANGESL_WERKS FOR T001W-WERKS.
  RANGESL_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.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值