SAP报表需求:仅展示每个SR NUM的最新日期对应记录
解决SAP报表保留每个SR NUM最新日期记录的方案
用SAP Query子查询直接过滤
如果你的报表基于SAP Query(SQ01/SQ02)搭建,直接在选择条件里加子查询就能搞定:
- 进入查询的选择条件编辑页,给
date字段设条件为「等于」 - 条件值选「子查询」,写逻辑:
SELECT MAX(date) FROM [你的数据表] WHERE sr_num = main.sr_num - 这样查询会自动为每个SR NUM匹配最新日期的记录
改ABAP代码做分组去重(有权限的话)
要是你能修改报表的ABAP代码,在数据读取阶段直接处理:
* 先读取所有符合条件的SR数据 SELECT sr_num, date, comments INTO CORRESPONDING FIELDS OF TABLE @DATA(lt_sr_records) FROM [你的数据表] WHERE sr_num IN @s_srnum AND date IN @s_date. * 按SR NUM分组,取最新日期的记录 SORT lt_sr_records BY sr_num date DESCENDING. DELETE ADJACENT DUPLICATES FROM lt_sr_records COMPARING sr_num.
这段代码先把数据按SR NUM、日期降序排序,再删掉重复的SR NUM条目,剩下的就是每个SR NUM最新的那条记录。
调整变量设置规避多值问题
之前做变量遇到多值报错的话,换个变量创建方式:
- 新建一个特征变量,参考
sr_num字段,类型选「替换路径」 - 替换路径里选「聚合」,聚合类型挑「最大值」,参考字段选
date - 报表筛选时把
date字段设为「等于」这个变量,注意调整变量的处理顺序,确保先完成聚合再执行筛选
Excel应急处理
如果SAP端操作暂时卡壳,先导出数据到Excel快速处理:
- 全选数据,按
sr_num升序、date降序排序 - 选中
sr_num列,点「数据」选项卡的「删除重复值」,只勾选sr_num,确认后就会保留每个SR NUM的第一条(也就是最新日期)记录
内容的提问来源于stack exchange,提问作者KateB
相关产品推荐
相关产品推荐

