BPC模型中只能存数值,存储备注文本的信息每个模型都对应有一张备注表来存储。使用程序UJ0_GET_GEN_TABNAME可以知道每个模型对应的备注表名。
备注表的更新是增量的,如相同维度第一次存入一个文本AAAA,第二次存入文本BBBB,那么AAAA,BBBB都会在备注表中存在。系统读取的时候会根据时间戳字段DATEWRITTEN读取最新的一条数据。
备注相关操作主要通过cl_ujc_cmtmanager来实现
方法封装:
方法实现:
METHOD add_cmts_fast.
DATA:
lo_cmt TYPE REF TO cl_ujc_cmtmanager,
ls_message TYPE uj0_s_message,
lt_msg TYPE uj0_t_message.
DATA lv_user_id TYPE uj_user_id.
DATA lv_uj0_s_user TYPE uj0_s_user.
DATA es_message TYPE uj0_s_message.
lv_uj0_s_user-user_id = sy-uname.
TRY.
CALL METHOD cl_uj_context=>set_cur_context
EXPORTING
i_appset_id = iv_appset_id
is_user = lv_uj0_s_user
i_appl_id = iv_appl_id.
CATCH cx_uj_obj_not_found .
ENDTRY.
TRY.
CREATE OBJECT lo_cmt
EXPORTING
i_appset_id = iv_appset_id
i_appl_id = iv_appl_id
if_disable_security = abap_false.
CATCH cx_ujc_exception .
ENDTRY.
TRY.
* CALL METHOD lo_cmt->add_cmts_fast
CALL METHOD lo_cmt->add_cmt
EXPORTING
it_compact_cmtbl = it_cmt
* it_all_dim_mbr = it_dim_mbr
IMPORTING
ef_inserted = ev_inserted
et_error_cmtbl = et_error_cmt
CHANGING
ct_message = et_message.
CATCH cx_ujc_exception .
ENDTRY.
ENDMETHOD.
调用:
DEFINE add_dim_list.
CLEAR ls_dim_list.
ls_dim_list-dim_name = &1.
ls_dim_list-dim_value = &2.
APPEND ls_dim_list TO ls_cmt-dim_list .
END-OF-DEFINITION.
"写入备注
DATA:lv_error TYPE c.
DATA:lv_msg TYPE char200.
CLEAR:lt_cmt,lt_dim_mbr,lv_inserted.
LOOP AT lt_db INTO ls_db.
CLEAR lv_error.
"check
CLEAR ls_log.
MOVE-CORRESPONDING ls_db TO ls_log.
ls_log-zdatum = sy-datum.
ls_log-zuzeit = sy-uzeit.
ls_log-zuser = sy-uname.
IF ls_log-p_account IS INITIAL OR
ls_log-p_category IS INITIAL OR
ls_log-p_entity IS INITIAL OR
ls_log-p_item IS INITIAL OR
ls_log-p_line IS INITIAL OR
ls_log-p_misc IS INITIAL OR
ls_log-p_other1 IS INITIAL OR
ls_log-p_project IS INITIAL OR
ls_log-p_rptcurrency IS INITIAL.
lv_error = abap_true.
ls_log-type = 'E'.
ls_log-msg = '存在为空的维度.'.
ENDIF.
APPEND ls_log TO lt_log."后续更新校验通过的type msg
IF lv_error = abap_true.
CONTINUE.
ENDIF.
CLEAR ls_cmt.
add_dim_list 'P_ACCOUNT' ls_db-p_account .
add_dim_list 'P_CATEGORY' ls_db-p_category .
add_dim_list 'P_CLASS' ls_db-p_class .
add_dim_list 'P_ENTITY' ls_db-p_entity .
add_dim_list 'P_ITEM' ls_db-p_item .
add_dim_list 'P_LINE' ls_db-p_line .
add_dim_list 'P_MISC' ls_db-p_misc .
add_dim_list 'P_OTHER1' ls_db-p_other1 .
add_dim_list 'P_PROJECT' ls_db-p_project .
add_dim_list 'P_RPTCURRENCY' ls_db-p_rptcurrency .
add_dim_list 'P_TIME' ls_db-p_time .
ls_cmt-user_id = sy-uname .
ls_cmt-keyword = 'CELL ENTRY' .
ls_cmt-priority = 3 .
ls_cmt-measures = 'PERIODIC' .
ls_cmt-scomment = ls_db-signdata."signdata存的是文本
APPEND ls_cmt TO lt_cmt .
ENDLOOP.
FREE lt_db.
CALL METHOD zcl_bpc_tool=>add_cmts_fast
EXPORTING
iv_appset_id = i_appset_id
iv_appl_id = i_appl_id
it_cmt = lt_cmt
it_dim_mbr = lt_dim_mbr
IMPORTING
et_message = DATA(lt_message)
et_error_cmt = DATA(lt_error_cmt)
ev_inserted = lv_inserted.