SAP BPC 清除CUBE 中的数据
原理:先根据模型和查询条件取出数据,然后把金额设置为0,再写回CUBE.
1.获取数据并清空金额
- *&---------------------------------------------------------------------*
- *& Form CLEAR_BPC_DATA
- *&---------------------------------------------------------------------*
- *& text
- *&---------------------------------------------------------------------*
- *& --> S_ENTITY 公司代码
- *& --> P_YEAR 年度
- *& --> P_MONTH 月份
- *& --> P_CAT
- *&---------------------------------------------------------------------*
- FORM frm_clear_bpc_data USING p_gt_input_entity LIKE gt_input_entity
- p_p_year LIKE p_year
- p_p_month LIKE p_month
- p_p_cat LIKE p_cat
- CHANGING
- p_t_bpc_data TYPE ANY TABLE .
- DATA: lt_axis_base TYPE ujo_t_query_dim, "每行是一个维度上的一组成员
- lt_axis TYPE ujo_t_query_dim, "每行是一个维度上的一组成员
- ls_axis_t TYPE ujo_t_members, "成员表
- lt_cv_base TYPE TABLE OF ujk_s_cv, "BPC Script Logic Current View
- lt_cv_final TYPE TABLE OF ujk_s_cv, "BPC Script Logic Current View
- lt_cv_pkg LIKE TABLE OF lt_cv_base,
- ls_cv LIKE LINE OF lt_cv_base,
- lr_bpc_data TYPE REF TO data.
- FIELD-SYMBOLS <ft_pkg_data> TYPE ANY TABLE.
- CREATE DATA lr_bpc_data LIKE p_t_bpc_data.
- ASSIGN lr_bpc_data->* TO <ft_pkg_data>.
- * 准备不变的条件
- CLEAR ls_cv.
- LOOP AT p_gt_input_entity INTO DATA(lv_entity).
- ls_cv-dimension = 'ENTITY'.
- APPEND lv_entity TO ls_cv-member.
- ENDLOOP.
- APPEND ls_cv TO lt_cv_base.
- * 准备不变的条件
- CLEAR ls_cv.
- ls_cv-dimension = 'CATEGORY'.
- APPEND s_veson-low TO ls_cv-member.
- APPEND ls_cv TO lt_cv_base.
- * 准备不变的条件
- CLEAR ls_cv.
- ls_cv-dimension = 'TIME'.
- APPEND s_erdat-low TO ls_cv-member.
- APPEND ls_cv TO lt_cv_base.
- * 准备不变的条件
- CLEAR ls_cv.
- ls_cv-dimension = 'AUDITTRAIL'.
- APPEND 'INPUTM' TO ls_cv-member.
- APPEND ls_cv TO lt_cv_base.
- * 准备不变的条件
- CLEAR ls_cv.
- ls_cv-dimension = 'SCOPE'.
- APPEND 'S_NONE' TO ls_cv-member.
- APPEND ls_cv TO lt_cv_base.
- * 准备变化的条件
- lt_cv_final = lt_cv_base.
- CLEAR ls_cv.
- ls_cv-dimension = 'CATEGORY'.
- APPEND p_p_cat TO ls_cv-member.
- APPEND ls_cv TO lt_cv_final.
- APPEND lt_cv_final TO lt_cv_pkg.
- "执行查询
- TRY.
- cl_ujk_model=>get_dim_list(
- EXPORTING
- i_appset_id = gco_appset_id
- i_appl_id = gco_appl_id
- i_with_measures = abap_false
- IMPORTING
- et_admin_dim_list = DATA(lt_dim_list)
- ).
- DATA: lt_range TYPE uj0_t_sel,
- ls_range LIKE LINE OF lt_range.
- DATA(lo_query) = cl_ujo_query_factory=>get_query_adapter(
- i_appset_id = gco_appset_id
- i_appl_id = gco_appl_id ).
- LOOP AT lt_cv_pkg INTO DATA(lt_cv).
- "转换查询条件
- CLEAR:ls_range, lt_range[].
- LOOP AT lt_cv INTO ls_cv.
- ls_range-sign = 'I'.
- ls_range-option = 'EQ'.
- ls_range-dimension = ls_cv-dimension.
- LOOP AT ls_cv-member INTO DATA(lv_member).
- ls_range-low = lv_member.
- APPEND ls_range TO lt_range.
- ENDLOOP.
- ENDLOOP.
- lo_query->run_rsdri_query(
- EXPORTING
- it_dim_name = lt_dim_list " BPC: Dimension List
- it_range = lt_range " BPC: Selection condition
- if_check_security = abap_true " BPC: Generic indicator
- IMPORTING
- et_data = <ft_pkg_data>
- ).
- INSERT LINES OF <ft_pkg_data> INTO TABLE p_t_bpc_data.
- SORT p_t_bpc_data.
- DELETE ADJACENT DUPLICATES FROM p_t_bpc_data.
- LOOP AT p_t_bpc_data ASSIGNING FIELD-SYMBOL(<fs_bpc_data>).
- ASSIGN COMPONENT 'SIGNEDDATA' OF STRUCTURE <fs_bpc_data> TO FIELD-SYMBOL(<fv_signeddata>).
- CHECK sy-subrc = 0.
- <fv_signeddata> = 0.
- ENDLOOP.
- ENDLOOP.
- CATCH cx_root INTO DATA(lr_exception).
- MESSAGE |查询需要覆盖的BPC数据时报错{ lr_exception->get_longtext( ) },请联系管理员| TYPE 'E'.
- ENDTRY.
- 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 中的数据的更多相关文章
- SSAS中CUBE行权限数据级权限控制
去年做了一个数据仓库的项目,其中涉及到了CUBE数据级权限的控制.在网上找这方面的资料,找到一个[BI] 通用数据级权限控制解决方案的实现(二):Cube中的角色设置与数据级权限控制.根据这个大牛的思 ...
- JAVA整合Redis使用redisTemplate清除库中的所有键值对数据
JAVA整合Redis使用redisTemplate清除库中的所有键值对数据,清除所有缓存数据 Set<String> keys = redisTemplate.keys("*& ...
- SAP CRM 通过调试观察CL_CRM_BOL_ENTITY中的数据
这个(BOL里面)最重要的类值得一看. BOL中的每条记录都会在CL_CRM_BOL_ENTIT中表示.至今,我们已经写过一些事件处理器,并且我们已经直接或间接的通过这个类工作.在业务场景中,我们也许 ...
- SAP SMARTFORMS-基于内存方式在report程序中传递数据到smartforms显示
一.准备工作 1.新建include程序 1> include程序名字:ZDD_INC_0104 2> ZDD_INC_0104 程序中的内容为 2.使用T-CODE :SE11新建两个 ...
- SAP BPC方案介绍
refer to http://sapper.blog.sohu.com/166039991.html SAP/BPC简介: 全面预算管理是联系公司战略目标与日常运营的重要纽带,它上到战略层面.下到执 ...
- SSAS中事实表中的数据如果因为一对多或多对多关系复制了多份,在维度上聚合的时候还是只算一份
SSAS事实表中的数据,有时候会因为一对多或多对多关系发生复制变成多份,如下图所示: 图1 我们可以从上面图片中看到,在这个例子中,有三个事实表Fact_People_Money(此表用字段Money ...
- WPF中的数据验证
数据验证 WPF的Binding使得数据能够在数据源和目标之间流通,在数据流通的中间,便能够对数据做一些处理. 数据转换和数据验证便是在数据从源到目标 or 从目标到源 的时候对数据的验证和转换. V ...
- C#-WinForm-ListView-表格式展示数据、如何将数据库中的数据展示到ListView中、如何对选中的项进行修改
在展示数据库中不知道数量的数据时怎么展示最好呢?--表格 ListView - 表格形式展示数据 ListView 常用属性 HeaderStyle - "详细信息"视图中列标头的 ...
- LINQ-to-SQL那点事~LINQ-to-SQL中的数据缓存与应对
回到目录 这个文章写的有点滞后了,呵呵,因为总想把之前不确定的东西确定了之后,再写这篇,之前的LINQ-to-SQL那点事,请点这里. LINQ-to-SQL中的数据缓存与应对 Linq-to-SQL ...
随机推荐
- MySQL 的 GRANT和REVOKE 命令
MySQL 的 GRANT和REVOKE 命令 GRANT - 授权 将指定 操作对象 的指定 操作权限 授予指定的 用户; 发出该 GRANT语句的可以是数据库管理员,也可以是该数据库对象的创建者; ...
- Linux获取本机公网IP,调整双节点主从服务的RPC调用逻辑
简单记录一次双节点的之间的服务调用叭 ~ 现有: 服务A的双节点A1.A2 服务B的双节点B1.B2 服务A 和服务B 通过 Netty 实现 RPC 通信,可能会导致比较玄学的问题.如图: 要做到 ...
- jmeter元件分析
jmeter元件分析 一.脚本通用性 1.性能测试脚本改动一下,加入断言等元件,就可以作为接口测试脚本来使用 2.但是接口测试的脚本不可以作为性能测试脚本来使用 3.原因:因为性能测试考虑更多的性能, ...
- ImageKnife组件,让小白也能轻松搞定图片开发
本期我们给大家带来的是开发者周黎生的分享,希望能给你的HarmonyOS开发之旅带来启发~ 图片是UI界面的重要元素之一, 图片加载速度及效果直接影响应用体验.ArkUI开发框架提供了丰富的图像处理能 ...
- 就是要让你搞懂Nginx,这篇就够了!
开源Linux 长按二维码加关注~ 作者:渐暖° 出处:blog.csdn.net/yujing1314/article/details/107000737 来源:公众号51CTO技术栈 Nginx ...
- 【翻译】ScyllaDB数据建模的最佳实践
文章翻译自Scylla官方文档:https://www.scylladb.com/2019/08/20/best-practices-for-data-modeling/ 转载请注明出处:https: ...
- p2p-tunnel 打洞内网穿透系列(三)TCP转发访问内网web服务
系列文章 p2p-tunnel 打洞内网穿透系列(一)客户端配置及打洞 p2p-tunnel 打洞内网穿透系列(二)TCP转发访问远程共享文件夹 p2p-tunnel 打洞内网穿透系列(三)TCP转发 ...
- 【java并发编程】ReentrantLock 可重入读写锁
目录 一.ReentrantLock可重入锁 二.ReentrantReadWriteLock读写锁 三.读锁之间不互斥 欢迎关注我的博客,更多精品知识合集 一.ReentrantLock可重入锁 可 ...
- linux篇-CentOS7搭建NTP服务器
1查看服务器.客户端操作系统版本 2查看服务器是否安装ntp 3如果没有安装 4安装完成后重新查看服务器是否安装ntp 5查看ntp服务器状态 6修改配置文件 注释 #server 0.centos. ...
- unity---光照基础
发射光源类型 光照参数介绍 让摄像头看到Flare 耀斑 改变影子