SAP BPC开发:读取BPC模型数据

可以使用if_ujo_query->run_rsdri_query方法获取BPC模型的数据。

将方法进行封装,方法参数:

代码:

  METHOD read_bpc_cube.

    DATA : lo_appl     TYPE REF TO cl_uja_application,
           lt_appl_dim TYPE uja_t_appl_dim,
           ls_appl_dim LIKE LINE OF lt_appl_dim,
           lt_dim_name TYPE ujq_t_dim,
           ls_dim_name LIKE LINE OF lt_dim_name,
           lo_model    TYPE REF TO if_uj_model,
           lo_dataref  TYPE REF TO data,
           lo_query    TYPE REF TO if_ujo_query,
           lt_data     TYPE REF TO data,
           lt_message  TYPE uj0_t_message.

    FIELD-SYMBOLS: <lt_tx_data> TYPE STANDARD TABLE,
                   <ls_data>    TYPE any.

    CREATE OBJECT lo_appl
      EXPORTING
        i_appset_id      = iv_appset
        i_application_id = iv_appl_id.

    REFRESH lt_appl_dim.
    lo_appl->get_appl_dim(
      EXPORTING
        i_appl_id   = iv_appl_id
      IMPORTING
        et_appl_dim = lt_appl_dim ).   "DIMENSION TABLE

    REFRESH lt_dim_name.

**Populate dimension table 'lt_dim_name'.
    LOOP AT lt_appl_dim INTO ls_appl_dim.
      ls_dim_name = ls_appl_dim-dimension.
      APPEND ls_dim_name TO lt_dim_name.
      CLEAR ls_dim_name.
    ENDLOOP.

    ls_dim_name  = 'MEASURES'.
    APPEND ls_dim_name TO lt_dim_name.

    SORT lt_dim_name.

*---CREATE A REFERENCE STRUCTURE SIMILAR TO CT_DATA USING THE METHOD -----*'
    TRY.
        lo_model = cl_uj_model=>get_model( iv_appset ).
        lo_model->create_tx_data_ref(
        EXPORTING
        i_appl_name  = iv_appl_id
        i_type       = 'T'
        it_dim_name  = lt_dim_name
        if_tech_name = space
        IMPORTING
        er_data      = lo_dataref ).
      CATCH cx_uj_static_check.
    ENDTRY.

    ASSIGN lo_dataref->* TO <lt_tx_data>.
    CREATE DATA lt_data LIKE LINE OF <lt_tx_data>.
    ASSIGN lt_data->* TO <ls_data>.

** 取数 **
    TRY.
        lo_query = cl_ujo_query_factory=>get_query_adapter(
         i_appset_id = iv_appset
         i_appl_id   = iv_appl_id
         ).
** RUN QUERY TO POPULATE CT_DATA BASED ON DIMENSIONS , SELECTION CRITERIA **.

        lo_query->run_rsdri_query(
        EXPORTING
         it_dim_name       = lt_dim_name " BPC: Dimension List
         it_range          = it_sel     " BPC: Selection condition
         if_check_security = abap_false   " BPC: Generic indicator

        IMPORTING
         et_data           = <lt_tx_data>
         et_message        = lt_message    " BPC: Messages
         ).

      CATCH cx_ujo_read.  " Exception of common read

    ENDTRY.

** 定义匹配结构
    data:lo_data type REF TO data.

    create data lo_data like LINE OF  et_data.
    ASSIGN lo_data->* to FIELD-SYMBOL(<fs_line>).

    LOOP AT <lt_tx_data> INTO <ls_data> .
      MOVE-CORRESPONDING <ls_data> to <fs_line>.
      APPEND <fs_line> TO et_data .
    ENDLOOP .
  ENDMETHOD.

 IT_SEL结构:

只需要赋值:

      dimension = 维度名称.
      sign = 'I'.
      option = 'EQ'.
      low = 要限制的维度值.

 

调用方法:

    CALL METHOD ZCL_BPC_TOOL=>READ_BPC_CUBE
      EXPORTING
        IV_APPSET  = 环境ID
        IV_APPL_ID = 模型ID
        IT_SEL     = 限制条件内表
      IMPORTING
        ET_DATA    = 返回结果内表.

 

 

  • 3
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值