ABAP主数据基本视图3屏幕增强实战指南:从零开始到生产部署

1次阅读
没有评论

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

image.webp

业务背景与标准屏幕局限

在 SAP 系统中,主数据(如物料、供应商)的维护通常通过标准化事务码(如 MM01)进行。系统预置的屏幕布局虽然能满足基础需求,但实际业务中常遇到这些情况:

ABAP 主数据基本视图 3 屏幕增强实战指南:从零开始到生产部署

  • 需要采集额外字段(如内部编码规则)
  • 行业特定字段不在标准屏幕中
  • 不同子公司需要差异化字段

标准视图 3(基本视图)常用于存储核心业务属性,其增强需求最为频繁。但直接修改 SAP 标准程序会引发升级冲突,必须使用官方推荐的增强技术。

增强技术选型对比

SAP 提供了多种增强方式,各有适用场景:

  1. User Exit(过时但稳定)
  2. 适用于 SAP 4.6C 及更早版本
  3. 通过预置的子程序出口实现
  4. 缺点:修改需要 Access Key

  5. BADI(主流选择)

  6. 基于面向对象的接口实现
  7. 支持多重实现和过滤器
  8. 示例:MM06E_BADI用于物料主数据

  9. Enhancement Spot(新推荐)

  10. 使用隐式 / 显式增强点
  11. 不需要预定义出口
  12. 适合字段级简单增强

对于视图 3 的字段扩展,推荐组合使用 BADI+ 隐式增强,既能保持标准功能又能灵活扩展。

实战:从 CMOD 到 SE80 完整流程

第一步:创建增强项目

  1. 事务码 CMOD 创建项目(命名规范:Z+ 模块代号,如 ZMM001)
  2. 分配包和传输请求(必须开发类)
  3. 添加增强MM06E001(物料主数据标准增强)

第二步:字段扩展实现

在 SE80 中操作:

  1. 找到程序SAPLMGMM,展开屏幕6000(视图 3 基础屏幕)
  2. 右键选择 Enhancement->Create 创建隐式增强
  3. INCLUDE ZX... 中添加字段定义:
* 屏幕 PBO 逻辑
MODULE status_6000 OUTPUT.
  LOOP AT SCREEN.
    CASE screen-name.
      WHEN 'ZMY_FIELD'.  " 自定义字段名
        IF gv_edit_mode = 'X'.
          screen-active = 1.
        ENDIF.
    ENDCASE.
    MODIFY SCREEN.
  ENDLOOP.
ENDMODULE.

第三步:BADI 实现数据校验

创建 BADI 实现类:

METHOD if_ex_mm06e_badi~post.
  " 字段值检查示例
  IF is_mara-matnr(1) = 'Z' AND 
     is_mara-zmy_field IS INITIAL.
    MESSAGE e888(sabapdocu) WITH '自定义字段必填'.
  ENDIF.
ENDMETHOD.

调用 BADI 标准模式:

DATA: lo_badi TYPE REF TO if_ex_mm06e_badi.

TRY.
    lo_badi = cl_exithandler=>get_instance('MM06E_BADI').
    lo_badi->post(is_mara = im_mara).
  CATCH cx_badi_not_implemented.
    " 处理未实现情况
ENDTRY.

生产环境三大要点

1. 传输请求管理

  • 增强项目必须与相关表结构同批传输
  • 使用 SE09 检查对象依赖关系
  • 传输顺序建议:
  • 数据元素 / 域
  • 表 / 结构增强
  • 屏幕增强
  • BADI 实现

2. 多语言支持

  • 事务码 SE63 维护文本符号
  • 屏幕字段属性设置:
    SELECTION-SCREEN BEGIN OF LINE.
      SELECTION-SCREEN COMMENT 1(20) TEXT-001. " 字段标签
      PARAMETERS: zmy_field TYPE char30.
    SELECTION-SCREEN END OF LINE.

3. 升级兼容性

  • 使用 SPAU 预检查增强冲突
  • 关键检查点:
  • 屏幕元素编号是否冲突
  • BADI 接口方法变更
  • 表结构位置偏移

测试验证方案

BDC 录屏测试

  1. 事务码 SHDB 录制标准流程
  2. bdcdata 中添加自定义字段值
  3. 检查数据是否写入对应表(如 MARA 增强字段)

对象注册检查

SELECT * FROM tadir 
  WHERE pgmid = 'R3TR'
    AND object IN ('ENHO','SUSH','BADI')
    AND obj_name LIKE 'Z%'.

避坑经验

  • 字段命名避免使用 ZZ 开头(SAP 保留)
  • 增强项目激活后立即创建传输请求
  • 使用 WHERE USED LIST 检查字段引用
  • 视图簇(如 CLUSTER_*)增强需要特殊处理

通过这套标准化流程,我们团队已成功实施 20+ 主数据增强项目。建议初次实施时从测试环境开始,逐步验证各环节数据流向。遇到屏幕元素不显示时,重点检查 PBO 的 ACTIVE 属性设置和字段所属的屏幕组。

正文完
 0
评论(没有评论)