动态报表 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=8944528&lang=zh_CN&scene=21#wechat_redirect)

**本文主要介绍动态报表提供的增强点,以便满足复杂的报表设计**

特殊报表需求

该财务报表的具体需求

> 详见链接 无峰,公众号:ABAP 技巧与实战 [ 动态报表D-Query 自定义选择屏幕调用

> ](https://mp.weixin.qq.com/s?__biz=Mzg4MjA1MjE4NQ==&mid=2247488405&idx=1&sn=cf64951fd4efad5c486faf00725375e0&chksm=cf5dcea3f82a47b52fd43bcbf241b6edc5d483c6caca0322ab9d34f861a816420ec6fc7cca35&token=2116240118&lang=zh_CN#rd)

在上述链接的财务报表示例中. 业务提出还需要在配置表中增加行,同时设置该行由其它相关行计算而得. 比如下图

其中 3999行由 SUM(A) – SUM(B) – SUM(C).

这个需求很难通过CDS视图实现,只能对获取的数据再次加工

动态报表 DQuery 增强点 - 封面图
动态报表 DQuery 增强点 - 封面图

改进

为了处理这个需求. 做了两个改进

_**01** _

**调整配置表**

配置表ZTFI1027中增加了三个字段

• 排序码 用于确定最终输出的行顺序

• 公式编号 用于设置特定行参与汇总的组

• 计算公式 用于设定该行由什么公式完成计算

动态报表 DQuery 增强点 - 封面图
动态报表 DQuery 增强点 - 封面图

_**02** _

**给动态报表添加出口**

动态报表中添加一个配置点:配置数据加工函数

可以通过复制函数Z_FG_BC125_DEMO的界面生成一个新的函数, 在该函数中可以完成如下处理

• 可以通过修改CT_FCAT 控制ALV的输出格式

• 可以通过调用CC_GRID的方法,控制ALV的显示(排序/过滤/冻结等等).

• 可以通过修改CT_ALV的内容,调整报表的输出内容.

动态报表 DQuery 增强点 - 封面图
动态报表 DQuery 增强点 - 封面图

实现过程

针对该报表,设置一个处理函数

Z_FG_BC125_FI1027 配置到动态报表中. 如上图

函数中实现如下功能

隐藏特定字段

动态报表 DQuery 增强点 - 封面图
动态报表 DQuery 增强点 - 封面图

按公式编号统计金额

动态报表 DQuery 增强点 - 封面图
动态报表 DQuery 增强点 - 封面图
动态报表 DQuery 增强点 - 封面图
动态报表 DQuery 增强点 - 封面图

添加公式行

动态报表 DQuery 增强点 - 封面图
动态报表 DQuery 增强点 - 封面图

排序

动态报表 DQuery 增强点 - 封面图
动态报表 DQuery 增强点 - 封面图

公式计算

公式计算部分,调用了标准函数 EVAL_FORMULA 完成某些简单的公式,计算出结果

动态报表 DQuery 增强点 - 封面图
动态报表 DQuery 增强点 - 封面图

**小技巧**

**SPRING**

lv_str = | { } |.

这个赋值方式把数值转成字符串时,会自动前置负号

EVAL_FORMULA 输出必须是浮现型变量, 否则数字会变小.

动态报表 DQuery 增强点 - 封面图
动态报表 DQuery 增强点 - 封面图

最终达成效果

通过读取配置表获取排序码为 3999的行.并通过配置的公式计算出该行的金额.

动态报表 DQuery 增强点 - 封面图
动态报表 DQuery 增强点 - 封面图

总结

尝试使用动态报表实现相对复杂的财务报表时,发现财务报表往往会有一些特殊的新增行,并通过公式计算出这些行的金额.

给动态报表添加出口,通过出口对最终待呈现的数据再次加工.以满足一些特殊的报表需求.

后续会持续尝试使用动态报表完成项目上的报表需求. 并归纳这些报表的特性,改进动态报表,以便满足一些具有共性的报表需求.

** THE **

** END **

**约定**

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

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

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

请微信联系管理员

syjf1976

sharry_xlp

Yannick_Duan

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

ABAP技巧与实战

关于作者:ABAP技巧与实战

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

来源说明:本文内容由「动态报表DQuery增强点.md」整理生成,仅用于内部技术分享与学习交流。