动态报表 DQuery 特殊查询条件支持

作者:ABAP技巧与实战 约 4 分钟阅读 更新日期:2025-03-02 1 年前更新 标签:ABAP, 开发
目录
动态报表 DQuery 特殊查询条件支持 - 封面图
动态报表 DQuery 特殊查询条件支持 - 封面图

原创 无峰 [ ABAP 技巧与实战 ](javascript:void\(0\);)

前言

动态报表D-Query 是一个用于取代标准QUERY的程序.使用动态报表无需写代码,非开发人员也可生成专业的报表程序.

> 详见动态报表简介

>

> 无峰,公众号:ABAP 技巧与实战 动态报表D-Query简介

** 本文主要介绍动态报表新增功能:特殊查询条件支持 **

NULL的支持

前面介绍过如果查询存在左连接, 可以使用NULL作为查询条件. 这样可以查询左表存在,但是右表中不存在的数据

> 详见链接

>

> 无峰,公众号:ABAP 技巧与实战 动态报表D-Query 添加NULL查询支持

业务查询需求

特定查询中可能会出现关联表的两个字段之间的比较.

比如用交货单关联销售订单,查找交货单中库位和销售订单库位不一致的数据. 获取那些被人为修改库位的数据.

再比如,物料主数据属性(物料组)改变, 但之前的物料组信息已经带入到单据,物料组影响了定价,

所以需要查询出所有订单中的物料组和主数据中的物料组不一致的单据. 以便执行定价更新等处理.

上述查询都需要使用两个查询的字段之间的比较.

示例

SELECT A.VBELN,A.POSNR,A.VGBEL,A.VGPOS,A.LGORT,B.LGORT

FROM LIPS AS A INNER JOIN VBAP AS B

ON B.VBELN = A.VGBEL AND B.POSNR = A.VGPOS

WHERE A.LGORT <> B.LGORT

动态报表本身生成的查询条件通过动态选择屏幕生成. 只能是字段和具体的输入条件的比较. 无法做到上述语句中的 字段之间的比较.

因此考虑在动态报表中配置中添加一个特殊查询条件, 用来支持此类的查询

实现效果

在动态报表的配置中添加一个 指定特殊查询条件的字段. 允许用户根据报表实际需求,输入特定的查询条件: 主要是两个字段内容之间的逻辑表达式.

这个条件联合其它查询条件完成整个查询.

通过查询生成的SQL语句可以看出

> 详见连接

>

> 无峰,公众号:ABAP 技巧与实战 动态报表D-Query 优化SQL语句显示

动态报表 DQuery 特殊查询条件支持 - 封面图
动态报表 DQuery 特殊查询条件支持 - 封面图
动态报表 DQuery 特殊查询条件支持 - 封面图
动态报表 DQuery 特殊查询条件支持 - 封面图

总结

通过特殊查询条件, 让动态报表支持更多的特殊查询,提升了动态报表的应用空间.

未来的一个可能优化点

特殊WHERE 条件目前限制在一个字段中. 长度有限. 如果特殊查询条件比较复杂,可能会出现长度不足的情况. 后续可以考虑通过长文本来登记特殊查询条件

** THE **

** END **

** 约定 **

如果你对这篇文章感兴趣,请帮忙点赞,在看,分享.

请微信联系管理员

syjf1976

sharry_xlp

Yannick_Duan

申请进入公众号讨论群提问或者参与话题讨论

ABAP技巧与实战

关于作者:ABAP技巧与实战

企业信息化与 SAP 技术顾问,长期专注 SAP ABAP、FI/CO、MM、SD 等模块的技术分享与实战经验总结。查看更多介绍

来源说明:本文内容由「动态报表DQuery特殊查询条件支持.md」整理生成,仅用于内部技术分享与学习交流。