原理:先根据模型和查询条件取出数据,然后把金额设置为0,再写回CUBE.

1.获取数据并清空金额

  1. *&---------------------------------------------------------------------*
  2. *& Form CLEAR_BPC_DATA
  3. *&---------------------------------------------------------------------*
  4. *& text
  5. *&---------------------------------------------------------------------*
  6. *& --> S_ENTITY 公司代码
  7. *& --> P_YEAR 年度
  8. *& --> P_MONTH 月份
  9. *& --> P_CAT
  10. *&---------------------------------------------------------------------*
  11. FORM frm_clear_bpc_data USING p_gt_input_entity LIKE gt_input_entity
  12. p_p_year LIKE p_year
  13. p_p_month LIKE p_month
  14. p_p_cat LIKE p_cat
  15. CHANGING
  16. p_t_bpc_data TYPE ANY TABLE .
  17.  
  18. DATA: lt_axis_base TYPE ujo_t_query_dim, "每行是一个维度上的一组成员
  19. lt_axis TYPE ujo_t_query_dim, "每行是一个维度上的一组成员
  20. ls_axis_t TYPE ujo_t_members, "成员表
  21.  
  22. lt_cv_base TYPE TABLE OF ujk_s_cv, "BPC Script Logic Current View
  23. lt_cv_final TYPE TABLE OF ujk_s_cv, "BPC Script Logic Current View
  24. lt_cv_pkg LIKE TABLE OF lt_cv_base,
  25. ls_cv LIKE LINE OF lt_cv_base,
  26. lr_bpc_data TYPE REF TO data.
  27.  
  28. FIELD-SYMBOLS <ft_pkg_data> TYPE ANY TABLE.
  29. CREATE DATA lr_bpc_data LIKE p_t_bpc_data.
  30. ASSIGN lr_bpc_data->* TO <ft_pkg_data>.
  31.  
  32. * 准备不变的条件
  33. CLEAR ls_cv.
  34. LOOP AT p_gt_input_entity INTO DATA(lv_entity).
  35. ls_cv-dimension = 'ENTITY'.
  36. APPEND lv_entity TO ls_cv-member.
  37. ENDLOOP.
  38. APPEND ls_cv TO lt_cv_base.
  39.  
  40. * 准备不变的条件
  41. CLEAR ls_cv.
  42. ls_cv-dimension = 'CATEGORY'.
  43. APPEND s_veson-low TO ls_cv-member.
  44. APPEND ls_cv TO lt_cv_base.
  45.  
  46. * 准备不变的条件
  47. CLEAR ls_cv.
  48. ls_cv-dimension = 'TIME'.
  49. APPEND s_erdat-low TO ls_cv-member.
  50. APPEND ls_cv TO lt_cv_base.
  51.  
  52. * 准备不变的条件
  53. CLEAR ls_cv.
  54. ls_cv-dimension = 'AUDITTRAIL'.
  55. APPEND 'INPUTM' TO ls_cv-member.
  56. APPEND ls_cv TO lt_cv_base.
  57.  
  58. * 准备不变的条件
  59. CLEAR ls_cv.
  60. ls_cv-dimension = 'SCOPE'.
  61. APPEND 'S_NONE' TO ls_cv-member.
  62. APPEND ls_cv TO lt_cv_base.
  63.  
  64. * 准备变化的条件
  65. lt_cv_final = lt_cv_base.
  66.  
  67. CLEAR ls_cv.
  68. ls_cv-dimension = 'CATEGORY'.
  69. APPEND p_p_cat TO ls_cv-member.
  70. APPEND ls_cv TO lt_cv_final.
  71. APPEND lt_cv_final TO lt_cv_pkg.
  72.  
  73. "执行查询
  74. TRY.
  75. cl_ujk_model=>get_dim_list(
  76. EXPORTING
  77. i_appset_id = gco_appset_id
  78. i_appl_id = gco_appl_id
  79. i_with_measures = abap_false
  80. IMPORTING
  81. et_admin_dim_list = DATA(lt_dim_list)
  82. ).
  83.  
  84. DATA: lt_range TYPE uj0_t_sel,
  85. ls_range LIKE LINE OF lt_range.
  86.  
  87. DATA(lo_query) = cl_ujo_query_factory=>get_query_adapter(
  88. i_appset_id = gco_appset_id
  89. i_appl_id = gco_appl_id ).
  90.  
  91. LOOP AT lt_cv_pkg INTO DATA(lt_cv).
  92. "转换查询条件
  93. CLEAR:ls_range, lt_range[].
  94. LOOP AT lt_cv INTO ls_cv.
  95. ls_range-sign = 'I'.
  96. ls_range-option = 'EQ'.
  97. ls_range-dimension = ls_cv-dimension.
  98. LOOP AT ls_cv-member INTO DATA(lv_member).
  99. ls_range-low = lv_member.
  100. APPEND ls_range TO lt_range.
  101. ENDLOOP.
  102. ENDLOOP.
  103.  
  104. lo_query->run_rsdri_query(
  105. EXPORTING
  106. it_dim_name = lt_dim_list " BPC: Dimension List
  107. it_range = lt_range " BPC: Selection condition
  108. if_check_security = abap_true " BPC: Generic indicator
  109. IMPORTING
  110. et_data = <ft_pkg_data>
  111. ).
  112.  
  113. INSERT LINES OF <ft_pkg_data> INTO TABLE p_t_bpc_data.
  114. SORT p_t_bpc_data.
  115. DELETE ADJACENT DUPLICATES FROM p_t_bpc_data.
  116.  
  117. LOOP AT p_t_bpc_data ASSIGNING FIELD-SYMBOL(<fs_bpc_data>).
  118. ASSIGN COMPONENT 'SIGNEDDATA' OF STRUCTURE <fs_bpc_data> TO FIELD-SYMBOL(<fv_signeddata>).
  119. CHECK sy-subrc = 0.
  120. <fv_signeddata> = 0.
  121. ENDLOOP.
  122. ENDLOOP.
  123. CATCH cx_root INTO DATA(lr_exception).
  124. MESSAGE |查询需要覆盖的BPC数据时报错{ lr_exception->get_longtext( ) },请联系管理员| TYPE 'E'.
  125. ENDTRY.
  126. ENDFORM.

2. 写回CUBE

*&---------------------------------------------------------------------*
*& Form frm_write_into_bpc
*&---------------------------------------------------------------------*
*& text 写入BPC
*&---------------------------------------------------------------------*
*&      -->
*&---------------------------------------------------------------------*
FORM frm_write_into_bpc USING it_tab TYPE ANY TABLE
                               i_proc TYPE char1.

  CLEAR: gt_message.
  DATA: lo_ujo         TYPE REF TO if_ujo_write_back,
        l_str          TYPE string,
        ls_wb_param    TYPE if_ujo_write_back=>gs_wb_param,
        ls_wb_status   TYPE ujo_s_wb_status,
        ls_work_status TYPE ujr_s_work_status,
        ls_audit       TYPE ujr_s_update_audit,
        lt_message     TYPE uj0_t_message,
        lr_data        TYPE REF TO data.

  FIELD-SYMBOLS: <lt_error_records> TYPE ANY TABLE.

  CREATE DATA lr_data LIKE it_tab.
  ASSIGN lr_data->* TO <lt_error_records>.

  CALL METHOD cl_ujo_wb_factory=>create_write_back
    RECEIVING
      ro_write_back = lo_ujo.

  ls_wb_param = cl_ujo_wb_factory=>default_wb_param( ).
  ls_wb_param-bypass_security = abap_true.

  TRY.
      CALL METHOD lo_ujo->write_back
        EXPORTING
          i_appset_id      = gco_appset_id
          i_appl_id        = gco_appl_id
          is_wb_param      = ls_wb_param
*         it_records       = <fs_t_data>
          it_records       = it_tab
        IMPORTING
          es_wb_status     = ls_wb_status
          et_error_records = <lt_error_records>
          et_message       = gt_message.

      cl_ujk_logger=>log( '提交记录: ' && ls_wb_status-nr_submit && '条, ' && '成功记录: ' && ls_wb_status-nr_success && '条' ).

      IF gt_message IS NOT INITIAL.
        CALL SCREEN 400 STARTING AT 2 2 ENDING AT 120 30.
      ELSE.
        IF i_proc = gco_update.
          MESSAGE s008.
        ENDIF.
      ENDIF.

    CATCH cx_ujo_write_back cx_uj_static_check  INTO DATA(lo_write).
      l_str = lo_write->get_text( ).
      MESSAGE l_str TYPE 'S' DISPLAY LIKE 'E'.
  ENDTRY.

ENDFORM.

SAP BPC 清除CUBE 中的数据的更多相关文章

  1. SSAS中CUBE行权限数据级权限控制

    去年做了一个数据仓库的项目,其中涉及到了CUBE数据级权限的控制.在网上找这方面的资料,找到一个[BI] 通用数据级权限控制解决方案的实现(二):Cube中的角色设置与数据级权限控制.根据这个大牛的思 ...

  2. JAVA整合Redis使用redisTemplate清除库中的所有键值对数据

    JAVA整合Redis使用redisTemplate清除库中的所有键值对数据,清除所有缓存数据 Set<String> keys = redisTemplate.keys("*& ...

  3. SAP CRM 通过调试观察CL_CRM_BOL_ENTITY中的数据

    这个(BOL里面)最重要的类值得一看. BOL中的每条记录都会在CL_CRM_BOL_ENTIT中表示.至今,我们已经写过一些事件处理器,并且我们已经直接或间接的通过这个类工作.在业务场景中,我们也许 ...

  4. SAP SMARTFORMS-基于内存方式在report程序中传递数据到smartforms显示

    一.准备工作 1.新建include程序 1> include程序名字:ZDD_INC_0104 2> ZDD_INC_0104  程序中的内容为 2.使用T-CODE :SE11新建两个 ...

  5. SAP BPC方案介绍

    refer to http://sapper.blog.sohu.com/166039991.html SAP/BPC简介: 全面预算管理是联系公司战略目标与日常运营的重要纽带,它上到战略层面.下到执 ...

  6. SSAS中事实表中的数据如果因为一对多或多对多关系复制了多份,在维度上聚合的时候还是只算一份

    SSAS事实表中的数据,有时候会因为一对多或多对多关系发生复制变成多份,如下图所示: 图1 我们可以从上面图片中看到,在这个例子中,有三个事实表Fact_People_Money(此表用字段Money ...

  7. WPF中的数据验证

    数据验证 WPF的Binding使得数据能够在数据源和目标之间流通,在数据流通的中间,便能够对数据做一些处理. 数据转换和数据验证便是在数据从源到目标 or 从目标到源 的时候对数据的验证和转换. V ...

  8. C#-WinForm-ListView-表格式展示数据、如何将数据库中的数据展示到ListView中、如何对选中的项进行修改

    在展示数据库中不知道数量的数据时怎么展示最好呢?--表格 ListView - 表格形式展示数据 ListView 常用属性 HeaderStyle - "详细信息"视图中列标头的 ...

  9. LINQ-to-SQL那点事~LINQ-to-SQL中的数据缓存与应对

    回到目录 这个文章写的有点滞后了,呵呵,因为总想把之前不确定的东西确定了之后,再写这篇,之前的LINQ-to-SQL那点事,请点这里. LINQ-to-SQL中的数据缓存与应对 Linq-to-SQL ...

随机推荐

  1. MySQL 的 GRANT和REVOKE 命令

    MySQL 的 GRANT和REVOKE 命令 GRANT - 授权 将指定 操作对象 的指定 操作权限 授予指定的 用户; 发出该 GRANT语句的可以是数据库管理员,也可以是该数据库对象的创建者; ...

  2. Linux获取本机公网IP,调整双节点主从服务的RPC调用逻辑

    简单记录一次双节点的之间的服务调用叭 ~ 现有: 服务A的双节点A1.A2 服务B的双节点B1.B2 服务A 和服务B 通过 Netty 实现 RPC 通信,可能会导致比较玄学的问题.如图: 要做到 ...

  3. jmeter元件分析

    jmeter元件分析 一.脚本通用性 1.性能测试脚本改动一下,加入断言等元件,就可以作为接口测试脚本来使用 2.但是接口测试的脚本不可以作为性能测试脚本来使用 3.原因:因为性能测试考虑更多的性能, ...

  4. ImageKnife组件,让小白也能轻松搞定图片开发

    本期我们给大家带来的是开发者周黎生的分享,希望能给你的HarmonyOS开发之旅带来启发~ 图片是UI界面的重要元素之一, 图片加载速度及效果直接影响应用体验.ArkUI开发框架提供了丰富的图像处理能 ...

  5. 就是要让你搞懂Nginx,这篇就够了!

    开源Linux 长按二维码加关注~ 作者:渐暖° 出处:blog.csdn.net/yujing1314/article/details/107000737 来源:公众号51CTO技术栈 Nginx ...

  6. 【翻译】ScyllaDB数据建模的最佳实践

    文章翻译自Scylla官方文档:https://www.scylladb.com/2019/08/20/best-practices-for-data-modeling/ 转载请注明出处:https: ...

  7. p2p-tunnel 打洞内网穿透系列(三)TCP转发访问内网web服务

    系列文章 p2p-tunnel 打洞内网穿透系列(一)客户端配置及打洞 p2p-tunnel 打洞内网穿透系列(二)TCP转发访问远程共享文件夹 p2p-tunnel 打洞内网穿透系列(三)TCP转发 ...

  8. 【java并发编程】ReentrantLock 可重入读写锁

    目录 一.ReentrantLock可重入锁 二.ReentrantReadWriteLock读写锁 三.读锁之间不互斥 欢迎关注我的博客,更多精品知识合集 一.ReentrantLock可重入锁 可 ...

  9. linux篇-CentOS7搭建NTP服务器

    1查看服务器.客户端操作系统版本 2查看服务器是否安装ntp 3如果没有安装 4安装完成后重新查看服务器是否安装ntp 5查看ntp服务器状态 6修改配置文件 注释 #server 0.centos. ...

  10. unity---光照基础

    发射光源类型 光照参数介绍 让摄像头看到Flare 耀斑 改变影子