ABAP物料主数据字段增强实战:从需求分析到生产部署

1次阅读
没有评论

共计 1960 个字符,预计需要花费 5 分钟才能阅读完成。

image.webp

业务场景:为什么我们需要字段增强?

最近在化工行业项目中遇到一个典型需求:客户要求在所有物料主数据中增加 环保认证编号 字段,用于记录欧盟 REACH 法规的合规信息。这个需求涉及:

ABAP 物料主数据字段增强实战:从需求分析到生产部署

  • 扩展 MM03/MM02 事务码的界面
  • 存储到 MARA 表增强结构
  • 在 MRP 计算时校验该字段

这类需求在 SAP 实施中非常普遍,比如医药行业的 GMP 认证字段、汽车行业的 PPAP 审批状态等。传统做法是创建 Z 表关联,但会导致数据割裂——这正是 ABAP 字段增强技术的用武之地。

技术方案选型

方案对比表

技术类型 适用版本 维护性 升级安全 实现复杂度
用户出口 ECC
BADI ECC/S4
隐式增强 S4HANA
CDS 视图扩展 S4HANA 1909+ 极高

关键决策因素

  1. 用户出口(User Exit)
  2. 通过 CMOD 维护,查找 MM06E005 等出口
  3. 优点:代码直接插入标准程序
  4. 缺点:S4HANA 中部分出口已失效

  5. BADI 实现

  6. 使用MATERIAL_MAINTAIN_DISP BADI
  7. 示例代码框架:

    CLASS zcl_mm_material_badi IMPLEMENTATION.
      METHOD if_ex_material_maintain_disp~modify_screen.
        LOOP AT SCREEN.
          IF screen-group1 = 'ECO'.
            screen-active = 1.
            MODIFY SCREEN.
          ENDIF.
        ENDLOOP.
      ENDMETHOD.
    ENDCLASS.

  8. 隐式增强(Enhancement Spot)

  9. 在 SE80 中对 SAPLMGMM 包使用Enhancement Implementation
  10. 必须使用 ENHANCEMENT 1. 语法包裹代码

  11. CDS 视图扩展

  12. 通过 @UI 注解实现 Fiori 界面集成
  13. 需要 EXTEND VIEW 定义:
    @AbapCatalog.enhancementCategory: [#EXTENSIBLE_CHARACTERISTIC]
    extend view MARA with Z_I_MARA_EXT {@UI: { lineItem: [ { position: 120} ] }
      ReachCertification;
    }

完整实现步骤

步骤 1:数据字典扩展

  1. 创建 APPEND 结构:
  2. 事务码 SE11,结构名ZMM_MARA_EXT
  3. 字段 ZREACH_NO 类型 CHAR20

  4. 分配增强 ID:

  5. SPRO 路径:物料管理→主数据→字段增强
  6. 激活 CI_MARA 增强点

步骤 2:屏幕增强实现

* 在 PBO 模块中添加
MODULE customize_screen OUTPUT.
  LOOP AT SCREEN.
    CASE screen-name.
      WHEN 'MARA-MEINS'.
        screen-required = 2.  " 设置必输
    ENDCASE.
    MODIFY SCREEN.
  ENDLOOP.
ENDMODULE.

步骤 3:校验逻辑实现

CLASS zcl_mm_reach_validator DEFINITION.
  PUBLIC SECTION.
    CLASS-METHODS validate_reach_no
      IMPORTING iv_reach_no TYPE zreach_no
      RAISING   cx_badi_multiple_implement.
ENDCLASS.

METHOD validate_reach_no.
  IF iv_reach_no IS INITIAL.
    RETURN.
  ENDIF.

  " 调用外部 API 校验 REACH 编号
  DATA(lo_client) = NEW zco_reach_ws_client( ).
  IF NOT lo_client->check_validity(iv_reach_no).
    MESSAGE e398(00) WITH 'REACH 认证无效'.
  ENDIF.
ENDMETHOD.

生产环境部署要点

传输策略

  • 必须包含以下对象:
  • 数据字典增强(结构 / 域)
  • 屏幕增强程序
  • BADI 实现类
  • 权限对象(如需)

  • 推荐分组:

    $T1 - 数据字典
    $T2 - 程序增强
    $T3 - 配置变更

多系统同步

  1. 使用 SCOT 配置传输路线
  2. 在 DEV 系统测试后:
  3. 先传输 QAS 验证
  4. 生产系统必须用 SCC1 副本传输
  5. 使用 SCMON 监控增强点激活状态

延伸思考

Fiori 适配难题

当传统 GUI 增强完成后,发现 Fiori 的 ” 管理物料 ” 应用未显示新字段。这是因为:

  • Fiori 基于 CDS 元数据驱动
  • 需要额外完成:
  • 扩展 ODATA 服务
  • 添加 UI 注解
  • 适配 ValueHelp

MDG 影响分析

在启用物料主数据治理 (MDG) 的场景下:

  • 需检查数据复制框架 (DRF) 配置
  • 可能需要在 CRO 事务中映射字段
  • 影响中央数据分发 (CDD) 性能

经验总结

通过这次实战,深刻体会到 S4HANA 的增强理念变化:

  1. 从代码级增强转向元数据驱动
  2. 兼容性问题主要发生在:
  3. 版本升级时(如 1909→2020)
  4. Fiori 与传统事务混合使用场景
  5. 推荐采用 ABAP Test Cockpit(ATC)检查增强代码质量
正文完
 0
评论(没有评论)