如何在物料主数据上增强自定义字段
有时候我们需要自定义或者扩展物料主数据的各种视图,然后在事务码 MM01/02/03
中可以显示和编辑,比如可以向一般工厂/存储 1 中添加新字段 Process Code( ZZ_PROCCODE
)。
扩展主数据后台表
- 转到事务码
SE11
并显示工厂特定字段(MARC
)表 - 扩展现有的或创建新的自定义
MARC
附加表-它将是一个正常的结构(将在SE11
中可编辑),将附加在表的末尾
- 将您的字段添加到附加结构中,在我们的示例中,我们将添加用于存储在域
ZZ_DOM_PROCCODE
上构建的ZZ_DTEL_PROCCODE
类型的ZZ_PROCCODE
的过程代码的字段。
- 激活附加结构 – 这将触发
MARC
表(以及所有相关的表/结构)的调整 – 这可能相当耗时,所以在生产环境中做这种改变时要小心。
创建/扩展自己的子屏幕
- 创建新的功能组(如果您已经为此目的创建了 FUGR,则可以跳过此步骤),您可以在其中定义将包含自定义字段的新子屏幕。
不要手动创建 FUGR,而是在 SPRO IMG -> 后勤常规 -> 物料主数据 -> 配置物料主数据 -> 为自定义子屏幕创建程序中对 MM 视图进行自定义
在 SE80 中显示 FUGR MGD1,并选择你想用自己的字段来加强的屏幕(MM View 子屏幕)–在我们的例子中,它将是屏幕 2701(存储数据:一般数据)。
从 MGD1 复制选定的屏幕到你的 FUGR(保持其当前编号)。
- 使用 Screen Painter 编辑你的 FUGR 中的新屏幕(在我们的例子中是屏幕 2701),并将该组重命名为一些自定义文本,描述你要放在里面的字段组。然后删除屏幕上的所有字段,只放上你的自定义字段。
原来的布局将被改变成这样
如下:
保存并激活您的新屏幕
在 SE80 中打开屏幕(在我们的示例中为 2701)并转到“流程逻辑”选项卡
在显示的代码中,删除(或注释掉)使用屏幕中不再存在的字段进行操作的所有行,并将它们替换为将使用您自己的自定义字段进行操作的命令。小心 – 不要删除(注释掉)模块调用 MODULE GET_DATEN_SUB 和 MODULE SET_DATEN_SUB – 它们负责从数据库读取数据,并在 MM 视图中更改数据后将其放回。
- 激活自定义 FUGR 中的所有更改(添加的屏幕、其布局和流程逻辑)
将新的子屏幕添加到标准 MM 视图
转到 SPRO IMG 中的 MM 视图自定义 -> 后勤常规 -> 物料主数据 -> 配置物料主数据 -> 为每个屏幕序列定义数据屏幕结构(Tcode OMT3)
现在,您可以创建自己的屏幕序列(通过复制一些现有的屏幕序列)或仅修改已准备好的屏幕序列之一 - 我们将更新现有的屏幕序列(21 - 标准行业:选项卡页面)
- 选择该行并双击数据屏幕
- 现在选择屏幕描述一般工厂数据/存储1的一行,然后双击子屏幕。
在这里,你可以通过按下 "查看数据屏幕 "按钮预览整个屏幕及其所有子屏幕。
你可以看到你的自定义子屏幕是不可见的…。然而
返回并选择
PROGRAM = SAPLMGD1
和SCREEN=0001
的第一行(屏幕 0001 是虚拟/空屏幕),单击“添加新条目”按钮,并将程序名称替换为SAPLZSALES_MASTER
(FUGR 的主程序),然后将您的自己的屏幕号(2701)按“保存”按钮(系统会要求您提供请求号)
要测试您的新屏幕,请转至 MM01 或 MM02
检查“一般工厂数据/存储 1”选项卡,新子屏幕 (2161) 中的新字段 (ZZ_PROCCODE
) 是否可见。更改其值,输入所有其他必填字段并保存更改。
在 SE16
中检查数据是否已正确保存在 MARC
表中:
PAI 中新字段数据的修改
如果您需要在 MM01/MM02/MM03
中的 PAI 期间处理或修改新字段的数据(或标准字段的数据),则必须实施客户退出 EXIT_SAPLMGMU_001
。
每次触发 PAI 时都会调用此用户出口。
如果您只需要在 SAVE 操作期间进行一些错误检查,那么您可以用类似的内容在你的代码中:
IF sy-ucomm = 'BU'. "this code executed only during SAVE
* your code
ENDIF.
- 点赞
- 收藏
- 关注作者
评论(0)