MM01 物料主数据批导

1业务场景

期初批量导入物料主数据时,有以下要求:

  1. 维护相应的物料视图
  2. 将物料维护到多个工厂
  3. 可能需要对物料进行分割评估
  4. 对某些字段,需要在BAPI中做增强处理进行维护

2代码实现

2.1物料基本数据

1.基本数据

博客频遭盗窃,浏览全文,请移步公众号“斌将军”,输入关键字“物料批导”查看

MM01 物料主数据批导_第1张图片

输入项目定义编号和参数文件

MM01 物料主数据批导_第2张图片

2.声明要维护的视图

MM01 物料主数据批导_第3张图片

3.之后根据前台相应字段所在的表,在BAPI参数中找到对应的BAPI参数并维护即可

4.最后调用BAPI_MATERIAL_SAVEDATA创建物料主数据

该BAPI可以满足创建、修改物料,还可以将物料扩展到其他工厂

2.2维护物料长文本

2.3维护分类视图

2.4维护质量视图

2.5启用分割评估

2.5启用分割评估

在实际业务中,需要对物料的会计视图,启用分割评估。

前台操作为,MM02,进入会计视图,并输入现有的工厂,输入评估类别,保存

MM01 物料主数据批导_第4张图片

退出后MM01进入,输入工厂和评估类型

3.物料主数据增强

在通过BAPI维护过程中,发现有的物料在BAPI参数中找不到,此时就需要通过增强维护。

物料基本视图2中有物料时可配置的字段,需要打钩,而BAPI参数中找不到该参数,但是这个参数是存在于MARA表中的KZKFG

在自定义BAPI结构中,添加该字段

MM01 物料主数据批导_第5张图片

还有更新结构,也要添加,注意组件类型为更新类型

MM01 物料主数据批导_第6张图片

定义参数

代码示例:

MM01 物料主数据批导_第7张图片

MM01 物料主数据批导_第8张图片

4.问题记录

4.1配置问题

4.2删除物料

4.2.1 集团级别删除物料

4.2.2 工厂级别删除物料

4.3报错问题

4.3.1 字段BWKEY已被不一致地转移或字段是空的

5.源代码 

"-----------------------------@斌将军-----------------------------
FORM frm_bapi_creat.

*--------------------------------------------------------------------*
*           BAPI 字段
*--------------------------------------------------------------------*
*  物料文本
  DATA:ls_header TYPE thead, "
       lt_lines  TYPE STANDARD TABLE OF tline,
       ls_lines  TYPE tline.

  DATA: ls_mdma    LIKE mdma,
        ls_dpop    LIKE dpop,
        ls_sdibe   TYPE sdibe_massfields,
        ls_return2 TYPE bapireturn1,
        lt_return2 TYPE TABLE OF bapireturn1.
  "质量视图
  DATA:ls_qmat TYPE bapi1001004_qmat,
       lt_qmat TYPE TABLE OF bapi1001004_qmat.

  DATA:lv_land1        TYPE t001w-land1, "国家代码
       lv_tax_type     TYPE tatyp VALUE 'MWST', "税类别
       lv_matnr        TYPE mara-matnr, "物料号
       lv_objectkeynew TYPE bapi1003_key-object,
       lv_message      TYPE char200, "消息
       lv_msg          TYPE char200, "消息
       lv_check        TYPE char2. "检查

  "进度条使用标志
  CLEAR:gv_flag.
  DESCRIBE TABLE gt_template LINES gv_lines.
  LOOP AT gt_template INTO gs_template WHERE icon <> icon_led_red.

    "当前条目
    gv_tabix = gv_tabix + 1.
    "进度条
    PERFORM frm_indicator USING gv_tabix.

    REFRESH:gt_makt[],gt_mlan[],gt_mltx[],gt_marm[],gt_marmx[],gt_mean[],gt_return.
    CLEAR:gs_headdata,gs_mara,gs_marax,gs_marc,gs_marcx,gs_mpop,gs_mpopx,gs_mpgd,
    gs_mpgdx,gs_mard,gs_mardx,gs_mlgn,gs_mlgnx,gs_mvke,gs_mvkex,gs_mlgt,gs_mlgtx,
    gs_mbew,gs_mbewx,gs_return,gt_makt,gt_mlan,gt_mltx,gt_marm,gt_marmx,gt_mean.
*&---------------------------------------------------------------------*
*& 基本数据1
*&---------------------------------------------------------------------*
    gs_headdata-material = gs_template-matnr.  "SAP物料编码

    gs_headdata-ind_sector = gs_template-mbrsh.  "行业
    gs_headdata-matl_type = gs_template-mtart.  "物料类型

    gs_marc-plant = gs_template-werks.  "工厂
    gs_marcx-plant = gs_template-werks.
*--------------------------------------------------------------------*
*维护视图
*--------------------------------------------------------------------*
*    IF p_jb = 'X'.
    gs_headdata-basic_view = 'X'."基本数据视图
*    ENDIF.
    IF p_xs = 'X'.
      gs_headdata-sales_view = 'X'."销售视图
    ENDIF.
    IF p_cg = 'X'.
      gs_headdata-purchase_view = 'X'."采购视图
    ENDIF.
    IF p_mrp = 'X'.
      gs_headdata-mrp_view = 'X'."MRP视图
    ENDIF.
*    IF p_gz = 'X'.
*      gs_headdata-work_sched_view = 'X'."工作计划视图
*    ENDIF.
    IF p_kj = 'X'.
      gs_headdata-account_view = 'X'."会计视图
    ENDIF.
    IF p_cb = 'X'.
      gs_headdata-cost_view = 'X'."成本视图
    ENDIF.
    IF p_zl = 'X'.
      gs_headdata-quality_view = 'X'."质量视图
    ENDIF.
    IF p_cc = 'X'.
      gs_headdata-storage_view = 'X'."存储视图
    ENDIF.
*    IF p_ck = 'X'.
*      gs_headdata-warehouse_view = 'X'."仓库管理视图
*    ENDIF.

你可能感兴趣的:(精选,ABAP)