1、物料主数据增强(MM01/MM02/MM03)
目的:SAP标准字段不够使用,利用屏幕增强增加字段,以便用户输入内容并保存至自定义表中。
1.1 SE11创建如下表(我们暂且称之谓ADD-ON表)
如图1.1-1:
图1.1-1
1.2 创建定制子屏幕的程序
Tcode:spro,后勤-常规->物料主数据->配置物料主记录->创建定制子屏幕的程序 进去之后填写一个新的函数组,如图1.2-1:
图1.2-1
保存后生成函数组Z_FG2,另外会生成程序(SAPL+函数组名)SAPLZ_FG2,该程序名会
在分配屏幕号的时候使用。
1.3 SE80定义函数组
se80->function group->Z_FG2,我们会看到已有了两个屏幕和两个include.如图1.3-1:
图1.3-1
双击屏幕0001,添加三个Module,编辑如图1.3-2:
图1.3-2
module disable_field:通过判断TCODE,如果是MM03,则自定义字段为只读, module get_data:读取ADD-ON表中相应物料的数据,在自定义屏幕中显示出来。 module assign_data:将自定义屏幕中各字段的值传入内存ID中,以便保存时调用。各模块代码如下(新建这几个module时不用再创建新的include,放到LZ_FG2TOP中即可):
*&------------------------------------------------------------------- *& Module DISABLE_FIELD OUTPUT
*&------------------------------------------------------------------- * text
*-------------------------------------------------------------------- MODULE DISABLE_FIELD OUTPUT. IF SY-TCODE = 'MM03'. LOOP AT SCREEN. SCREEN-INPUT = '0'. MODIFY SCREEN. ENDLOOP. ENDIF.
ENDMODULE. \
*&------------------------------------------------------------------- *& Module GET_DATA OUTPUT
*&-------------------------------------------------------------------
* text
*-------------------------------------------------------------------- MODULE GET_DATA OUTPUT. TABLES:ZPARTAPPEND.
DATA: F1 LIKE ZPARTAPPEND-F1, F2 LIKE ZPARTAPPEND-F2, W_MATNR TYPE MATNR.
IF SY-TCODE = 'MM02' OR SY-TCODE = 'MM03'. GET PARAMETER ID 'MAT' FIELD W_MATNR.
SELECT SINGLE * FROM ZPARTAPPEND WHERE MATNR = W_MATNR. F1 = ZPARTAPPEND-F1. F2 = ZPARTAPPEND-F2. ENDIF.
ENDMODULE. \
*&------------------------------------------------------------------- *& Module ASSIGN_DATA INPUT
*&------------------------------------------------------------------- * text
*-------------------------------------------------------------------- MODULE ASSIGN_DATA INPUT. ZPARTAPPEND-F1 = F1. ZPARTAPPEND-F2 = F2.
EXPORT ZPARTAPPEND TO MEMORY ID 'ZPARTAPPEND'. ENDMODULE. \
1.4 屏幕界面设计
在屏幕界面点'格式'进行屏幕定义,定义屏幕如图1.4-1,这里我们只用到部分字段。这两个可编辑框名称分别为:F1,F2。
图1.4-1
屏幕设计完后保存并激活函数组Z_FG2。
1.5 CMOD创建增强
T-CODE:CMOD,使用出口MGA00001(在增强分配中配置)(物料主数据,不同的模块都有系统自带的出口,可参考SAP系统出口汇总)。如图1.5-1、图1.5-2、图1.5-3,进去后再双击 include ZXMG0U02.增强代码如图1.5-4:
图1.5-1
这里ZMM01已经存在,所以点击更改,如果不存在,点击创建。