共计 1712 个字符,预计需要花费 5 分钟才能阅读完成。
现实业务需求引发的技术思考
最近接到业务部门需求:所有含有化学物质的物料需要增加欧盟 REACH 环保认证字段(包含证书编号、有效期和检测机构)。这个看似简单的需求背后涉及:

- 字段需要显示在 MM01/MM02/MM03 事务码的多个标签页
- 需要与批次管理模块联动校验
- 历史数据需批量初始化
技术方案选型对比
方案一:APPEND 结构扩展(Classic APPEND Structure)
适用场景 :基础表结构尚有剩余字段空间时
- 通过 SE11 在 MARA 表追加 ZREACH 结构
注意 :表簇(Cluster Table)如 MARC 需改用 INCLUDE 方式 - 关键事务码组合:
- SE11 创建结构
- CMOD 分配用户出口
- SE51 增强屏幕
" 德语注释:APPEND 结构定义示例
APPEND ZREACH_STRUCTURE TO MARA.
ZREACH_NO TYPE CHAR20, " 证书编号
ZREACH_DATE TYPE DATUM, " 有效期
ZREACH_ORG TYPE CHAR30. " 检测机构
方案二:BAdI 增强(Business Add-In)
核心增强点 :
– MM06E005 物料主数据保存逻辑
– MM06E004 字段校验逻辑
优势:无需修改标准表结构,通过 GET_DEFINITION 方法动态注入字段
" 德语注释:BAdI 实现示例
METHOD if_ex_me_mm06e005~change_field_contents.
CASE iv_fieldname.
WHEN 'ZREACH_NO'.
" 证书编号校验逻辑
IF cs_data IS INITIAL.
RAISE EXCEPTION TYPE cx_badi_argument.
ENDIF.
ENDCASE.
ENDMETHOD.
方案三:隐式增强(Implicit Enhancement)
操作步骤 :
1. SE11 打开标准表,点击编辑→增强→隐式增强点
2. 定位到以下关键位置:
– MARA 表字段列表末尾
– MM01 的 PAI 模块
3. 优势:不影响 SAP 标准对象版本
完整实现流程
字段定义阶段
- SE11 创建数据元素(Data Element):
- 域(Domain)ZREACH_NO:CHAR20
-
检查表(Check Table):T001
-
屏幕增强要点:
- 在 MM01 的屏幕出口增加字段
- 实现 PAI 逻辑校验
" 德语注释:屏幕校验示例
MODULE z_reach_check INPUT.
IF mara-zreach_no IS INITIAL AND
mara-matkl = 'CHEM'. " 化学品类
MESSAGE e208(00) WITH '环保认证必填'.
ENDIF.
ENDMODULE.
数据迁移方案
| 方式 | 优点 | 缺点 |
|---|---|---|
| BDC 录屏 | 开发快,可即时测试 | 性能差,大数据量超时 |
| LSMW | 支持百万级数据 | 配置复杂 |
| 直接表更新 | 最快 | 需停机维护 |
推荐组合方案:
1. 开发 ZREACH_UPLOAD 程序处理小批量数据
2. 使用 LSMW_MAINTAIN 创建迁移项目
生产环境特别注意事项
- 传输管理 :
-
确保包含以下对象类型:
- TABU(表结构)
- ENHO(增强)
- PROG(屏幕程序)
-
多客户端同步 :
- 使用 SCUL 生成传输请求
-
字段激活顺序:
- 开发环境
- 测试环境
- 生产环境
-
性能优化 :
- 避免在 MARA 新增索引字段
- 大数据量查询使用 MATNR 作为筛选条件
架构延伸思考
当需要 SD 模块同步显示该字段时,推荐方案:
1. 开发中央检查服务 ZMM_REACH_CHECK
2. 通过 RFC 暴露接口
3. 在 VKOA 配置字段映射
" 德语注释:跨模块服务示例
FUNCTION z_reach_get_by_matnr.
IMPORTING iv_matnr TYPE matnr.
EXPORTING es_reach TYPE zreach_struc.
" 调用 MM 模块函数获取数据
CALL FUNCTION 'BAPI_MATERIAL_GET_DETAIL'
EXPORTING
material = iv_matnr.
ENDFUNCTION.
经验总结
经过三周的实施验证,我们最终选择 BAdI+ 隐式增强组合方案,既满足业务灵活性要求,又避免了对标准表的直接修改。特别提醒:
- 字段激活前务必在测试环境验证所有事务码路径
- 使用 SZAL 事务码检查权限影响范围
- 保留至少两周的数据回退方案
下次我们将探讨:如何在 Fiori 应用中暴露这些增强字段?
正文完
