累计求和的八种姿势(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.


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部