一
前言
动态报表D-Query 是一个用于取代标准QUERY的程序.使用动态报表无需写代码,非开发人员也可生成专业的报表程序.
详见链接
无峰,公众号:ABAP 技巧与实战动态报表D-Query简介
本文主要介绍动态报表对SQL语句显示的优化
二
旧版SQL显示
之前写了一篇文章,介绍了动态报表添加SQL语句的显示,
详见链接
无峰,公众号:ABAP 技巧与实战动态报表D-Query 添加SQL语句显示
当时就感觉显示的SQL语句的易读性比较差,一直想着优化一下这个SQL的显示
三
新版SQL显示
新版SQL显示做了如下的改进
关键字粗体呈现
字段分行呈现
关联表分行呈现
同时呈现两种SQL语句:ABAP SQL和 HANA SQL
分别用不同的注释方式标记ABAP SQL 和 HANA SQL
点击显示SQL语句后,依次显示ABAP SQL 和 HANA SQL,显示的SQL语句去掉了INTO子句部分, 以便于复制粘贴到其它SQL编辑器中使用.
四
ABAP SQL语句的执行
事务代码ZTOAD 执行ABAP SQL
ZTOAD是网上流传的 ABAP SQL编辑器,可以编写执行ABAP SQL语句(去掉 INTO子句部分),但是因为ABAP SQL语法的新功能比较多. 这个编辑器对有些ABAP SQL会误报错,该工具不可全信.
动态报表呈现的 ABAP SQL 全文复制到ZTOAD中即可使用
五
HANA SQL语句的执行
DB02 SQL编辑器执行HANA SQL
HANA SQL编辑器有多个事务代码入口. 比较常用的是DB02 ,进去后,找到诊断中的SQL编辑器,双击即可使用,
HANA SQL编辑器可以存储SQL语句,方便下次获取后使用
动态报表呈现的HANA SQL 全文复制到 HANA SQL编辑器中即可直接使用.
六
实现过程
创建了类 ZCL_PRETTY_PRINT_SQL 来输出 SQL语句,
尝试了很多方法,
EDITOR-CALL FOR 语句
cl_demo_output类
PRETTY_PRINTER函数
最终采用 cl_demo_output ,输出较好看,并且可以直接复制,粘贴到其它SQL编辑器中
其中分行部分,需要用到ABAP特殊字符 cl_abap_char_utilities=>newline
DEMO_OUTPUT_NEW是最终使用的SQL显示方法
七
源代码
SQL显示源代码的优化方法如下
其中使用 cl_demo_output=>next_section 方法输出关键字,
使用 cl_demo_output=>write_text 方法输出关键字后面附带的子句
后续改进: 在SELECT 字段名后面添加 字段的描述,类型,长度等信息 在表名后面添加表的描述信息
八
总结
添加并优化SQL语句的显示看起来只是一个很简单的改进, 却能让动态报表的使用人员感受到更加友好的交互.
当查询报错或对查询结果有质疑时,可以通过查看/核对SQL语句来检查动态报表的表连接,字段选择等问题. 更加方便的定位错误原因.
也可以通过对SQL的调整,实现一些无法通过动态报表配置的更复杂的SQL, 同时这些复杂SQL可以通过 一键生成程序固定成一个报表程序.
详见链接
无峰,公众号:ABAP开发技巧SAP工具箱之一键生成报表