MD04中计划工单的相关数据

来源:互联网 发布:java写一个简单的爬虫 编辑:程序博客网 时间:2024/05/01 17:57

通过调用函数《MD_STOCK_REQUIREMENTS_LIST_API》,将MD04中运行结果取出,展示计划工单的相关数据。

*&---------------------------------------------------------------------**& Report  XXXXXXXX*&---------------------------------------------------------------------**&PROGRAM NAME : <ZPP003>*---------------------------------------------------------------------** VERSION:            V1.0* DATE CREATED :      2016/07/26* CREATED BY   :      Ma Haifeng* TRANSPORT REQUEST:  XXXXXXXXXX* DESCRIPTION  :      Stock Requirements List* request raised by:  Li honghuaREPORT zpp003.********************************* INNITIALIZATION********************************TABLES : marc,mdkp.TYPES : BEGIN OF ltype_marc,        matnr TYPE marc-matnr,        werks TYPE marc-werks,        END OF ltype_marc.TYPES : BEGIN OF ltype_mdkp,        matnr TYPE mdkp-matnr,        meins TYPE mdkp-meins,        plwrk TYPE mdkp-plwrk,        END OF ltype_mdkp.TYPES : BEGIN OF ltype_makt,        matnr TYPE makt-matnr,        maktx TYPE makt-maktx,        END OF ltype_makt.DATA : lt_makt TYPE TABLE OF ltype_makt,       ls_makt LIKE LINE OF  lt_makt.DATA : lt_mdkp TYPE TABLE OF ltype_mdkp,       ls_mdkp LIKE LINE OF lt_mdkp.DATA : lt_display TYPE TABLE OF zspp_require_list,       ls_display LIKE LINE OF lt_display.********************************* SELECTION-SCREEN********************************SELECTION-SCREEN BEGIN OF BLOCK blk01 WITH FRAME.SELECT-OPTIONS:m_matnr FOR marc-matnr NO INTERVALS.PARAMETER m_werks LIKE  marc-werks DEFAULT '0080'.SELECTION-SCREEN END OF BLOCK blk01.PERFORM frm_get_data.PERFORM frm_alv_display.********************************* START OF SELECTION*********************************&---------------------------------------------------------------------**&      Form  FRM_GET_DATA*&---------------------------------------------------------------------**       text*----------------------------------------------------------------------**  -->  p1        text*  <--  p2        text*----------------------------------------------------------------------*FORM frm_get_data .*  DATA : lt_innerinfo TYPE TABLE OF mdez,*         ls_innerinfo LIKE LINE OF lt_innerinfo.  DATA : lt_headinfo TYPE TABLE OF mt61d,         ls_headinfo LIKE LINE OF lt_headinfo.  DATA : lt_innerinfo TYPE TABLE OF mdps,         ls_innerinfo LIKE LINE OF lt_innerinfo.  DATA : num TYPE c.  DATA : l_matnr TYPE marc-matnr.  DATA : lt_mdisplay TYPE TABLE OF zspp_require_list,         ls_mdisplay LIKE LINE OF lt_mdisplay."中间表  DATA : lt_matnr LIKE TABLE OF m_matnr,         ls_matnr LIKE LINE OF lt_matnr.  loop AT m_matnr.  APPEND m_matnr-low to lt_matnr.  ENDLOOP.  IF m_matnr IS INITIAL .    MESSAGE 'Please input matnr!' TYPE 'E'.  ELSE.    LOOP AT lt_matnr INTO ls_matnr.      "补0函数      IF ls_matnr-low IS NOT INITIAL.        CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT'          EXPORTING            input  = ls_matnr-low          IMPORTING            output = ls_matnr-low.      ENDIF.      CALL FUNCTION 'MD_STOCK_REQUIREMENTS_LIST_API'        EXPORTING          matnr                    = ls_matnr-low          werks                    = m_werks*        IMPORTING*          e_mt61d                  = ls_headinfo*         E_MDKP                   =*         E_CM61M                  =*         E_MDSTA                  =*         E_ERGBZ                  =        TABLES          mdpsx                    = lt_innerinfo*         mdezx                    = lt_innerinfo*         MDSUX                    =        EXCEPTIONS          material_plant_not_found = 1          plant_not_found          = 2          OTHERS                   = 3.      DELETE lt_innerinfo WHERE delkz NE 'PA'. "// 筛选计划公工单数据      LOOP AT lt_innerinfo INTO ls_innerinfo.        ls_display-dat02 = ls_innerinfo-dat02.        ls_display-dat01 = ls_innerinfo-dat01.        ls_display-mng01 = ls_innerinfo-mng01.        ls_display-delnr = ls_innerinfo-delnr.        ls_display-dat00 = ls_innerinfo-dat02.        ls_display-dat_1 = ls_display-dat01 - ls_display-dat00.        ls_display-matnr = ls_matnr-low.        APPEND ls_display TO lt_display.      ENDLOOP.    ENDLOOP.  ENDIF.  CLEAR lt_makt[].  SELECT    matnr    maktx    FROM makt    INTO CORRESPONDING FIELDS OF TABLE lt_makt    FOR ALL ENTRIES IN lt_display    WHERE matnr = lt_display-matnr    AND spras = sy-langu.  CLEAR lt_mdkp[].  SELECT    matnr    meins    plwrk    FROM mdkp    INTO CORRESPONDING FIELDS OF TABLE lt_mdkp    FOR ALL ENTRIES IN lt_display    WHERE matnr = lt_display-matnr    AND   plwrk = m_werks.  CLEAR ls_display.  LOOP AT lt_display INTO ls_display.    CLEAR ls_makt.    READ TABLE lt_makt INTO ls_makt WITH KEY matnr = ls_display-matnr.    ls_display-maktx = ls_makt-maktx.    CLEAR ls_mdkp.    READ TABLE lt_mdkp INTO ls_mdkp WITH KEY matnr = ls_display-matnr.    ls_display-meins = ls_mdkp-meins.    MODIFY lt_display FROM ls_display.    CLEAR ls_display.  ENDLOOP.ENDFORM.                    " FRM_GET_DATA*&---------------------------------------------------------------------**&      Form  FRM_ALV_DISPLAY*&---------------------------------------------------------------------**       text*----------------------------------------------------------------------**  -->  p1        text*  <--  p2        text*----------------------------------------------------------------------*FORM frm_alv_display .  DATA : ls_layout   TYPE slis_layout_alv.  DATA : lt_fieldcat TYPE slis_t_fieldcat_alv.  DATA : l_repid     TYPE sy-repid.  PERFORM frm_build_fieldcat CHANGING lt_fieldcat.  PERFORM frm_build_layout CHANGING ls_layout.  CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'    EXPORTING      i_callback_program       = sy-repid      it_fieldcat              = lt_fieldcat      is_layout                = ls_layout      i_callback_user_command  = 'FRM_USER_COMMAND'*     i_callback_pf_status_set = 'FRM_PF_STATUS_SET'    TABLES      t_outtab                 = lt_display.ENDFORM.                    " FRM_ALV_DISPLAY*&---------------------------------------------------------------------**&      Form  frm_build_fieldcat*&---------------------------------------------------------------------**       text*----------------------------------------------------------------------**      -->CT_FIELDCAT  text*----------------------------------------------------------------------*FORM frm_build_fieldcat  CHANGING ct_fieldcat TYPE slis_t_fieldcat_alv.  DATA : ls_fieldcat LIKE LINE OF ct_fieldcat.  REFRESH ct_fieldcat.  CALL FUNCTION 'REUSE_ALV_FIELDCATALOG_MERGE'    EXPORTING      i_structure_name = 'ZSPP_REQUIRE_LIST'    CHANGING      ct_fieldcat      = ct_fieldcat.  LOOP AT ct_fieldcat INTO ls_fieldcat.    CASE ls_fieldcat-fieldname.      WHEN 'MNG01'.        IF sy-langu = '1'.          ls_fieldcat-seltext_l = '工单数量'.        ELSE.          ls_fieldcat-seltext_l = 'Order quantity'.          ls_fieldcat-seltext_m = 'Order quantity'.          ls_fieldcat-seltext_s = 'Order quantity'.        ENDIF.      WHEN 'DELNR'.        IF sy-langu = '1'.          ls_fieldcat-seltext_l = '计划工单'.        ELSE.          ls_fieldcat-seltext_l = 'Planned Order'.          ls_fieldcat-seltext_m = 'Planned Order'.          ls_fieldcat-seltext_s = 'planned Order'.        ENDIF.      WHEN 'DAT_1'.        IF sy-langu = '1'.          ls_fieldcat-seltext_l = '差异天数'.        ELSE.          ls_fieldcat-seltext_l = 'Difference days'.          ls_fieldcat-seltext_m = 'Difference days'.          ls_fieldcat-seltext_s = 'Difference days'.        ENDIF.      WHEN 'DAT00'.        IF sy-langu = '1'.          ls_fieldcat-seltext_l = '需求日期'.        ELSE.          ls_fieldcat-seltext_l = 'Request date'.          ls_fieldcat-seltext_m = 'Request date'.          ls_fieldcat-seltext_s = 'Request date'.        ENDIF.      WHEN 'DAT02'.        IF sy-langu = '1'.          ls_fieldcat-seltext_l = '工单开始日期'.        ELSE.          ls_fieldcat-seltext_l = 'Orderstart'.          ls_fieldcat-seltext_m = 'Orderstart'.          ls_fieldcat-seltext_s = 'Orderstart'.        ENDIF.      WHEN 'DAT01'.        IF sy-langu = '1'.          ls_fieldcat-seltext_l = '工单结束日期'.        ELSE.          ls_fieldcat-seltext_l = 'Orderfinish'.          ls_fieldcat-seltext_m = 'Orderfinish'.          ls_fieldcat-seltext_s = 'Orderfinish'.        ENDIF.    ENDCASE.    MODIFY ct_fieldcat FROM ls_fieldcat TRANSPORTING seltext_l seltext_m seltext_s.  ENDLOOP.ENDFORM.                    "frm_build_fieldcat*&---------------------------------------------------------------------**&      Form  frm_build_layout*&---------------------------------------------------------------------**       text*----------------------------------------------------------------------**      -->CS_LAYOUT  text*----------------------------------------------------------------------*FORM frm_build_layout  CHANGING cs_layout TYPE slis_layout_alv.  CLEAR cs_layout.  MOVE 'X' TO cs_layout-detail_popup.  MOVE 'X' TO cs_layout-colwidth_optimize.  MOVE 'COLOR' TO cs_layout-info_fieldname.*  MOVE 'SELECTED' TO cs_layout-box_fieldname.ENDFORM.                    " FRM_BUILD_LAYOUT*&---------------------------------------------------------------------**&      Form  sub_user_command*&---------------------------------------------------------------------**       text*----------------------------------------------------------------------**      -->R_UCOMM           text*      -->US_SELECTE_FIELD  text*----------------------------------------------------------------------*FORM frm_user_command USING r_ucomm LIKE sy-ucomm                      us_selecte_field TYPE slis_selfield.  CASE r_ucomm.    WHEN '&IC1'.                 "双击事件的功能码      READ TABLE lt_display INTO ls_display INDEX us_selecte_field-tabindex.      IF us_selecte_field-fieldname = 'MATNR'.        SET PARAMETER ID 'MAT' FIELD ls_display-matnr.        CALL TRANSACTION 'MM03' AND SKIP FIRST SCREEN.      ELSEIF us_selecte_field-fieldname = 'DELNR'.        SET PARAMETER ID 'BES' FIELD ls_display-delnr.        IF ls_display-delnr IS NOT INITIAL.          CALL TRANSACTION 'MD13' AND SKIP FIRST SCREEN.        ELSE.          MESSAGE 'Purchase Order is null' TYPE 'E'.        ENDIF.      ENDIF.  ENDCASE.ENDFORM.                    " SUB_USER_COMMAND


0 0