动态报表 DQuery 添加 SQL 语句显示

作者:ABAP技巧与实战 约 5 分钟阅读 更新日期:2025-03-02 1 年前更新 标签:ABAP, 开发

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

前言

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

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

> ](https://mp.weixin.qq.com/s?__biz=Mzg4MjA1MjE4NQ==&mid=2247486429&idx=1&sn=8cbab08040255baa4c7495e6e106230d&chksm=cf5dd6ebf82a5ffdf6cd2cca5ef3b3a298dcb7e3aac2b4cae5073af9c6720bf57b5544c57a49&token=1781044124&lang=zh_CN#rd)

**本文主要介绍动态报表新增功能:添加SQL语句显示**

缘起

动态报表允许新增字段,并且能给新增字段使用SQL表达式

> 详见链接 无峰,公众号:ABAP 技巧与实战 [ 动态报表D-Query 新增计算字段

> ](https://mp.weixin.qq.com/s?__biz=Mzg4MjA1MjE4NQ==&mid=2247485984&idx=1&sn=f87dfcd7d33021df24e7f2e637fa32b5&chksm=cf5dd716f82a5e003e5f679586db5702593ed7479d068c1666e6b94056aa7525a926842a00bd&token=1781044124&lang=zh_CN#rd)

如果新增字段的SQL表达式写的有问题, 执行时会报SQL错误.比如下图,新增字段使用了错误的表达式,执行动态报表时报错

同时也因为动态报表的一些未知的问题, 当连接关系特别复杂时,有可能导致执行SQL报错.

动态报表 DQuery 添加 SQL 语句显示 - 封面图
动态报表 DQuery 添加 SQL 语句显示 - 封面图

改进

在执行的清单显示中及明细显示清单中,各添加了一个功能,用于显示当前执行的SQL语句

这样,当SQL执行报错时,就可可以通过该功能查看具体的SQL语句内容. 以便判断具体的错误原因.

• 如图一, 可以看出,读取的字段 a~kwmeng 不存在.

• 如图二. 对应成功执行的,能看到执行的SQL语句

• 如图三, 明细显示中可以点击查看读取明细的SQL语句

动态报表 DQuery 添加 SQL 语句显示 - 封面图
动态报表 DQuery 添加 SQL 语句显示 - 封面图

图一

动态报表 DQuery 添加 SQL 语句显示 - 封面图
动态报表 DQuery 添加 SQL 语句显示 - 封面图

图二

动态报表 DQuery 添加 SQL 语句显示 - 封面图
动态报表 DQuery 添加 SQL 语句显示 - 封面图

图三

说明

显示的SQL语句是ABAP SQL 语句, 去掉了INTO 子句,可以通过ZTOAD(一个来自网络的ABAP-SQL编辑器)验证.

如果想通过DB02的SQL编辑器验证, 需要调整成HANA SQL语句.(简单的SQL语句可以把~替换成.即可)

动态报表 DQuery 添加 SQL 语句显示 - 封面图
动态报表 DQuery 添加 SQL 语句显示 - 封面图

SQL编辑器

支持ABAP/HANA的SQL编辑器工具

• ZSQL

• ZTOAD

• DB02

> 具体工具说明详见链接 无峰,公众号:ABAP开发技巧 [ SAP工具箱之一键生成报表

> ](https://mp.weixin.qq.com/s?__biz=Mzg4MjA1MjE4NQ==&mid=2247484616&idx=1&sn=0ace84b7fb5a0faf1e468d7530538ef8&chksm=cf5dd9fef82a50e81f5d26d7a4cef2555d6ee5439428e25b554fa03363426dee1bfc26fdef56&token=1781044124&lang=zh_CN#rd)

局限性

因为构造的SQL语句并没有考虑编辑器优化显示, 整个动态SQL语句放到了一个string字符串. 显示SQL也仅仅时通过CL_DEMO_DISPLAY

把这个字符串呈现出来. 因此该SQL语句的阅读性很差.

需要放到其它文本编辑器中去手动换行. 以便于阅读理解该SQL语句.

如果你有什么方法可以自动优化SQL语句的显示,请不吝赐教一下. 多谢. (似乎ABAP编辑器对SQL的显示优化也不尽如人意)

动态报表 DQuery 添加 SQL 语句显示 - 封面图
动态报表 DQuery 添加 SQL 语句显示 - 封面图

期待的编辑器优化格式

动态报表 DQuery 添加 SQL 语句显示 - 封面图
动态报表 DQuery 添加 SQL 语句显示 - 封面图

测试了标准函数 PRETTY_PRINTER . 效果也不太好

动态报表 DQuery 添加 SQL 语句显示 - 封面图
动态报表 DQuery 添加 SQL 语句显示 - 封面图

** 优化后的SQL显示 . **

使用了 cl_d emo_output => write_text输出字符串, 该方法 会依赖于 空格 识别 完整 单词. 但因为

group by 语 句中 多个字段通过逗号分割, 无法被自动分行. 后续考虑优化 cl_demo_o utput=>write_text

. 允许识别逗号自动分行. 这样SQL语句的显示就完美了.

动态报表 DQuery 添加 SQL 语句显示 - 封面图
动态报表 DQuery 添加 SQL 语句显示 - 封面图

总结

通过项目中的应用,逐渐改进动态报表的功能.

添加SQL语句看起来只是一个很简单的改进, 却能让动态报表的使用人员感受到更加友好的交互.

当查询报错或对查询结果有质疑时,可以通过查看/核对SQL语句来检查动态报表的表连接,字段选择等问题. 更加方便的定位错误原因.

SQL语句的显示尚待优化,以便更好的阅读.

ABAP技巧与实战

关于作者:ABAP技巧与实战

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

来源说明:本文内容由「动态报表DQuery添加SQL语句显示.md」整理生成,仅用于内部技术分享与学习交流。