业务背景:
用户需要在系统标准的物料主数据查询报表MM60中,添加物料组描述,一直以来,我都觉得标准的MM60显示的内容字段不够多,不太好用。
以往都是给用户新开发一个物料主数据查询报表来解决的,但是这次刚好用户有这样的需求,说是想直接在MM60中添加,那就去研究并且记录一下吧。
一、物料清单输出结构添加需要新增的字段
1、找到物料清单对应的表结构
SE38,打开MM60对应的程序:RMMVRZ00,找到物料清单对应的表结构:plm_alv_230
2、物料清单表结构添加字段
这里添加的是物料组描述:WGBEZ
二、编写获取物料组描述的查询。
1、找到代码编写地方;
在 alv_list_output 表单的开头创建增强点(第 8 行)
2、编写获取物料组描述的代码
按照正常ALV报表的写法,报错提示,如下图:The elements in the "SELECT LIST" list must be separated using commas.
据说是因为有LEFT JOIN,
修改后,代码如下;
优化后的2.0版本:不需要关联MARA表,只需要根据原表中的MATKL物料组字段查找描述即可
TYPES:
BEGIN OF ty_out,
matkl TYPE mara-matkl,
wgbez TYPE t023t-wgbez,
END OF ty_out.
DATA lt_out TYPE STANDARD TABLE OF ty_out.
FIELD-SYMBOLS <s_out> TYPE ty_out.
IF gt_list IS NOT INITIAL.
SELECT
matkl,
wgbez
INTO CORRESPONDING FIELDS OF TABLE @lt_out
FROM t023t
FOR ALL ENTRIES IN @gt_list
WHERE matkl = @gt_list-matkl
AND spras = @sy-langu.
ENDIF.
SORT lt_out by matkl.
FIELD-SYMBOLS <s_list> LIKE LINE OF gt_list.
LOOP AT gt_list ASSIGNING <s_list>.
READ TABLE lt_out ASSIGNING <s_out> WITH KEY matkl = <s_list>-matkl BINARY SEARCH.
IF sy-subrc = 0.
<s_list>-wgbez = <s_out>-wgbez.
ENDIF.
ENDLOOP.
三、激活所有程序,测试
1、确保所有主程序和子程序都已经激活
2、MM60测试
以上,如果对你有帮助的话,辛苦大家点赞、关注,你的支持是我继续分享的动力~~