前言:原始需求是在CK40N的返回消息屏幕添加一个物料描述字段,我觉得这个程序加字段应该是有标准配置的,但是我找不到,只好用增强解决了,本文提供一种给标准报表新增字段的思路,为ALV添加字段不外乎两个步骤,第一步添加fieldcat,使展示时能够展示在屏幕上面,第二部填充新增字段的数据。
1.为ALV添加FIELDCAT
标准程序ALV展示的结果一般都是取自某个后台结构,我们只要找到这个结构了为这个结构新增字段即可为ALV新增字段,
首先在新增屏幕找到标准程序的程序名和屏幕,双击屏幕就可以进入代码,调用ALV的函数代码一般在PBO的后面部分
这里找到了ALV的调用函数,同时找到了代码的fieldcat和展示的值
找到了最终展示的ALV的fieldcat,里面的参考表主要有两个,通过SE11验证,这两个结构都存在,所以无论对哪个结构新增,应该都可以为ALV新增字段,这里我选择了CMIOBJCK1,因为物料编码参考的是这个结构。
不确定是否成功可以先调试添加行项目验证有没有问题,也可以追根查找fieldcat的赋值,确保万无一失。
2.为展示数据填充新增的字段
第一步找到了程序的展示数据,只需要使用第四代增强找个位置把物料描述字段添加进去即可,我这里追根溯源找到了一开始赋值的位置,参考代码如下
LOOP AT <T_OUTTAB> ASSIGNING <F_OUTTAB>.
ASSIGN COMPONENT 'MATNR' OF STRUCTURE <F_OUTTAB> TO FIELD-SYMBOL(<FS_VALUE>) .
IF <FS_VALUE> IS ASSIGNED.
SELECT SINGLE MAKTX FROM MAKT WHERE MATNR = @<FS_VALUE> AND SPRAS = '1' INTO @DATA(LV_MAKTX) .
IF SY-SUBRC = 0.
ASSIGN COMPONENT 'MAKTX' OF STRUCTURE <F_OUTTAB> TO FIELD-SYMBOL(<FS_VALUEX>) .
IF <FS_VALUEX> IS ASSIGNED.
<FS_VALUEX> = LV_MAKTX .
UNASSIGN <FS_VALUEX> .
ENDIF.
ENDIF.
UNASSIGN <FS_VALUE> .
ENDIF.
ENDLOOP.
常驻CSDN欢迎评论交流