**1**
**文档说明**
本文档通过创建自建表存储增强字段的方式,对物料主数据进行增强,使其能通过前台屏幕维护数据。
**2**
**实现方法**
**2.1**
**创建自建表**
创建存放增强字段的表,并根据放入物料主数据的相关视图,定义主键。本文档要在物料的工厂下增强字段,所以主键加入工厂
**2.2**
**实现增强函数**
运行SPRO,找到路径。或运行事务代码OMT3C
创建函数组
在函数组的0001屏幕中画上增强字段
实现屏幕流
DISABLE_FIELDS
"--------------------@斌将军--------------------MODULE disable_fields OUTPUT. IF sy-tcode = 'MM03'. LOOP AT SCREEN. screen-input = '0'. MODIFY SCREEN. ENDLOOP. ENDIF.
ENDMODULE."--------------------@斌将军--------------------GET_DATA
"--------------------@斌将军--------------------TABLES:zmmt_marc01.
DATA:ls_rmmg1 TYPE rmmg1, lv_matnr TYPE mara-matnr, lv_werks TYPE marc-werks.FIELD-SYMBOLS: TYPE rmmg1.
IF sy-tcode = 'MM02' OR sy-tcode = 'MM03'. GET PARAMETER ID 'MAT' FIELD lv_matnr. GET PARAMETER ID 'WRK' FIELD lv_werks.
IF lv_werks IS INITIAL.
"因工厂的参数ID获取不到,可以直接用指针方式获取 ASSIGN ('(SAPLMGD1)RMMG1') TO. MOVE-CORRESPONDING TO ls_rmmg1 . lv_werks = ls_rmmg1-werks. ENDIF. zmmt_marc01-matnr = lv_matnr. zmmt_marc01-werks = lv_werks. SELECT SINGLE * FROM zmmt_marc01 WHERE matnr = zmmt_marc01-matnr AND werks = zmmt_marc01-werks. ENDIF."--------------------@斌将军--------------------ASSIGN_DATA
"--------------------@斌将军--------------------MODULE assign_data INPUT."抛内存到存表位置 EXPORT zmmt_marc01 TO MEMORY ID zcl_mm_memory_id=>mm001.
ENDMODULE."--------------------@斌将军--------------------**2.3**
**CMOD增强**
实施出口ZXMG0U02,存储数据
"--------------------@斌将军--------------------TABLES: zmmt_marc01. IMPORT zmmt_marc01 FROM MEMORY ID zcl_mm_memory_id=>mm001. IF zmmt_marc01 IS NOT INITIAL. MODIFY zmmt_marc01 FROM zmmt_marc01. ENDIF.
FREE MEMORY ID zcl_mm_memory_id=>mm001. CLEAR:zmmt_marc01."--------------------@斌将军--------------------
**2.4**
**分配增强字段到页签**
运行SPRO,找到路径。或运行事务代码OMT3B
配置函数组和屏幕到对应子屏幕
**2.5**
**特定物料增强**
如果需要将字段增强到特定行业领域和物料类型的界面时,需要首先查看特定类型的屏幕信息
运行SPRO,或通过事务代码OMT3E
例如:行业领域1零售,物料类型HERB
事务代码对应的屏幕参照
找到对应的屏幕顺序
对应的屏幕顺序15
**3**
**效果展示**
保存之后,存表