SAP BPC开发:ABAP取成员的叶节点和父节点

1.定义一个P_MTYPE的维度,在Hiearchy H1下面建立如下层级结构:

2.获取TESTA下面的所有节点可以用if_uja_hier,cl_uja_dim来得到。

方法一:

DATA: lo_hier TYPE REF TO if_uja_hier,
      lo_dim  TYPE REF TO cl_uja_dim.
DATA:et_member TYPE  uja_t_dim_member,
     ls_member LIKE LINE OF et_member.

DATA:i_appset_id TYPE uj_appset_id,
     i_dimension TYPE uj_dim_name.
DATA:lv_parent TYPE char32.
i_appset_id = 'CY_PLANNING'."环境
i_dimension = 'P_MTYPE'."维度
lv_parent = 'TESTA'.

TRY.
    CREATE OBJECT lo_dim
      EXPORTING
        i_appset_id = i_appset_id   "PROVIDE APPSET NAME
        i_dimension = i_dimension.    " PROVIDE DIMENSION NAME
  CATCH cx_uja_admin_error.
ENDTRY.

TRY  .
    lo_hier = lo_dim->get_hier_ref( 'PARENTH1' ).
  CATCH cx_uja_admin_error.
ENDTRY.
CHECK lo_hier IS NOT INITIAL.

CLEAR :et_member[],ls_member.
CALL METHOD lo_hier->get_children
  EXPORTING
    i_member    = lv_parent
    i_level     = 99
    if_self     = abap_true
*   if_parent_after  = abap_true
*   if_only_base_mbr = abap_true
*   if_down2level    = if_down2level
  IMPORTING
    et_mbr_name = et_member.

LOOP AT et_member INTO ls_member.
  WRITE / ls_member.
ENDLOOP.

运行结果:

方法二:


    DATA: lo_model    TYPE REF TO if_uj_model,
          lo_dim_data TYPE REF TO if_uja_dim_data.

    DATA: lt_member   TYPE uja_t_dim_member.
    DATA: ls_sel      TYPE uj0_s_sel.

    lo_model    = cl_uj_model=>get_model( gc_appset_id ).
    lo_dim_data = lo_model->get_dim_data( i_dim_name  = iv_dim_name ).

    TRY.
        CALL METHOD lo_dim_data->get_children_mbr
          EXPORTING
            i_parent_mbr     = iv_parent_mbr
            i_level          = -99
            if_only_base_mbr = abap_true
          IMPORTING
            et_member        = lt_member.
        IF ct_member IS REQUESTED.
          CLEAR ct_member.
          ct_member = lt_member.
        ENDIF.
      CATCH cx_uja_admin_error .
        RETURN.
    ENDTRY.

3.关于一些参数:

IF_SELF 可以设置是否返回父节本身。

IF_ONLY_BASE_MBR 可以设置是否仅返回叶节点,在本例就是TESTC1,TESTC2,TESTC3.

4.取父节点可以用GET_PARENTS方法。

 

  • 1
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值