建立有數據表接口的Tree Control對象

*&---------------------------------------------------------------------*
*& Report YTEST00A
*&---------------------------------------------------------------------*
*&Violin 2021/4/29
*&---------------------------------------------------------------------*
REPORT ytest00a.

*第9章 Tree Control的使用---------------------------------------------------------------------*
*9.2建立有數據表接口的Tree Control對象
**功能碼返回值
DATA: ok_code TYPE sy-ucomm,
      save_ok TYPE sy-ucomm.

*定制對象
DATA: wa_container        TYPE scrfname VALUE 'TREE',

*客戶對象
      wa_custom_container TYPE REF TO cl_gui_custom_container,
      wa_tree             TYPE REF TO cl_gui_simple_tree.
*NODE節點表
DATA: node_table LIKE TABLE OF mtreesnode,
*節點
      node1      TYPE mtreesnode.

DATA wa_spfli TYPE TABLE OF spfli WITH HEADER LINE.

START-OF-SELECTION.
  SELECT * INTO TABLE wa_spfli FROM spfli
      ORDER BY countryfr carrid connid ASCENDING.

SET SCREEN 591.

MODULE status_0100 OUTPUT.

  IF wa_custom_container IS INITIAL.
    PERFORM create_tree.
  ENDIF.

ENDMODULE.


MODULE user_command_0100 INPUT.

  save_ok = ok_code.
  CLEAR ok_code.
  CASE save_ok.
    WHEN 'EXIT'.
*   LEAVE PROGRAM.
      LEAVE TO SCREEN 0.
  ENDCASE.

ENDMODULE.

*創建樹及子節點
FORM create_tree.
*  建立定制控制對象
  CREATE OBJECT wa_custom_container
    EXPORTING
*     parent                      =
      container_name              = wa_container
*     style                       =
*     lifetime                    = lifetime_default
*     repid                       =
*     dynnr                       =
*     no_autodef_progid_dynnr     =
    EXCEPTIONS
      cntl_error                  = 1
      cntl_system_error           = 2
      create_error                = 3
      lifetime_error              = 4
      lifetime_dynpro_dynpro_link = 5
      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.

*建立樹對象
  CREATE OBJECT wa_tree
    EXPORTING
*     lifetime                    =
      parent                      = wa_custom_container
*     shellstyle                  =
      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
      illegal_node_selection_mode = 5
      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.

  DATA: countryfr LIKE spfli-countryfr,
        carrid    LIKE spfli-carrid.

  DATA: str1(255).
  LOOP AT wa_spfli.
    IF countryfr NE wa_spfli-countryfr.
      CLEAR node1.
      node1-node_key = wa_spfli-countryfr.
*第一層
      CLEAR node1-relatkey.
      CLEAR node1-relatship.
*是文件夾
      node1-hidden = ''.
      node1-disabled =''.
      node1-isfolder = 'X'.
*不帶ICON
      CLEAR node1-n_image.
      CLEAR node1-exp_image.
      CLEAR node1-expander.

      node1-text = wa_spfli-countryfr.
      APPEND node1 TO node_table.
    ENDIF.

    IF ( countryfr NE wa_spfli-countryfr ) OR ( carrid <> wa_spfli-carrid ).
      CLEAR node1.
      CONCATENATE wa_spfli-countryfr wa_spfli-carrid INTO node1-node_key.

*  上層關係
      node1-relatkey = wa_spfli-countryfr.
      node1-relatship = cl_gui_simple_tree=>relat_last_child.
      node1-hidden = ''.
      node1-disabled = ''.
      node1-isfolder ='X'.
      clear node1-n_image.
      clear node1-exp_image.
      clear node1-expander.

*  節點顯示CARRID
      node1-text = wa_spfli-carrid.
      append node1 to node_table.
    ENDIF.

    countryfr = wa_spfli-countryfr.
    carrid = wa_spfli-carrid.
    clear node1.
    concatenate wa_spfli-countryfr wa_spfli-carrid wa_spfli-connid into node1-node_key.
    concatenate wa_spfli-countryfr wa_spfli-carrid into str1.
    node1-relatkey = str1.
    node1-relatship = cl_gui_simple_tree=>relat_last_child.
    node1-hidden = ''.
    node1-disabled = ''.
    node1-isfolder = 'X'.
    node1-n_image = '@5B@'.
    node1-exp_image = '@5B@'.
    clear node1-expander.
    concatenate wa_spfli-carrid ':' wa_spfli-cityfrom into str1.
    node1-text = str1.
    append node1 to node_table.

  ENDLOOP.

*按照節點內容添加節點
  CALL METHOD WA_TREE->add_nodes
    EXPORTING
      table_structure_name           = 'MTREESNODE'
      node_table                     = NODE_TABLE
    EXCEPTIONS
      error_in_node_table            = 1
      failed                         = 2
      dp_error                       = 3
      table_structure_name_not_found = 4
      others                         = 5
          .
  IF sy-subrc <> 0.
*   Implement suitable error handling here
  ENDIF.


ENDFORM.

創建引用對象、方法:

 

界面設置:

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值