累计求和的八种姿势(Cumulative Sum/running total/YTD)

累计求和/运行时累计
场景:如下图所示,对AMOUNT字段 累计求和


  1. 限定列-方式a
在Query Designer创建12个限定列,第1个限定列限定1月,第2个限定列限定1-2月……第12个限定列限定1-12月
  1. 限定列-方式b
使用常数选择
新建公式变量,使用替换路径,其它默认
新建公式
结果

  1. 限定列-Current Member
使用CM变量限定日历年月
结果

  1. 本地计算
在Query Designer设置 Calculate single values As Cumulated标识
结果
*对某些前端工具不起作用
  1. HANA计算视图-SQL
A)方式1: Window function
B) 方式2:子查询
  1. HANA计算视图-图形

新建计算视图ZCV_CALMONTH_CUMULATIVE
数据示例
新建模型CV_RUN_TOTAL
Proj_Month节点
Proj_Data节点
Join_sum节点
Union_1节点
Aggregation节点
整个计算视图
结果集
  1. 动态计算列
通过ABAP增强RSROA的方法COMPUTE_TABLE动态计算
结果集(注意效率)
  1. 通过DTP将数据物化到模型
适用于大数据量情况
参考代码:
DATA : lt_rp2 TYPE _ty_t_tg_1 ,
ls_rp2 TYPE _ty_s_tg_1 ,
lv_cm2 TYPE /bi0/oicalmonth2 ,
lv_n TYPE /bi0/oicalmonth2 ,
lv_cq1 TYPE /bi0/oicalquart1 .
DATA ( lv_rec ) = lines ( RESULT_PACKAGE ) + 1 . "need to fill record field in result_package internal table.
LOOP AT RESULT_PACKAGE INTO ls_rp2 .
lv_cm2 = ls_rp2 - calmonth2 . " take calmonth2, e.g. 01 for Jan, 02 for Feb and so on
lv_n = 12 - lv_cm2 . " calc number of times the record should be multiplied in loop below
DO lv_n TIMES .
ls_rp2 - calmonth2 = lv_cm2 + sy - index . " calc corresponding month number
CONCATENATE ls_rp2 - calyear ls_rp2 - calmonth2 INTO ls_rp2 - calmonth . " ... and calmonth
lv_cq1 = ls_rp2 - calmonth2 DIV 4 + 1 . " calc corresponding quater number
ls_rp2 - calquart1 = lv_cq1 .
CONCATENATE ls_rp2 - calyear ls_rp2 - calquart1 INTO ls_rp2 - calquarter . "... adn calquarter
ls_rp2 - record = lv_rec .
ls_rp2-/bic/zrt = 'X' . "set field to sepatare rows with RT
APPEND ls_rp2 TO lt_rp2 .
lv_rec = lv_rec + 1 .
ENDDO .
ENDLOOP .
APPEND LINES OF lt_rp2[] TO RESULT_PACKAGE[] . "finally combine "in period"-dataset with RT-dataset.

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值