WDA-HorizontalContextualPanel

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.

注:如有疏漏之处,还请不吝赐教! 

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值