ALV_TREE(二:cl_gui_simple_tree…

树形展示
ALV_TREE(二:cl_gui_simple_tree)

首先创建屏幕,
画个容器,命名 TREE

DATA :
      wa_container_tree          TYPE        scrfname  VALUE  'TREE' ,       "*定制对象
      wa_custom_container_tree   TYPE  REF  TO cl_gui_custom_container ,     "*客户对象
      tree_grid                  TYPE  REF  TO cl_gui_alv_tree_simple ,


DATA : node_table    LIKE  TABLE  OF mtreesnode ,                             "NODE 节点表
      node_wa       TYPE mtreesnode .                                      "节点


"取完数,后显示form
FORM zform_show  .
   PERFORM zform_create_tree .      "创建树
   PERFORM zform_create_nodes .     "创建节点
   PERFORM zform_add_nodes .        "添加节点
ENDFORM .                     " ZFORM_SHOW


"1、创建tree object

FORM zform_create_tree .
*建立定制控制对象
   CREATE OBJECT wa_custom_container_tree
     EXPORTING
      container_name  = wa_container_tree .
*建立树对象
   CREATE OBJECT tree_grid2
   EXPORTING
* LIFETIME     =
  parent        = wa_custom_container_tree
* SHELLSYLE     =
  node_selection_mode  = cl_gui_simple_tree =>node_sel_mode_single
* HIDE_SELECTION  =
* NAME       =
  EXCEPTIONS
 lifetime_error       =  1
 cntl_system_error      =  2
 create_error        =  3
 failed           =  4
  OTHERS  =  6
   .
   IF sy -subrc <>  0 .
* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
*    WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
   ENDIF .
ENDFORM .                     "zform_create_tree


"2、创建节点
*&---------------------------------------------------------------------*
*       2.1、创建头节点
*----------------------------------------------------------------------*
FORM zform_create_head_node  USING u_head_node                          "头节点值
                                  u_text        .                       "节点文本
   CLEAR node_wa .
*节点关键字
  node_wa -node_key  = u_head_node .
*第一层
   CLEAR node_wa -relatkey .
   CLEAR node_wa -relatship .
*是文件夹
  node_wa -hidden  =  '' .
  node_wa -disabled  =  '' .
  node_wa -isfolder  =  'X' .
*不带ICON
   CLEAR node_wa -n_image .
   CLEAR node_wa -exp_image .
   CLEAR node_wa -expander .

  node_wa - text  = u_text .
   APPEND node_wa  TO node_table .

ENDFORM .                     "zform_create_head_node

*&---------------------------------------------------------------------*
*       2.2 建末节点(叶子节点)
*----------------------------------------------------------------------*
FORM zform_create_last_node  USING u_node_key                          "节点值
                                   u_relatkey                          "上层节点
                                   t_text      .                       "节点文本
  CLEAR node_wa.
  node_wa-node_key = u_node_key.
*上层关系
  node_wa-relatkey = u_relatkey.
  node_wa-relatship = cl_gui_simple_tree=>relat_last_child.
  node_wa-hidden = ''.
  node_wa-disabled = ''.
  node_wa-isfolder = space.                                            "非文件夹
  CLEAR node_wa-n_image.
  CLEAR node_wa-exp_image.
  CLEAR node_wa-expander.
  node_wa-text = t_text.
  APPEND node_wa TO node_table.
ENDFORM.                                                              "zform_create_last_node


*&---------------------------------------------------------------------*
*     2.3、创建中间节点(文件夹)
*----------------------------------------------------------------------*
FORM zform_create_folde_node USING u_node_key
                                   u_relatkey
                                   t_text      .
  CLEAR node_wa.
  node_wa-node_key = u_node_key.
*上层关系
  node_wa-relatkey = u_relatkey.
  node_wa-relatship = cl_gui_simple_tree=>relat_last_child.
  node_wa-hidden = ''.
  node_wa-disabled = ''.
  node_wa-isfolder = 'X'.
  CLEAR node_wa-n_image.
  CLEAR node_wa-exp_image.
  CLEAR node_wa-expander.
  node_wa-text = t_text.
  APPEND node_wa TO node_table.

ENDFORM.                    "zform_create_last_node

"根据数据结构,填充各节点数据
*&---------------------------------------------------------------------*
*&      Form  zform_create_nodes
*&---------------------------------------------------------------------*
*       text 创建节点内表
*----------------------------------------------------------------------*
FORM zform_create_nodes.

  DATA: l_wa_data LIKE LINE OF g_kemu_show.
  CLEAR l_wa_data.

  LOOP AT g_kemu_show INTO l_wa_data.
    IF l_wa_data-level_key = 1.        "等级标志1头节点,2中间节点,9叶子节点
      PERFORM zform_create_head_node
        USING l_wa_data-bjh_hkont
              l_wa_data-bjh_hkont.

    ELSEIF l_wa_data-level_key = 9.   "叶子节点
      PERFORM zform_create_last_node
        USING l_wa_data-bjh_hkont
              l_wa_data-bjh_hkont_prev
              l_wa_data-bjh_hkont.

    ELSE.
      PERFORM zform_create_folde_node  "中间节点(文件夹)
        USING l_wa_data-bjh_hkont
              l_wa_data-bjh_hkont_prev
              l_wa_data-bjh_hkont.
    ENDIF.
    CLEAR l_wa_data.
  ENDLOOP.

ENDFORM.                    "zform_create_nodes


*&---------------------------------------------------------------------*
*  3、最后添加节点到树
*----------------------------------------------------------------------*
FORM zform_add_nodes .
*按照节点内容添加节点
   CALL  METHOD tree_grid ->add_nodes
   EXPORTING
  table_structure_name   =  'MTREESNODE'   " MTREESNODE 此结构是固定的: node_table类型 mtreesnode  
  node_table             = node_table
* EXCEPTIONS
*  ERROR_IN_NODE_TABLE      = 1
*  FAILED            = 2
*  DP_ERROF           = 3
*  TABLE_STRUCTURE_NAME_NOT_FOUND = 4
*  OTHERS            = 5
   .
   IF sy -subrc <>  0 .
* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
*    WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
   ENDIF .
ENDFORM .                     "zform_add_nodes

转载于:https://www.cnblogs.com/senlinmu110/p/3802204.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值