批量查询MD04库存/需求清单

您所在的位置:网站首页 sap批量查询物料库存信息的方法 批量查询MD04库存/需求清单

批量查询MD04库存/需求清单

2024-06-30 23:46| 来源: 网络整理| 查看: 265

SAP MD04用于MRP的结果查询,其功能强大,标准功能有:转换计划订单到生产订单/采购申请、查询/更改MRP元素对应的单据、查询/更改物料主数据等,还可以附加标准菜单或者自定义的事务码上去。

此报表按物料MRP的结果进行统计,以当前月份往后一年,动态显示未来每月的需求数。重要的是多物料多行显示。

先看效果如下:

图片

图片

图片

业务初学ABAP代码有点啰嗦,代码如下:

REPORT zpp004. *&---------------------------------------------------------------------* *&---------------------------------------------------------------------* TYPE-POOLS:abap. TABLES:mara,marc,mdps,sscrfields. TYPES: BEGIN OF ztpp_mrp_h, werks TYPE char30, matnr TYPE char18, datum TYPE char30, r_num TYPE char30, mtart TYPE char30, matkl TYPE char30, maktx TYPE char30, maabc TYPE char30, meins TYPE char30, plifz TYPE char30, "计划交货 webaz TYPE char30, "交货处理 bstmi TYPE char30, "MOQ bstrf TYPE char30, "MPQ verpr TYPE char30, stprs TYPE char30, eisbe TYPE char30, "安全库存 sum01 TYPE char30, "可用库存 sum02 TYPE char30, "固定的收货 采购订单 sum03 TYPE char30, "计划的收货 sum04 TYPE char30, "当前消耗总量 固定发货 sum05 TYPE char30, " 计划的发货 END OF ztpp_mrp_h. DATA: BEGIN OF ztpp_mrp_i OCCURS 0, dat00(8) TYPE c, " LIKE MDPS-DAT00, "收货/需求日期 werks LIKE mard-werks, "工厂 matnr LIKE mara-matnr, "物料号 datum LIKE sy-datum, "日期 r_num(20) TYPE c, "序号 r_item TYPE mdps-rsnum, "行项目计数器 delkz LIKE mdps-delkz, "MRP 元素 plumi LIKE mdps-plumi , "收货/发货标识 mng01 LIKE mdps-mng01 , "收货数量或需求数量 umdat LIKE sy-datum, "再计划日期 delnr LIKE mdps-delnr, "MRP元素号 del12 LIKE mdps-del12, "MRP元素号 delps LIKE mdps-delps, "MRP元素项 baugr LIKE mdps-baugr, "高层次组装的物料号 mng03 LIKE mdps-mng03, tpmng LIKE mdps-tpmng, sum04 LIKE mdps-mng03, END OF ztpp_mrp_i. DATA:BEGIN OF it_mat_num OCCURS 0, werks LIKE marc-werks, matnr LIKE mara-matnr, matkl TYPE mara-matkl, maktx TYPE makt-maktx, meins TYPE mara-meins, plifz TYPE marc-plifz, "计划交货 webaz TYPE marc-webaz, "交货处理 bstmi TYPE marc-bstmi, "批量大小 verpr TYPE mbew-verpr, stprs TYPE mbew-stprs, sum04(13) TYPE p DECIMALS 3, END OF it_mat_num. DATA:it_mrph TYPE TABLE OF zpp_md04_strc WITH HEADER LINE, it_mdps LIKE TABLE OF ztpp_mrp_i WITH HEADER LINE, ls_mdps LIKE TABLE OF it_mdps WITH HEADER LINE. DATA: lt_headinfo TYPE TABLE OF mt61d, ls_headinfo LIKE LINE OF lt_headinfo, lt_mdsta TYPE TABLE OF mdsta, ls_mdsta LIKE LINE OF lt_mdsta, lt_mdkp TYPE TABLE OF mdkp, ls_mdkp LIKE LINE OF lt_mdkp, lt_innerinfo TYPE TABLE OF mdez, ls_innerinfo LIKE LINE OF lt_innerinfo. *ALV字段列表。 DATA: gt_fieldcat TYPE lvc_t_fcat. DATA : BEGIN OF iinv OCCURS 0 , matnr LIKE mard-matnr, qty LIKE mard-labst, END OF iinv. DATA zmmlist LIKE TABLE OF zmm6002b_ta_2 WITH HEADER LINE. DATA zmoqlist LIKE TABLE OF zmm6002b_ta_3 WITH HEADER LINE. DATA:l_menge TYPE p DECIMALS 3. DATA:it_mdpsx LIKE TABLE OF mdps WITH HEADER LINE, it_mdezx LIKE TABLE OF mdez WITH HEADER LINE, it_mdsux LIKE TABLE OF mdsu WITH HEADER LINE. DATA: g_lfgja LIKE marv-lfgja. "當期年度 DATA: i_lfmon TYPE zmm6002b_ta_1-lfmon. FIELD-SYMBOLS: TYPE STANDARD TABLE, TYPE any, TYPE STANDARD TABLE, TYPE any, TYPE STANDARD TABLE, TYPE any. DATA: gs_fieldcat TYPE lvc_s_fcat, gs_functxt TYPE smp_dyntxt. DATA:p_col TYPE i. DATA: gw_layout TYPE slis_layout_alv, t_fieldcat TYPE slis_t_fieldcat_alv, w_fieldcat TYPE LINE OF slis_t_fieldcat_alv, gw_glay TYPE lvc_s_glay. DEFINE field_frame. CLEAR W_FIELDCAT. W_FIELDCAT-FIELDNAME = &1. W_FIELDCAT-SELTEXT_S = &2. W_FIELDCAT-NO_ZERO = &3. W_FIELDCAT-EMPHASIZE = &4. APPEND W_FIELDCAT TO T_FIELDCAT. END-OF-DEFINITION. FIELD-SYMBOLS: TYPE STANDARD TABLE, TYPE any. DATA: lr_table TYPE REF TO data, lr_line TYPE REF TO data. CONSTANTS:message_error TYPE c VALUE 'E', true TYPE c VALUE 'X'. SELECTION-SCREEN BEGIN OF BLOCK b1 . PARAMETERS: p_bukrs LIKE marv-bukrs OBLIGATORY DEFAULT '1000', p_werks LIKE marc-werks OBLIGATORY DEFAULT '1000'. SELECT-OPTIONS: p_budat FOR sy-datum, s_matnr FOR marc-matnr . SELECTION-SCREEN END OF BLOCK b1. START-OF-SELECTION. PERFORM frm_create_dyn_alv . PERFORM get_material. PERFORM fs_table. PERFORM display_alv . *&---------------------------------------------------------------------* *& FORM GET_DATA *&---------------------------------------------------------------------* * TEXT *----------------------------------------------------------------------* * --> P1 TEXT * describe_by_data EXPORTING p_data = us_data RECEIVING p_descr_ref = lo_descr_ref. lo_struc ?= lo_descr_ref. ct_comp = lo_struc->components. ENDFORM. *&---------------------------------------------------------------------* *& Form FRM_CREATE_DYN_ALV *&---------------------------------------------------------------------* *& 构建动态ALV *&---------------------------------------------------------------------* FORM frm_create_dyn_alv . DATA: ls_string TYPE string. DATA: dyear LIKE marv-lfgja, "當期年度 dmon LIKE marv-lfmon, "當期月份 nyear LIKE marv-lfgja, "下一年年度 nmon LIKE marv-lfmon, "當期月份 e_month TYPE i, lv_fname TYPE string, yyyy LIKE sy-datum. DATA: lo_tab TYPE REF TO data, la_tab TYPE REF TO data, lo_ws TYPE REF TO data, lo_wa TYPE REF TO data, lv_index TYPE i, lv_datefname TYPE char9, lt_split TYPE STANDARD TABLE OF string, lv_year TYPE n LENGTH 4, lv_month TYPE n LENGTH 2, lv_day TYPE n LENGTH 2, lv_col_pos TYPE lvc_colpos. " CLEAR . "READ TABLE INTO INDEX 1. * 设置字段控制(固定列部分) CALL FUNCTION 'LVC_FIELDCATALOG_MERGE' EXPORTING i_structure_name = 'ZPP_MD04_STRC' i_bypassing_buffer = 'X' CHANGING ct_fieldcat = gt_fieldcat EXCEPTIONS inconsistent_interface = 1 program_error = 2 OTHERS = 3. * 从第23列开始为动态列 lv_index = 23. lv_col_pos = lines( gt_fieldcat ). dyear = sy-datum+0(4). "年度 dmon = sy-datum+4(2). "月度 yyyy = dyear && '1231'. CALL FUNCTION 'FIMA_DAYS_AND_MONTHS_AND_YEARS' EXPORTING i_date_from = sy-datum i_date_to = yyyy IMPORTING e_months = e_month. DO e_month TIMES. "从当前月度,动态添加当年的月度 lv_col_pos = lv_col_pos + 1. IF sy-index = 1. lv_fname = |{ dyear }{ dmon }|. PERFORM frm_fill_fieldcat USING lv_col_pos lv_fname lv_fname. ELSE. dmon = dmon + 1. lv_fname = |{ dyear }{ dmon }|. PERFORM frm_fill_fieldcat USING lv_col_pos lv_fname lv_fname. ENDIF. ENDDO. nyear = dyear + 1 . DATA: yy TYPE string VALUE '下一年'. * 添加动态列(预留,预留至当年年底至下一年的月份) DO 12 TIMES. lv_col_pos = lv_col_pos + 1. nmon = sy-index. lv_fname = |{ nyear }{ nmon }|. PERFORM frm_fill_fieldcat USING lv_col_pos lv_fname lv_fname. ENDDO. SORT gt_fieldcat BY col_pos. " 根据列创建动态内表 CALL METHOD cl_alv_table_create=>create_dynamic_table EXPORTING it_fieldcatalog = gt_fieldcat IMPORTING ep_table = lo_tab EXCEPTIONS generate_subpool_dir_full = 1 OTHERS = 2. ASSIGN lo_tab->* TO . CREATE DATA lo_ws LIKE LINE OF . ASSIGN lo_ws->* TO . ENDFORM. *&---------------------------------------------------------------------* *& --> UV_FIELDDESC 字段描述 *& --> UV_FIELDNAME 字段名 *& --> UV_REF_TABLE 参考表 *& --> UV_REF_FIELD 参考字段 *& --> UV_COLPOS 列位置 *&---------------------------------------------------------------------* FORM frm_add_fieldcat USING uv_fielddesc uv_fieldname VALUE(uv_ref_table) VALUE(uv_ref_field) uv_colpos. gs_fieldcat-fieldname = uv_fieldname. gs_fieldcat-col_pos = uv_colpos. gs_fieldcat-reptext = uv_fielddesc. gs_fieldcat-scrtext_l = uv_fielddesc. gs_fieldcat-scrtext_m = uv_fielddesc. gs_fieldcat-scrtext_s = uv_fielddesc. gs_fieldcat-ref_table = uv_ref_table. gs_fieldcat-ref_field = uv_ref_field. APPEND gs_fieldcat TO gt_fieldcat. CLEAR gs_fieldcat. ENDFORM. *&---------------------------------------------------------------------* *& 添加动态字段 *&---------------------------------------------------------------------* *& --> UV_FNAME *& --> UV_REF_FIELD *& describe_by_name EXPORTING p_name = uv_ref_field RECEIVING p_descr_ref = lo_type EXCEPTIONS type_not_found = 1 OTHERS = 2. ls_compoments-type ?= lo_type. APPEND ls_compoments TO ct_components. CLEAR ls_compoments. ENDFORM. *&---------------------------------------------------------------------* *& Form TABLE *&---------------------------------------------------------------------* * text *----------------------------------------------------------------------* * --> p1 text *


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3