首页 > 其他 > 详细

CTABLE HIERARCHICAL(CTABLE 显示层级)

时间:2021-01-25 18:55:05      阅读:45      评论:0      收藏:0      [点我收藏+]

创建组建步骤省略

..

创建节点

技术分享图片

参考类型

 技术分享图片

CARRID                       NOD_SPFLI   0 Type   SPFLI-CARRID

CONNID                        NOD_SPFLI   0 Type   SPFLI-CONNID

COUNTRYFR                NOD_SPFLI  0 Type  SPFLI-COUNTRYFR

CITYFROM                NOD_SPFLI   0 Type  SPFLI-CITYFROM

TEXT                        NOD_SPFLI  0 Type   STRING

HIERACHICAL_STATENOD_SPFLI   0 Type   WDUI_C_TABLE_HIERACHICAL_STATE

LEVEL                        NOD_SPFLI   0 Type    I          

UI界面:CTABLE

技术分享图片

UI界面:第一列

技术分享图片

技术分享图片

 技术分享图片

 技术分享图片

 UI界面:第二列

技术分享图片

 技术分享图片

  UI界面:第三列

技术分享图片

 技术分享图片

初始化代码

技术分享图片

 技术分享图片

CARRID      Importing        S_CARR_ID

EXPAND     Importing        WDY_BOOLEAN

INIT            Importing        WDY_BOOLEAN

METHOD m_set_data .
  DATA:lo_nd_nod_spfli       TYPE REF TO if_wd_context_node,
       lt_carrid             TYPE wd_this->elements_nod_spfli,
       ls_carrid             LIKE LINE OF lt_carrid,
       lt_spfli              TYPE wd_this->elements_nod_spfli,
       ls_spfli              LIKE LINE OF lt_spfli,
       lt_nod_spfli_temp     TYPE wd_this->elements_nod_spfli,
       ls_nod_spfli_temp     LIKE LINE OF lt_nod_spfli_temp,
       lt_nod_spfli          TYPE wd_this->elements_nod_spfli,
       ls_nod_spfli          LIKE LINE OF lt_nod_spfli.

*- 获取节点数据 -*
  wd_context->get_child_node( name = NOD_SPFLI )->get_static_attributes_table(
                   IMPORTING table = lt_nod_spfli_temp ).

  SORT lt_nod_spfli_temp BY text.
*  DELETE ADJACENT DUPLICATES FROM lt_nod_spfli_temp COMPARING text.
  DELETE lt_nod_spfli_temp WHERE carrid NE ‘‘.


*- 初始化数据 -*
  CLEAR ls_spfli.
  ls_spfli-carrid    = AA.
  ls_spfli-connid    = 1001.
  ls_spfli-countryfr = 中国.
  ls_spfli-cityfrom  = 深圳.
  APPEND ls_spfli TO lt_spfli.
  CLEAR ls_spfli.
  ls_spfli-carrid    = AA.
  ls_spfli-connid    = 1002.
  ls_spfli-countryfr = 中国.
  ls_spfli-cityfrom  = 北京.
  APPEND ls_spfli TO lt_spfli.
  CLEAR ls_spfli.
  ls_spfli-carrid    = AA.
  ls_spfli-connid    = 1003.
  ls_spfli-countryfr = 中国.
  ls_spfli-cityfrom  = 上海.
  APPEND ls_spfli TO lt_spfli.
  CLEAR ls_spfli.
  ls_spfli-carrid    = AB.
  ls_spfli-connid    = 2001.
  ls_spfli-countryfr = 英国.
  ls_spfli-cityfrom  = 伦敦.
  APPEND ls_spfli TO lt_spfli.
  CLEAR ls_spfli.
  ls_spfli-carrid    = AB.
  ls_spfli-connid    = 2002.
  ls_spfli-countryfr = 英国.
  ls_spfli-cityfrom  = 曼切斯特.
  APPEND ls_spfli TO lt_spfli.
  CLEAR ls_spfli.
  ls_spfli-carrid    = AC.
  ls_spfli-connid    = 3001.
  ls_spfli-countryfr = 美国.
  ls_spfli-cityfrom  = 纽约.
  APPEND ls_spfli TO lt_spfli.
  CLEAR ls_spfli.
  ls_spfli-carrid    = AC.
  ls_spfli-connid    = 3002.
  ls_spfli-countryfr = 英国.
  ls_spfli-cityfrom  = 洛杉矶.
  APPEND ls_spfli TO lt_spfli.


*- 设置层级 -*
*  01    none
*  02    indent
*  03    expanded
*  04    collapsed
*  05    collapsedPlus
*  06    expandedMinus
*  07    expandedTop
*  08    marktotals
*  09    leaf

  SORT lt_spfli BY carrid connid.
  lt_carrid = lt_spfli.
  DELETE ADJACENT DUPLICATES FROM lt_carrid COMPARING carrid.


  LOOP AT lt_carrid INTO ls_carrid.
    "层级1
    CLEAR ls_nod_spfli.
    IF init EQ X.
      ls_nod_spfli-hierachical_state = cl_wd_c_tbl_hierarchical_cell=>e_hierachical_state-expanded.
    ELSE.
      READ TABLE lt_nod_spfli_temp INTO ls_nod_spfli_temp
                               WITH KEY text = ls_carrid-carrid
                                        BINARY SEARCH.
      IF sy-subrc EQ 0.
        ls_nod_spfli-hierachical_state = ls_nod_spfli_temp-hierachical_state.
      ENDIF.
    ENDIF.

    IF carrid EQ ls_carrid-carrid.
      IF expand EQ X.
        ls_nod_spfli-hierachical_state = cl_wd_c_tbl_hierarchical_cell=>e_hierachical_state-expanded.
      ELSE.
        ls_nod_spfli-hierachical_state = cl_wd_c_tbl_hierarchical_cell=>e_hierachical_state-collapsed.
      ENDIF.
    ENDIF.


    ls_nod_spfli-text  = ls_carrid-carrid.
    ls_nod_spfli-level = 0.
    APPEND ls_nod_spfli TO lt_nod_spfli.


    IF ls_nod_spfli-hierachical_state EQ cl_wd_c_tbl_hierarchical_cell=>e_hierachical_state-collapsed.
      CONTINUE.
    ENDIF.


    "层级2
    LOOP AT lt_spfli INTO ls_spfli WHERE carrid EQ ls_carrid-carrid.
      CLEAR ls_nod_spfli.
      MOVE-CORRESPONDING ls_spfli TO ls_nod_spfli.
      ls_nod_spfli-text              = ls_spfli-connid.
      ls_nod_spfli-level             = 1.
      ls_nod_spfli-hierachical_state = cl_wd_c_tbl_hierarchical_cell=>e_hierachical_state-leaf.
      APPEND ls_nod_spfli TO lt_nod_spfli.
    ENDLOOP.
  ENDLOOP.


*- 绑定节点数据 -*
  SORT lt_spfli BY carrid connid.

  wd_context->get_child_node( name = NOD_SPFLI )->bind_table(
                         new_items = lt_nod_spfli
              set_initial_elements = abap_true ).

ENDMETHOD.

触发折叠代码

技术分享图片

 技术分享图片

 CONTEXT_ELEMENT    IF_WD_CONTEXT_ELEMENT

EXPAND                     WDY_BOOLEAN

ID                                STRING

METHOD onactionon_status_action .
  DATA:lv_carrid TYPE s_carr_id.

  " Report message
  context_element->get_attribute( EXPORTING name  = `TEXT`
                                  IMPORTING value = lv_carrid ).

  wd_this->m_set_data(
    EXPORTING
      carrid = lv_carrid
      expand = expand ).

ENDMETHOD.

 

测试结果

技术分享图片

技术分享图片

CTABLE HIERARCHICAL(CTABLE 显示层级)

原文:https://www.cnblogs.com/SAPxiaox/p/14326718.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!