原创 Tab Zhu [ SAP TAB ](javascript:void\(0\);)
之前写了一一篇物料主数据增强的文档 [ ABAP随笔-物料主数据界面增强
](http://mp.weixin.qq.com/s?__biz=MzUxODI4MTQyMg==&mid=2247483773&idx=1&sn=57f4d5c3dd2d2e09ed6c4f3098a6db4a&chksm=f98a00dccefd89ca34a3c1ecc2c5c9b2d61dd58c3d6e8967263b4c7b49b05e3ca44ad9f250d6&scene=21#wechat_redirect)
,需要配置+增强代码,今天升级一下功能,对物料主数据页签进行增强
## 1\. 对物料主数据表增强
append custom field in MARA
随便加一个你想要的字段
## 2\. 物料主数据配置
路径为:SPRO->后勤-常规->物料主数据->配置物料主记录->创建定制子屏幕程序
创建对应的函数组
对于屏幕0001 增加一个字段,增加PAI PBO的逻辑module
其中status_0001,set_ztab_mara_01中代码为
MODULE status_0001 OUTPUT.
IF sy-tcode = 'MM02'OR sy-tcode = 'MM03'.
CALL FUNCTION 'MARA_GET_SUB'IMPORTING
wmara = mara
xmara = *mara
ymara = lmara.
ENDIF.
IF sy-tcode = 'MM03'.
LOOP AT SCREEN.screen-input = '0'.
MODIFY SCREEN.
ENDLOOP.
ENDIF.
ENDMODULE.MODULE set_ztab_mara_01 INPUT.
DATA:ls_cust TYPE ztab_mara_01 .MOVE-CORRESPONDING mara TO ls_cust .
CALL FUNCTION 'MARA_GET_SUB'IMPORTING
wmara = mara
xmara = *mara
ymara = lmara.
MOVE-CORRESPONDING ls_cust TO mara .
CALL FUNCTION 'MARA_SET_SUB'EXPORTING
wmara = mara.
ENDMODULE.其中function MARA_GET_SUB 和 MARA_SET_SUB 分别是得到和更新MM02/MM01/MM03内存变量中MARA的值
接着我们继续选择spro->后勤-常规->物料主数据->配置物料主记录->定义每个屏幕序列的数据屏幕的结构
目前我们使用的配置是 **21** 屏幕顺序
在数据屏幕界面我们新增一条数据
同时我们该数据下子屏幕进行配置,填入我们刚才创建好FUNCTION GROUOP里面的屏幕 其中SAPLMGD1->1002是显示物料号的表头
可以点击右侧的 视图数据屏幕 查看生成的屏幕
保存退出后,我们进入spro->后勤-常规->物料主数据->配置物料主记录->主屏幕和附加屏幕的维护订单中选择21序号屏幕双击回车
我们可以看到配置好的子屏幕,如果想要把Z1屏幕向上移动,则更改顺序编号即可
现在我们进入MM03界面输入物料点击回车就可以看到新增的视图以供选择了
其实我们现在已经可以对新增的字段进行修改和保存了
## 3\. 数据更新
之前我们在 [ 物料主数据界面增强
](http://mp.weixin.qq.com/s?__biz=MzUxODI4MTQyMg==&mid=2247483773&idx=1&sn=57f4d5c3dd2d2e09ed6c4f3098a6db4a&chksm=f98a00dccefd89ca34a3c1ecc2c5c9b2d61dd58c3d6e8967263b4c7b49b05e3ca44ad9f250d6&scene=21#wechat_redirect)
中已经讲过了,如何对物料主数据进行增强校验了,
这里我们简单做一个唯一性校验: 启用EXIT_SAPLMGMU_001出口 和 CI_MMH1
*&---------------------------------------------------------------------*
*& 包含 ZXMG0U02
*&---------------------------------------------------------------------*
IF sy-ucomm = 'BU' OR sy-ucomm = 'YES'.
IF sy-tcode = 'MM01' OR sy-tcode = 'MM02'.CHECK wmara-custom_field1 IS NOT INITIAL.
SELECT matnr INTO TABLE @DATA(lt_matnr)FROM mara WHERE custom_field1 = @wmara-custom_field1.
IF sy-subrc EQ 0.
DELETE lt_matnr WHERE matnr = wmara-matnr.
IF lt_matnr[] IS NOT INITIAL.
READ TABLE lt_matnr INDEX 1 INTO DATA(ls_matnr).MESSAGE e001(ztab) WITH wmara-custom_field1 ls_matnr-matnr.
ENDIF.
ENDIF.
ENDIF.
ENDIF.当我们双击CI_MMH1时,发现该结构不存在,我们直接SE11创建,然后把增强字段写进去
其实CI_MMH1在我们的增强中是做不到的,但是这个创建了CI_MMH1是在结构BMMH1中的,用于LSMW-如果这里不增强,LSMW就无法进行增强字段批导
## 4.注意
上方代码中 sy-tcode = 'MM01' 对MM01也进行唯一性的校验是因为,MM01可以对已存在的物料进行扩展
更多其他的文章请点击历史记录
[ ABAP随笔-物料主数据界面增强
](http://mp.weixin.qq.com/s?__biz=MzUxODI4MTQyMg==&mid=2247483773&idx=1&sn=57f4d5c3dd2d2e09ed6c4f3098a6db4a&chksm=f98a00dccefd89ca34a3c1ecc2c5c9b2d61dd58c3d6e8967263b4c7b49b05e3ca44ad9f250d6&scene=21#wechat_redirect)
[ BP客户增强-保存时增加校验事件(DCHCK)
](http://mp.weixin.qq.com/s?__biz=MzUxODI4MTQyMg==&mid=2247483901&idx=1&sn=ff94d3b5b17428801c953215a58b8214&chksm=f98a005ccefd894a84846127c9ba4b2a20236ddf9b7920507428d41be3446f91fd8d32a79e5c&scene=21#wechat_redirect)
[ BP客户增强-详细-干货
](http://mp.weixin.qq.com/s?__biz=MzUxODI4MTQyMg==&mid=2247483897&idx=1&sn=9796dc49916184ac314b5e05b964f952&chksm=f98a0058cefd894eef9c0526559a65f79e83861e14dc90adb2faeb6b8735aaa19d88d55a769a&scene=21#wechat_redirect)
[ S4 BP客户增强说明
](http://mp.weixin.qq.com/s?__biz=MzUxODI4MTQyMg==&mid=2247483893&idx=1&sn=8b3661c027b73c84c2ff96eea91cea26&chksm=f98a0054cefd894296bf83deebfe6f380c8b85670ea6efa275f5200f62606260aa01ebed995d&scene=21#wechat_redirect)