动态报表 DQuery 排序及行转列改进

作者: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=799069602&lang=zh_CN#rd)

**本文主要介绍动态报表的排序功能及行转列的改进功能**

排序功能缘由

动态报表通过ALV输出, ALV有完整的排序功能,并可以通过保存默认变式设置默认排序.

**TIPS**

**SPRING**

所有动态报表的主体程序是同一个程序名.

但是设置变式时,可以指定报表查询ID作为变式的程序名(不一定非要使用当前程序名),这样确保多个查询ID保存的ALV变式不互相冲突.

动态报表 DQuery 排序及行转列改进 - 封面图
动态报表 DQuery 排序及行转列改进 - 封面图

但因为动态报表的行转列功能中的列字段顺序依赖于源内表中字段内容出现的顺序. 如果源内表没有按转列字段排序, 则转列后的字段名可能不是顺序的. 如下图

基于这个理由,添加了动态排序的功能

动态报表 DQuery 排序及行转列改进 - 封面图
动态报表 DQuery 排序及行转列改进 - 封面图

排序功能实现

在动态报表切换到复杂设置后, 可以给字段设置排序方式.为了简化设置,排序功能的优先关系使用了字段输出的先后顺序.

动态报表 DQuery 排序及行转列改进 - 封面图
动态报表 DQuery 排序及行转列改进 - 封面图
动态报表 DQuery 排序及行转列改进 - 封面图
动态报表 DQuery 排序及行转列改进 - 封面图

设置排序后的输出效果(按客户字段设置了排序)

动态报表 DQuery 排序及行转列改进 - 封面图
动态报表 DQuery 排序及行转列改进 - 封面图

按期间设置了排序,转列后字段顺序正常

动态报表 DQuery 排序及行转列改进 - 封面图
动态报表 DQuery 排序及行转列改进 - 封面图

行转列的附加字段

> 动态报表行转列详见链接 无峰,公众号:ABAP 技巧与实战 [ 动态报表D-Query 添加行表转列表显示

> ](https://mp.weixin.qq.com/s?__biz=Mzg4MjA1MjE4NQ==&mid=2247486294&idx=1&sn=8afee58a285fd51f6d77be591706068e&chksm=cf5dd660f82a5f7609dd1698e01f488bbf31e39ea297303e19d07d0f0700c3ebb3bc48fbc533&token=799069602&lang=zh_CN#rd)

行转列时,不同的报表可能基于该报表的需求,要求添加比较字段或合计字段.

比较字段:用来比较同一行中的转列内容是否都一致,如果参与比较的只有两列,会补充输出一个差异字段(用于记录两个列的差值).如果有多列,则不会添加差异字段.

合计字段: 把一行中所有转列字段加总. (比如下图的期间字段转列. 财务类报表通常会有加总所有期间金额的需求.)

动态报表 DQuery 排序及行转列改进 - 封面图
动态报表 DQuery 排序及行转列改进 - 封面图

通过动态报表的配置,可以方便的确定特定报表是否需要添加行转列的这些附加字段

动态报表 DQuery 排序及行转列改进 - 封面图
动态报表 DQuery 排序及行转列改进 - 封面图

行转列保留显示的列

对于财务的报表,可能期望仅输出选择期间的最后一期金额及汇总金额. 此时,可以通过保留显示的列功能来设置,

保留所有

• F 第一列

• L 最后一列

• B 第一列和最后一列

动态报表 DQuery 排序及行转列改进 - 封面图
动态报表 DQuery 排序及行转列改进 - 封面图

总结

SAP对基于HANA的开发有个性能优化建议: 计算逻辑下沉.如下图所示. 把计算逻辑尽量放到数据库层面执行. 使用动态报表开发报表类程序吻合了这个建议.

通过CDS视图或HANA视图实现复杂的查询逻辑, 数据的呈现统一通过动态报表实现(包含了汇总-明细,下穿,SAP图表,行转列等丰富的呈现模式)

后续会持续基于动态报表开发报表,归纳总结报表的特性,逐渐优化,完善并添加更多的动态报表功能.

动态报表 DQuery 排序及行转列改进 - 封面图
动态报表 DQuery 排序及行转列改进 - 封面图

** THE **

** END **

**约定**

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

( **如果你真的喜欢这篇文章,请记得回来打个赏,作为支持我继续下去的动力,这是一个正反馈过程.

越多的人打赏,作者越有动力分享,读者就能享受更多的福利.毕竟打赏的金额富不了我,穷不了你,却能支持这个公众号长久发文.** )

请微信联系管理员

syjf1976

sharry_xlp

Yannick_Duan

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

ABAP技巧与实战

关于作者:ABAP技巧与实战

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

来源说明:本文内容由「动态报表DQuery排序及行转列改进.md」整理生成,仅用于内部技术分享与学习交流。