点击蓝字 关注我们
一
前言
动态报表D-Query 是一个用于取代标准QUERY的程序.使用动态报表无需写代码,非开发人员也可生成专业的报表程序.
详见动态报表简介
无峰,公众号:ABAP 技巧与实战动态报表D-Query简介
本文主要介绍动态报表提供的增强点,以便满足复杂的报表设计
二
特殊报表需求
该财务报表的具体需求
详见链接
无峰,公众号:ABAP 技巧与实战动态报表D-Query 自定义选择屏幕调用
在上述链接的财务报表示例中. 业务提出还需要在配置表中增加行,同时设置该行由其它相关行计算而得. 比如下图
其中 3999行由 SUM(A) – SUM(B) – SUM(C).
这个需求很难通过CDS视图实现,只能对获取的数据再次加工
三
改进
为了处理这个需求. 做了两个改进
01
调整配置表
配置表ZTFI1027中增加了三个字段
排序码 用于确定最终输出的行顺序
公式编号 用于设置特定行参与汇总的组
计算公式 用于设定该行由什么公式完成计算
02
给动态报表添加出口
动态报表中添加一个配置点:配置数据加工函数
可以通过复制函数Z_FG_BC125_DEMO的界面生成一个新的函数, 在该函数中可以完成如下处理
可以通过修改CT_FCAT 控制ALV的输出格式
可以通过调用CC_GRID的方法,控制ALV的显示(排序/过滤/冻结等等).
可以通过修改CT_ALV的内容,调整报表的输出内容.
四
实现过程
针对该报表,设置一个处理函数
Z_FG_BC125_FI1027 配置到动态报表中. 如上图
函数中实现如下功能
隐藏特定字段
按公式编号统计金额
添加公式行
排序
公式计算
公式计算部分,调用了标准函数 EVAL_FORMULA 完成某些简单的公式,计算出结果
小技巧
SPRING
lv_str = | { } |.
这个赋值方式把数值转成字符串时,会自动前置负号
EVAL_FORMULA 输出必须是浮现型变量, 否则数字会变小.
五
最终达成效果
通过读取配置表获取排序码为 3999的行.并通过配置的公式计算出该行的金额.
六
总结
尝试使用动态报表实现相对复杂的财务报表时,发现财务报表往往会有一些特殊的新增行,并通过公式计算出这些行的金额.
给动态报表添加出口,通过出口对最终待呈现的数据再次加工.以满足一些特殊的报表需求.
后续会持续尝试使用动态报表完成项目上的报表需求. 并归纳这些报表的特性,改进动态报表,以便满足一些具有共性的报表需求.
THE
END
约定
如果你对这篇文章感兴趣,请帮忙点赞,在看,分享.
(如果你真的喜欢这篇文章,请记得回来打个赏,作为支持我继续下去的动力,这是一个正反馈过程. 越多的人打赏,作者越有动力分享,读者就能享受更多的福利.毕竟打赏的金额富不了我,穷不了你,却能支持这个公众号长久发文.)
请微信联系管理员:
syjf1976
sharry_xlp
Yannick_Duan
申请进入公众号讨论群提问或者参与话题讨论