动态报表D-Query 优化SQL语句显示

前言

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

详见链接

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

本文主要介绍动态报表对SQL语句显示的优化

旧版SQL显示

之前写了一篇文章,介绍了动态报表添加SQL语句的显示,

详见链接

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

当时就感觉显示的SQL语句的易读性比较差,一直想着优化一下这个SQL的显示

7445aa568961c38c392aa2562620ab46.png

新版SQL显示

新版SQL显示做了如下的改进

  • 关键字粗体呈现

  • 字段分行呈现

  • 关联表分行呈现

  • 同时呈现两种SQL语句:ABAP SQL和 HANA SQL

  • 分别用不同的注释方式标记ABAP SQL 和 HANA SQL

点击显示SQL语句后,依次显示ABAP SQL 和 HANA SQL,显示的SQL语句去掉了INTO子句部分, 以便于复制粘贴到其它SQL编辑器中使用.

7a86621f64b0c7fdee922abe56e68218.png

cc13502866dd00c7b4c73729fe8cd61d.png

a98a10b08dee6fc5e7db6e4ff04cc0ec.png

ABAP SQL语句的执行

事务代码ZTOAD 执行ABAP SQL

ZTOAD是网上流传的 ABAP SQL编辑器,可以编写执行ABAP SQL语句(去掉 INTO子句部分),但是因为ABAP SQL语法的新功能比较多. 这个编辑器对有些ABAP SQL会误报错,该工具不可全信.

动态报表呈现的 ABAP SQL 全文复制到ZTOAD中即可使用

c60eee7f55e4c37219e12e2e9fd70f42.png

HANA SQL语句的执行

DB02 SQL编辑器执行HANA SQL

HANA SQL编辑器有多个事务代码入口. 比较常用的是DB02 ,进去后,找到诊断中的SQL编辑器,双击即可使用,

HANA SQL编辑器可以存储SQL语句,方便下次获取后使用

动态报表呈现的HANA SQL 全文复制到 HANA SQL编辑器中即可直接使用.

1f0365ac9a322f4d47af3a5affcf3905.png

cfe5b450b8e0b3d82bee3dbb5ea55980.png

653dcab09080b4cbe9c6a25520adacf0.png

实现过程

创建了类 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显示方法

8a6cb27629c19c8359f5d1d4d0354c75.png

源代码

SQL显示源代码的优化方法如下

其中使用 cl_demo_output=>next_section 方法输出关键字,

使用 cl_demo_output=>write_text 方法输出关键字后面附带的子句

后续改进: 在SELECT 字段名后面添加 字段的描述,类型,长度等信息 在表名后面添加表的描述信息

fab19713ca0a3de7413e658db6bb2c4e.png

736d1091c9f843095552b6990bfd158d.png

23b343635ee5a73947dfd576ecc6b71e.png

ebe4bdefef643e1ce2be14acaaa5f6b4.png

总结

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

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

也可以通过对SQL的调整,实现一些无法通过动态报表配置的更复杂的SQL, 同时这些复杂SQL可以通过 一键生成程序固定成一个报表程序.

详见链接

无峰,公众号:ABAP开发技巧SAP工具箱之一键生成报表

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值