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方法。