使用方法if_ujo_write_back->write_back可以将数据写回BPC模型。
将方法封装:
代码:
METHOD write_back_to_bpc_cube.
DATA: lo_ujo_wb TYPE REF TO if_ujo_write_back,
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,
lr_data TYPE REF TO data,
lt_message TYPE uj0_t_message,
l_log TYPE string,
l_measure TYPE uj_dim_member.
CALL METHOD cl_ujo_wb_factory=>create_write_back
RECEIVING
ro_write_back = lo_ujo_wb.
ls_work_status-module_id = uj00_c_mod_name_man.
ls_work_status-blockaction = 'OBEY'.
* LS_WORK_STATUS-BLOCKACTION = 'IGNORE'.
ls_audit-actcode = uju0_cs_act_code-logic_exe.
ls_wb_param = cl_ujo_wb_factory=>default_wb_param( ).
ls_wb_param-work_status = ls_work_status.
ls_wb_param-default_logic = abap_false.
ls_wb_param-update_audit = abap_true.
ls_wb_param-duplicate = abap_true.
ls_wb_param-mdata_check = abap_false.
ls_wb_param-sign_trans = abap_false.
ls_wb_param-execute_badi = abap_false.
ls_wb_param-bypass_security = abap_true. "不检查权限
* LS_WB_PARAM-BYPASS_LOCK = ABAP_TRUE. "不检查工作状态
ls_wb_param-measures_formula = l_measure.
ls_wb_param-audit_info = ls_audit.
ls_wb_param-no_timestamp = abap_true. "不更新TIMESTAMP,不影响control, monitor status
IF iv_write_zero = 'X'. "当有需求写入0金额的行项目时,修改suppress_zero默认值
ls_wb_param-suppress_zero = abap_false.
ENDIF.
CALL METHOD lo_ujo_wb->write_back
EXPORTING
i_appset_id = iv_appset_id
i_appl_id = iv_appl_id
is_wb_param = ls_wb_param
it_records = it_records
IMPORTING
es_wb_status = ls_wb_status
et_message = ev_message.
ev_type = 'S'.
IF ls_wb_status-nr_fail NE 0 . "说明有记录导入失败,其中有原因是工作状态被锁了
l_log = '回写数据失败!'.
ev_type = 'E'.
LOOP AT ev_message INTO DATA(ls_message).
l_log = l_log && ls_message-message.
ENDLOOP.
cl_ujk_logger=>log( i_object = l_log ).
* RAISE EXCEPTION TYPE cx_ujo_write_back.
ENDIF.
ENDMETHOD.