BPC开发:写入备注

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.

 

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值