MB52 报表增加批次相关字段

目录

需求

分析

显示ALV程序

显示字段fieldcat定义:

字段内容赋值过程

实现

增加字段

字段内容赋值

增加显示


需求

MB52非层次表述时:
(1)增加显示批次生产日期; MCH1-HSDAT
(2)增加显示批次过期日期;MCH1-VFDAT
(3)增加显示供应商批次号;MCH1-LICHA

可以在检查库存时查询到相关的批次信息,方便生产仓库的库存批次管理。

分析

显示ALV程序

MB52系统标准程序:RM07MLBS

Debug过程先从,显示开始。

end-of-selection 设断点调试。最终ALV呈现在子例程list_output完成。

MB52 报表增加批次相关字段_第1张图片

list_output子例程进行同样的调试。ALV呈现在下述语句完成。 (非层次表述)

MB52 报表增加批次相关字段_第2张图片

显示使用的内表为: bestand表,显示字段设置表未fieldcat[]表。

显示字段fieldcat定义:

在end-of-selection的断点调试:fiedldcat表在F0300_FIELDCAT_FLAT子例程中完成。

MB52 报表增加批次相关字段_第3张图片

在子例程f0300_fieldcat_flat中通过宏的方式增加fieldcat字段。

MB52 报表增加批次相关字段_第4张图片

新增加的字段可以参照 “批次”charg字段的方式来进行。

字段内容赋值过程

在end-of-selection 之前,bestand表已经赋值。需要在start-of-selection事件中寻找对应的子例程:data_selection_new。

MB52 报表增加批次相关字段_第5张图片

调试后确认data_selection_new为需要增强的子例程。

实现

隐式增强方式如:

网络参考文章:做隐式增强。

SAP软件MM模块项目实施中常用增强之二:MB51报表增加字段-CSDN博客MB52 报表增加批次相关字段_第6张图片

增加字段

在bestand内表字段定义提供的隐式增强点增加字段。

MB52 报表增加批次相关字段_第7张图片

增加内容如下:

MB52 报表增加批次相关字段_第8张图片

    DATA hsdat TYPE mch1-hsdat.
    DATA vfdat TYPE mch1-vfdat.
    DATA licha TYPE mch1-licha.
    DATA zzbatch TYPE mch1-zzbatch.

字段内容赋值

MB52数据量并不会太多,直接通过loop内的select single语句完成更新。

在子例程data_selection_new的尾部增加循环,添加MCH1表中的数据。

增加内容如下:

MB52 报表增加批次相关字段_第9张图片

代码如下:

IF  xmchb = 'X'.
    LOOP AT bestand ASSIGNING FIELD-SYMBOL().
      IF NOT bestand-matnr IS INITIAL.
        SELECT SINGLE licha vfdat hsdat 
            INTO CORRESPONDING FIELDS OF  
            FROM mch1 
            WHERE matnr = -matnr AND charg = -charg.
      ENDIF.
    ENDLOOP.
ENDIF.

增加的xmchb判断:如果不对显示批次库存进行选择,则不运行相关的loop语序。

MB52 报表增加批次相关字段_第10张图片

增加显示

子例程f0300_fieldcat_flat尾部进行隐式增强。参照批次charg字段的方式进。

内容如下:

MB52 报表增加批次相关字段_第11张图片代码如下:

  IF xmchb = 'X'.
    macro_fill_fieldcat 'HSDAT'  'MCH1'   c_out.
    macro_fill_fieldcat 'VFDAT'  'MCH1'   c_out.
    macro_fill_fieldcat 'LICHA'  'MCH1'   c_out.
    macro_fill_fieldcat 'ZZBATCH'  'MCH1'   c_out.

  ENDIF.

运行结果:

MB52 报表增加批次相关字段_第12张图片

你可能感兴趣的:(SAP_MM,数据库)