原创 无峰 [ ABAP 技巧与实战 ](javascript:void\(0\);)
一
前言
动态报表D-Query 是一个用于取代标准QUERY的程序.使用动态报表无需写代码,非开发人员也可生成专业的报表程序.
> 详见动态报表简介 无峰,公众号:ABAP 技巧与实战 [ 动态报表D-Query简介
> ](http://mp.weixin.qq.com/s?__biz=Mzg4MjA1MjE4NQ==&mid=2247486429&idx=1&sn=8cbab08040255baa4c7495e6e106230d&chksm=cf5dd6ebf82a5ffdf6cd2cca5ef3b3a298dcb7e3aac2b4cae5073af9c6720bf57b5544c57a49#rd)
**本文主要介绍动态报表的指标功能**
**
**
_指标一般指报表中等数量/金额字段_ **
**
二
常见的SQL统计
常见的数据库支持如下几种集合功能
• AVG 平均值
• MAX 最大值
• MIN 最小值
• SUM 请求
• COUNT 条目数
下图是ABAP SQL语法中支持的集合函数
三
动态报表支持的集合
动态报表根据数据的特点, 对求和处理补充了取绝对值,取反等附加处理.
以便更好的适应SAP表的特性.(比如退货订单数量也是正数,通过退货标记识别,统计时最好作取反后统计处理)
> 详见链接 无峰,公众号:ABAP 技巧与实战 [ 动态报表D-Query-新增数量金额字段
> ](http://mp.weixin.qq.com/s?__biz=Mzg4MjA1MjE4NQ==&mid=2247484535&idx=1&sn=32cf7e1f1e9bc56e25fa9b0c8c47ae76&chksm=cf5dd941f82a5057b40db559e2c210cc0868f5eabc9f60f3632a644c64de8aa54b4cc798c3bd#rd)
• A 取绝对值处理(SUM)
• B 取反处理(SUM)
• C 取绝对值后再取反(SUM)
• 空 无关(SUM)
• D 获取最大(MAX)
• E 获取最小(MIN)
• F 获取平均值(AVG)
四
MIN/MAX/AVG适用场景示例
最近尝试通过ZDQ实现一个计划协议报表,该报表有一列天数(计划交货日期-当前日期).天数这个字段可以两种方式实现
• 动态报表中新增字段的复杂SQL表达式
• CDS视图中获取该字段
图示是第二种解决办法,
> 第一种办法详见链接 无峰,公众号:ABAP 技巧与实战 [ 动态报表D-Query 新增计算字段
> ](http://mp.weixin.qq.com/s?__biz=Mzg4MjA1MjE4NQ==&mid=2247485984&idx=1&sn=f87dfcd7d33021df24e7f2e637fa32b5&chksm=cf5dd716f82a5e003e5f679586db5702593ed7479d068c1666e6b94056aa7525a926842a00bd#rd)
后续在动态报表中发现, 天数参与汇总没有任何业务含义. 只有最小/最大天数才有一定的业务含义(并且依赖于统计维度).
因此考虑给动态报表的指标字段添加了SQL中常用的AVG/MIN/MAX 方式. 这样对于天数类的字段,可以适用这三种集合方式来表达特定的业务含义
比如这个未清天数: 计划交货日期-当前日期(9999表示已清,负数表示计划交货日期在过去),这样获取的最小天数就表达了未清条目的最早天数.
五
总结
大部分的指标(数量/金额等通过数字类型定义的字段)适用于SUM求和,可以获取一个合计数量或金额.方便从整体查看数据.
但是个别字段,比如单价/天数等字段, 汇总没有具体的业务含义, 在统计时,可以考虑使用MIN/MAX/AVG获取一个相对有价值的集合值呈现出来.
** THE **
** END **
**约定**
如果你对这篇文章感兴趣,请帮忙点赞,在看,分享.
( **如果你真的喜欢这篇文章,请记得回来打个赏,作为支持我继续下去的动力,这是一个正反馈过程.
越多的人打赏,作者越有动力分享,读者就能享受更多的福利.毕竟打赏的金额富不了我,穷不了你,却能支持这个公众号长久发文.** )
**公众号 : syjf1976_abap**
**ABAP开发技巧**
**微信号 : 392077**
syjf1976
sharry_xlp
Yannick_Duan
申请进入公众号讨论群提问或者参与话题讨论