1、需求:
2、Context
3、Layout
4、初始化界面
METHOD wddoinit .
wd_this->init_view( ).
ENDMETHOD.
METHOD init_view .
TYPES: BEGIN OF s_tier2,
key2 TYPE char30,
text2 TYPE char50,
tier TYPE char1,
END OF s_tier2.
TYPES: t_tier2 TYPE TABLE OF s_tier2.
DATA: ls_tier2 TYPE s_tier2.
DATA: lt_tier2 TYPE t_tier2.
DATA: BEGIN OF ls_tier1,
key1 TYPE char30,
text1 TYPE char50,
tier TYPE char1,
tier2 TYPE t_tier2,
END OF ls_tier1.
DATA: lt_tier1 LIKE TABLE OF ls_tier1.
DATA lo_nd_tier_m1 TYPE REF TO if_wd_context_node.
DATA lo_nd_tier_rec TYPE REF TO if_wd_context_node.
DATA lo_el_tier_m1 TYPE REF TO if_wd_context_element.
DATA ls_tier_m1 TYPE wd_this->element_tier_m1.
CLEAR ls_tier1.
ls_tier1-tier = '1'.
ls_tier1-key1 = 'K1'.
ls_tier1-text1 = 'K1-测试'.
ls_tier2-tier = '2'.
ls_tier2-key2 = 'K1-K1'.
ls_tier2-text2 = 'K1-K1-测试'.
APPEND ls_tier2 TO ls_tier1-tier2.
ls_tier2-tier = '2'.
ls_tier2-key2 = 'K1-K2'.
ls_tier2-text2 = 'K1-K2-测试'.
APPEND ls_tier2 TO ls_tier1-tier2.
ls_tier2-tier = '2'.
ls_tier2-key2 = 'K1-K3'.
ls_tier2-text2 = 'K1-K3-测试'.
APPEND ls_tier2 TO ls_tier1-tier2.
APPEND ls_tier1 TO lt_tier1.
CLEAR ls_tier1.
ls_tier1-tier = '1'.
ls_tier1-key1 = 'K2'.
ls_tier1-text1 = 'K2-测试'.
ls_tier2-tier = '2'.
ls_tier2-key2 = 'K2-K1'.
ls_tier2-text2 = 'K2-K1-测试'.
APPEND ls_tier2 TO ls_tier1-tier2.
ls_tier2-tier = '2'.
ls_tier2-key2 = 'K2-K2'.
ls_tier2-text2 = 'K2-K2-测试'.
APPEND ls_tier2 TO ls_tier1-tier2.
APPEND ls_tier1 TO lt_tier1.
* navigate from <CONTEXT> to <TIER_M1> via lead selection
lo_nd_tier_m1 = wd_context->get_child_node( name = wd_this->wdctx_tier_m1 ).
LOOP AT lt_tier1 INTO ls_tier1.
" 第一层
ls_tier_m1-key = ls_tier1-key1.
ls_tier_m1-text = ls_tier1-text1.
ls_tier_m1-tier = ls_tier1-tier.
lo_el_tier_m1 = lo_nd_tier_m1->bind_structure( new_item = ls_tier_m1
set_initial_elements = abap_false ).
lo_nd_tier_rec = lo_el_tier_m1->get_child_node( 'TIER_REC' ).
LOOP AT ls_tier1-tier2 INTO ls_tier2.
" 第二层
ls_tier_m1-key = ls_tier2-key2.
ls_tier_m1-text = ls_tier2-text2.
ls_tier_m1-tier = ls_tier2-tier.
lo_nd_tier_rec->bind_structure( new_item = ls_tier_m1
set_initial_elements = abap_false ).
CLEAR ls_tier_m1.
ENDLOOP.
CLEAR ls_tier_m1.
ENDLOOP.
ENDMETHOD.
5、事件
METHOD onactionon_select .
DATA lo_el_context TYPE REF TO if_wd_context_element.
DATA lo_nd_tier_m1 TYPE REF TO if_wd_context_node.
DATA lo_nd_tier_rec TYPE REF TO if_wd_context_node.
DATA lo_el_tier_m1 TYPE REF TO if_wd_context_element.
DATA ls_tier_m1 TYPE wd_this->element_tier_m1.
DATA lv_view_text TYPE wd_this->element_context-view_text.
CLEAR ls_tier_m1.
context_element->get_static_attributes(
IMPORTING
static_attributes = ls_tier_m1 ).
IF ls_tier_m1-tier = '1'. " 选择第一层
lo_nd_tier_m1 = wd_context->get_child_node( name = wd_this->wdctx_tier_m1 ).
lo_nd_tier_m1->set_lead_selection( context_element ).
ELSEIF ls_tier_m1-tier = '2'. " 选择第二层
lo_nd_tier_m1 = wd_context->get_child_node( name = wd_this->wdctx_tier_m1 ).
lo_nd_tier_rec = lo_nd_tier_m1->get_child_node( 'TIER_REC' ).
lo_nd_tier_rec->set_lead_selection( context_element ).
ENDIF.
CONCATENATE ls_tier_m1-key ':' ls_tier_m1-text INTO lv_view_text.
lo_el_context = wd_context->get_element( ).
lo_el_context->set_attribute(
name = `VIEW_TEXT`
value = lv_view_text ).
ENDMETHOD.
注:如有疏漏之处,还请不吝赐教!