网上关于mara表字段及屏幕增强的文章已经有很多了,但关于marc表字段及屏幕增强的例子不多且不够详细,这里用一个示例希望能帮到大家
MARC字段增强及屏幕增强
一、marc表字段增强
在marc表附加结构里添加自定义结构,并在结构里添加自定义字段即可。
二、定制自定义屏幕
1、路径:事务码spro->物料-常规->物料主数据->配置物料主记录->创建定制子屏幕的程序
2、这时会让你自定义一个函数组,后续的屏幕创建就会放在这个函数组里。函数组里自带0001及0002屏幕,可以用0001屏幕,也可以自建一个屏幕,这里以自建0003屏幕示例:
3、点击上方布局按钮,进入屏幕绘制,按照图示绘制屏幕
这里注意:屏幕字段需要用自定义结构ZMARCENH里的自定义字段,而不能直接用marc的自定义字段,否则MM03是不会显示我们画的屏幕的
4、在屏幕逻辑流里面添加如下代码:
PROCESS BEFORE OUTPUT.
MODULE init_sub.
MODULE get_daten_sub.
MODULE feldauswahl.
MODULE sonderfaus.
MODULE sonfausw_in_fgruppen.
MODULE bildstatus.
MODULE zusref_vorschlagen_b.
MODULE refdaten_vorschlagen.
MODULE zusref_vorschlagen_a.
MODULE set_daten_sub.
* MODULE status_0003.
MODULE get_data.
PROCESS AFTER INPUT.
MODULE get_daten_sub.
FIELD: zmarcenh-zjcf.
MODULE assign_data.
MODULE set_daten_sub.
在PBO get_data里面给ZMARCENH赋值
MODULE get_data OUTPUT.
MOVE-CORRESPONDING marc TO zmarcenh.
ENDMODULE.
在PAI assign_data里面给marc赋值
MODULE assign_data INPUT.
MOVE-CORRESPONDING zmarcenh TO marc.
ENDMODULE.
在TOP文件里面添加全局变量:ZMARCENH
5、屏幕画好后,按如下路径:spro->物料-常规->物料主数据->配置物料主记录->定义每个屏幕序列的数据屏幕的结构,配置我们画的屏幕放在屏幕的哪个视图及哪个位置
6、选择图示屏幕双击‘’数据屏幕’,我这里是放的采购视图,具体视图可根据业务需求制定,双击子屏幕进入采购视图配置,我放在第6行,也就是视图最下方
程序名是:SAPL+你的函数组名字
屏幕号:即你绘制的屏幕编号
点击旁边的’视图数据屏幕’可看到整个视图的屏幕情况,选中单行点击’视图子屏幕’可查看子屏幕情况
7、此时还需要给字段分配字段组,否则MM02也是不会更新到表里面的,路径:spro->物料-常规->物料主数据->字段选择->给字段选择组分配字段
8、可直接复制现有字段创建,维护状态根据视图不同可不同,我这里用采购视图所以是E,注意这里要维护正确的维护状态值,否则在调用函数更新视图的时候可能不会成功,ALE字段组一定要选择GR_GLOB
至此我们的屏幕绘制以及屏幕配置已经完成
三、给物料修改保存增强EXIT_SAPLMGMU_001添加更新逻辑
1、此函数出口只有给mara表更新的cmara参数,所以我们需要在我们的函数组里创建一个更新函数,并且创建一个c_maru参数,给c_maru参数赋值
2、在增强里调用此函数,让屏幕值更新到底表里
至此,我们的marc表字段增强以及marc表字段屏幕增强就大功完成啦!用MM01,MM02,MM03进行数据验证吧!下图是屏幕实现效果