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中定义的全局变量,也就是通过全局变量传值。
|
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参数
|
MOVE-CORRESPONDING zmm_maraa TO c_maru.
|


4,定义自定义屏幕的位置
SPRO
后勤-常规-->物料主数据-->配置物料主数据-->定义每个屏幕序列的数据屏幕的结构,也可以通过Tcode OMT3B

新建一个屏幕顺序Z1

选择Z1后点击数据屏幕,这个例子中决定把自定义屏幕放到物料主数据的基本数据2视图中,选中然后点击子屏幕

把9001屏幕放到顺序第三位,也就是基本数据2视图上排第三个的子屏幕,

点击视图数据屏幕按钮可以看到屏幕的内容,如下:

5,定义增强屏幕上字段选择组
SPRO
后勤-常规-->物料主数据-->字段选择-->给字段选择组分配字段 ,也可以通过tcode OMSR


以上。