网上找到的代码并不多,本人写SAP代码也不太久,分享一下思路,大佬们有更好的方法可以提出来。
MB52增加过滤条件
用户需求
MB52界面上的筛选条件不够满足要求,需要通过物料的某项特征值筛选。
程序分析
查看MB52的源码,与我们正常写的report逻辑差不多,取数的逻辑写在start-of-selection里。由于通过特征值筛选物料,则在查询时直接根据用户填的特征值修改matnr即可,无需关注他的取值逻辑。
代码修改
- 选择屏幕增加特征值字段
- 查询时根据特征值修改matnr中的内容
3.对了,查询时如果不填物料这些信息的话,会提示一个"限制选择",非得再多一个回车的操作,经调试后发现是下图这里的程序,刚好预留了增强点,可以把这个提示去掉。
MB52增加字段,客户名称
程序分析
- 首先在end-of-selection 找到alv展示的部分,发现他展示的是bestand这个内表
- 再去start-of-selection 中找到bestand的赋值过程,我们也无需关注他的取值逻辑,直接在最后运算完的地方找一个隐式增强的点,loop一下这个内表,对新加的字段赋值即可。
- 最后fieldcat还要加上这个字段
代码修改
- 内表增加字段
- 字段赋值
3.fieldcat 增加展示的字段
总结
- 其他的一些复杂逻辑的标准报表修改也可以用这个思路:
对于筛选,可以在查询前修改标准的字段
对于增加字段,可以在标准的查询后,再去修改给新增的字段赋值
这样就无需研究他的取数逻辑了 - 由于本人比较菜,写的增强基本上都是直接去找的隐式增强,不太会找badi,大佬们有没有其他的思路也可以分享。
感谢!