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 ...
随机推荐
- ajax - xhr level2新特性 json等众多内容
1. 今天的内容其实挺多的,我们慢慢来说.首先第一个是xhr的基本使用,什么是xhr? XMLHTTPRequest是浏览器提供的js对象,可以请求服务器上的数据资源,包括我们前面一直用的jq里面的三 ...
- Java的源码执行(建议结合Javase语法学习来加深印象)
一.源码执行时的先后顺序: 父类的静态属性和静态块(按照声明顺序) 本类的静态属性和静态块(按照声明顺序) main方法 父类的成员属性和成员块(按照声明顺序) 父类构造器 本类成员属性和块(按照声明 ...
- hashMap、ConcurrentHashMap、hashTable、TreeMap、LinkedHashMap用法区别详解
Java集合中设计了一个接口Java.util.Map,它实现类中hashMap.hashTable.TreeMap.ConcurrentHashMap.LinkedHashMap. Map类型的集合 ...
- 完爆Docker!推荐你看下这个....
现如今,互联网行业的每个人都知道数据的价值,很多人也为此学了一堆的数据分析工具,但面对问题,还是不知道如何去分析. 我们在奔向升职加薪的路上,总会遇到这些问题: 面对数据问题,没有思路,怎么办? 面对 ...
- 全网显示 IP 归属地,这背后的技术你知道吗?
为了进一步规范国内的网络舆论,国家规定了各互联网平台都需要显示 IP 归属地信息.微博.抖音.公众号等多个平台纷纷上线了 IP 归属地功能,这标志着国内言论的进一步规范化.但互联网平台商们是怎么通过 ...
- Python学习4(字典的内存分布)
1.字典:是python数据类型之一,字典通过花括号来包含数据项,字典的每个元素由2个部分组成,键:值,字典是根据键来找对应的值. data = {"name": "Et ...
- Erdos-Renyi随机图的生成方式及其特性
1 随机图生成简介 1.1 \(G_{np}\)和\(G_{nm}\) 以下是我学习<CS224W:Machine Learning With Graphs>[1]中随机图生成部分的笔记, ...
- nginx反向代理获取用户真实ip
nginx做反向代理时,默认的配置后端获取到的ip都是来自于nginx,如何转发用户的真实ip到后端程序呢?如是是java后端,用request.getRemoteAddr();获取到的是nginx的 ...
- 113_Power Pivot 销售订单之重复购买率及购买间隔天数相关
博客:www.jiaopengzi.com 焦棚子的文章目录 请点击下载附件 1.背景 在论坛中看到朋友在提复购率(重复购买率)等相关问题,今天把结果贴出来. 问题原贴:计算订单中的老顾客复购率 感谢 ...
- 自动化测试报告(allure/html)
pytest有两种生成测试报告的方法(html和allure),今天就给大家一一介绍下 html 一.pytest-html基本语法 1.安装:pip install pytest-html 2.查看 ...