动态报表D-Query 添加SQL语句显示
一
前言
动态报表D-Query 是一个用于取代标准QUERY的程序.使用动态报表无需写代码,非开发人员也可生成专业的报表程序.
详见动态报表简介
无峰,公众号:ABAP 技巧与实战 动态报表D-Query简介
本文主要介绍动态报表新增功能:添加SQL语句显示
二
缘起
动态报表允许新增字段,并且能给新增字段使用SQL表达式
详见链接
无峰,公众号:ABAP 技巧与实战 动态报表D-Query 新增计算字段
如果新增字段的SQL表达式写的有问题, 执行时会报SQL错误.比如下图,新增字段使用了错误的表达式,执行动态报表时报错
同时也因为动态报表的一些未知的问题, 当连接关系特别复杂时,有可能导致执行SQL报错.
三
改进
在执行的清单显示中及明细显示清单中,各添加了一个功能,用于显示当前执行的SQL语句
这样,当SQL执行报错时,就可可以通过该功能查看具体的SQL语句内容. 以便判断具体的错误原因.
如图一, 可以看出,读取的字段 a~kwmeng 不存在.
如图二. 对应成功执行的,能看到执行的SQL语句
如图三, 明细显示中可以点击查看读取明细的SQL语句
图一
图二
图三
四
说明
显示的SQL语句是ABAP SQL 语句, 去掉了INTO 子句,可以通过ZTOAD(一个来自网络的ABAP-SQL编辑器)验证.
如果想通过DB02的SQL编辑器验证, 需要调整成HANA SQL语句.(简单的SQL语句可以把~替换成.即可)
五
SQL编辑器
支持ABAP/HANA的SQL编辑器工具
ZSQL
ZTOAD
DB02
具体工具说明详见链接
无峰,公众号:ABAP开发技巧 SAP工具箱之一键生成报表
六
局限性
因为构造的SQL语句并没有考虑编辑器优化显示, 整个动态SQL语句放到了一个string字符串. 显示SQL也仅仅时通过CL_DEMO_DISPLAY 把这个字符串呈现出来. 因此该SQL语句的阅读性很差.
需要放到其它文本编辑器中去手动换行. 以便于阅读理解该SQL语句.
如果你有什么方法可以自动优化SQL语句的显示,请不吝赐教一下. 多谢. (似乎ABAP编辑器对SQL的显示优化也不尽如人意)
期待的编辑器优化格式
测试了标准函数 PRETTY_PRINTER . 效果也不太好
优化后的SQL显示 .
使用了 cl_d emo_output => write_text输出字符串, 该方法 会依赖于 空格 识别 完整 单词. 但因为 group by 语 句中 多个字段通过逗号分割, 无法被自动分行. 后续考虑优化 cl_demo_o utput=>write_text . 允许识别逗号自动分行. 这样SQL语句的显示就完美了.
七
总结
通过项目中的应用,逐渐改进动态报表的功能.
添加SQL语句看起来只是一个很简单的改进, 却能让动态报表的使用人员感受到更加友好的交互.
当查询报错或对查询结果有质疑时,可以通过查看/核对SQL语句来检查动态报表的表连接,字段选择等问题. 更加方便的定位错误原因.
SQL语句的显示尚待优化,以便更好的阅读.
本文使用 文章同步助手 同步