视频1 视频21 视频41 视频61 视频文章1 视频文章21 视频文章41 视频文章61 推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37 推荐39 推荐41 推荐43 推荐45 推荐47 推荐49 关键词1 关键词101 关键词201 关键词301 关键词401 关键词501 关键词601 关键词701 关键词801 关键词901 关键词1001 关键词1101 关键词1201 关键词1301 关键词1401 关键词1501 关键词1601 关键词1701 关键词1801 关键词1901 视频扩展1 视频扩展6 视频扩展11 视频扩展16 文章1 文章201 文章401 文章601 文章801 文章1001 资讯1 资讯501 资讯1001 资讯1501 标签1 标签501 标签1001 关键词1 关键词501 关键词1001 关键词1501 专题2001
SAP增强-MM-物料主数据
2025-10-03 03:57:03 责编:小OO
文档
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.                 " DISABLE_FIELD  OUTPUT

*&-------------------------------------------------------------------

*&      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.                 " GET_DATA  OUTPUT

*&-------------------------------------------------------------------

*&      Module  ASSIGN_DATA  INPUT

*&-------------------------------------------------------------------

*       text

*--------------------------------------------------------------------

MODULE ASSIGN_DATA INPUT.

  ZPARTAPPEND-F1 = F1.

  ZPARTAPPEND-F2 = F2.

  EXPORT ZPARTAPPEND TO MEMORY ID 'ZPARTAPPEND'.

ENDMODULE.                 " ASSIGN_DATA  INPUT

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已经存在,所以点击更改,如果不存在,点击创建。

图1.5-2

图1.5-3

图1.5-4

如图1.5-4,添加处理代码,用以保存主数据修改后保存到自建表中。代码如下:

TABLES ZPARTAPPEND.

IF SY-UCOMM = 'BU' OR SY-UCOMM = 'YES'.

  IMPORT ZPARTAPPEND FROM MEMORY ID 'ZPARTAPPEND'.

  ZPARTAPPEND-MATNR = CMARA-MATNR.

  MODIFY ZPARTAPPEND FROM ZPARTAPPEND.

ENDIF.

1.6 分配屏幕到主数据的视图中-路径

T-CODE:spro,后勤-常规->物料主数据->配置物料主记录->定义每个屏幕序列的数据屏幕的结构

再按图1.6-1,图1.6-2进行操作。

图1.6-1

本实例把新增的屏幕放到“基本数据2”视图中,所以参考图1.6-2操作:

图1.6-2

1.7 分配屏幕到主数据的视图中-实现

在下图中输入前面创建的函数组对应的程序名(SAPLZ_FG2)及屏幕编号(0001),如图1.7-1,之后点保存,保存时如果需要就创建请求,直至保存成成功:

图1.7-1

1.8 MM03测试效果

如图1.8-1:

图1.8-1

添加成功。

1.9 MM02测试效果

如图1.9-1(修改),图1.9-2(修改结果):

图1.9-1

图1.9-2下载本文

显示全文
专题