物料主数据(MM01\MM02\MM03)的屏幕增强比一般的屏幕增强稍微复杂一点,下面详细一步一步讲解一下。
1,在MARA添加自定义字段
把屏幕增强中用到的字段通过tcode SE11 append到MARA表中,如下,append 一个ZMM_MARAA,里面有一些自定义字段
2,创建自定义屏幕
这个自定义屏幕就是要添加到物料主数据中的,tcode:SPRO
后勤-常规-->物料主数据-->创建定制子屏幕的程序,也可以通过Tcode OMT3C
其实是创建一个函数组,这个自定义屏幕保存在函数组下的
在函数组下创建自定义屏幕,比如说下图中的9001和9002
下图是9001屏幕,上面的字段都在步骤一中append到MARA中的
9001逻辑流中按照一般的dialog程序写入代码,
注意:在PAI中要有如下一句,也就是把屏幕字段保存起来,将来会在出口MGA0001中用到,zmm_maraa是函数组ZMGD1中定义的全局变量,也就是通过全局变量传值。
1 |
MOVE-CORRESPONDING mara TO zmm_maraa. |
3,user-exit MGA0001
CMOD中创建一个基于MGA0001的用户增强,用来把自定义屏幕上的字段值保存到MARA表中
屏幕字段值通过CMARA来更新到表MARA中
代码如下:zmm_maraa就是屏幕9001逻辑流PAI中的那个全局变量,怎么会是同一个全局变量?其实很简单也就是在函数组ZMGD1中再创建一个FM,然后在exit_saplmgmu_001中调用,这样就实现了通过全局变量传值了。
下面代码中的C_mara就是新创建FM的changing参数
1 |
MOVE-CORRESPONDING zmm_maraa TO c_maru. |
4,定义自定义屏幕的位置
SPRO
后勤-常规-->物料主数据-->配置物料主数据-->定义每个屏幕序列的数据屏幕的结构,也可以通过Tcode OMT3B
新建一个屏幕顺序Z1
选择Z1后点击数据屏幕,这个例子中决定把自定义屏幕放到物料主数据的基本数据2视图中,选中然后点击子屏幕
把9001屏幕放到顺序第三位,也就是基本数据2视图上排第三个的子屏幕,
点击视图数据屏幕按钮可以看到屏幕的内容,如下:
5,定义增强屏幕上字段选择组
SPRO
后勤-常规-->物料主数据-->字段选择-->给字段选择组分配字段 ,也可以通过tcode OMSR
以上。
如何在第4步 定义自定义屏幕的位置 的上一步(在exit_saplmgmu_001中调用新建的FM),函数如何调用?zmm_maraa的值如何传递,用EXPORT/IMPORT MEMORY ID还是在新建函数的传入传出参数中传递?
2021-04-08 7:28 下午