Sap Tree Control
来源:互联网 发布:mac 隐藏文件夹显示 编辑:程序博客网 时间:2024/04/30 14:24
*//1,屏幕中建立container,用以存储cl_gui_custom_container
*//2.建立容器对象cl_gui_custom_container,需要1中屏幕建立的container
*//3.创建树对象cl_gui_simple_tree,需要3中的容器对象
*//4.建立节点结构mtreesnode,并根据节点结构建立节点表,通过树对象方法add_nodes将建立好的节点表放入树对象中
*//5.定义对象树的事件类型放入cntl_simple_event结构中,再将对应的事件结构放入事件表cntl_simple_events中。
*//6.调用树对象的方法set_registered_events,设置树对象的相应事件
*//7.创建事件处理函数,处理节点树的事件,如node_double_click事件
*//8.注册事件 SET HANDLER
*//树对象常用方法:get_selected_node(获取当前节点),delete_node(删除节点),add_nodes(添加节点),node_set_text(修改节点),expand_node(设置树默认展开)
*//树对象常用事件: FOR EVENT node_double_click OF cl_gui_simple_tree IMPORTING node_key. 双击事件
*// FOR EVENT node_context_menu_request OF cl_gui_simple_tree IMPORTING node_key menu. 右键事件,通过menu的add_function来添加右键菜单*// FOR EVENT node_context_menu_select OF cl_gui_simple_tree IMPORTING node_key fcode. 选择按钮事件,获取右键功能键和当前节点
*//事件注册前需调用set_ctx_menu_select_event_appl,然后调用set_registered_events
REPORT ytest001.
DATA: save_ok TYPE sy- ucomm,
ok_code TYPE sy-ucomm .
DATA: text01 (18) TYPE c.
DATA: wa_container TYPE scrfname VALUE 'C_TEXTEDIT',
wa_custom_container TYPE REF TO cl_gui_custom_container,
wa_tree TYPE REF TO cl_gui_simple_tree.
DATA: node_table LIKE TABLE OF mtreesnode, "//TREE内表
anode_table LIKE TABLE OF mtreesnode,
node1 TYPE mtreesnode. "//TREE工作区
DATA: node2 TYPE mtreesnode.
DATA: wa_spfli TYPE TABLE OF spfli.
DATA: nodekey (200) VALUE 'NODE',
nodetext( 200) VALUE 'NONE',
nodekeyold( 200) VALUE 'NONE',
renew( 200).
DATA: getkey (200).
DATA: menustr (10) VALUE ''.
CLASS lcl_application DEFINITION DEFERRED.
*----------------------------------------------------------------------*
* CLASS LCL_APPLICATION DEFINITION
*----------------------------------------------------------------------*
*
*----------------------------------------------------------------------*
CLASS lcl_application DEFINITION .
PUBLIC SECTION.
METHODS : handle_node_double_click
FOR EVENT node_double_click OF cl_gui_simple_tree IMPORTING node_key.
METHODS :handle_node_context_menu_req
FOR EVENT node_context_menu_request OF cl_gui_simple_tree IMPORTING node_key menu.
METHODS : handle_node_context_menu_sel
FOR EVENT node_context_menu_select OF cl_gui_simple_tree IMPORTING node_key fcode.
ENDCLASS. "LCL_APPLICATION DEFINITION
*----------------------------------------------------------------------*
* CLASS lcl_application IMPLEMENTATION
*----------------------------------------------------------------------*
*
*----------------------------------------------------------------------*
CLASS lcl_application IMPLEMENTATION .
METHOD handle_node_double_click.
MESSAGE i208(00 ) WITH 'DOUBLE' .
nodekey = node_key.
READ TABLE node_table WITH KEY node_key = node_key INTO node1.
nodetext = node1-text .
ENDMETHOD. "handle_node_double_click
METHOD handle_node_context_menu_req. "//右键事件处理方法
CALL METHOD menu->add_function
EXPORTING
text = '增加本级节点'
fcode = 'CODE1'.
CALL METHOD menu->add_function
EXPORTING
text = '增加子节点'
fcode = 'CODE2'.
CALL METHOD menu->add_function
EXPORTING
text = '修改当前节点'
fcode = 'CODE3'.
CALL METHOD menu->add_function
EXPORTING
text = '删除当前节点'
fcode = 'CODE4'.
ENDMETHOD. "handle_node_context_menu_req
METHOD handle_node_context_menu_sel. "//选择事件处理方法
DATA : str1 TYPE tv_nodekey.
CALL METHOD wa_tree->get_selected_node
IMPORTING
node_key = str1.
IF sy- subrc = 0 .
menustr = fcode.
nodekey = str1.
nodekeyold = str1.
* nodetext = menustr.
READ TABLE node_table WITH KEY node_key = str1 INTO node1.
nodetext = node1-text .
IF fcode = 'CODE4' .
CALL METHOD wa_tree->delete_node
EXPORTING
node_key = node1 -node_key.
DELETE node_table WHERE node_key = node_key.
ENDIF .
ENDIF .
ENDMETHOD. "handle_node_context_menu_sel
ENDCLASS. "lcl_application IMPLEMENTATION
DATA: g_application TYPE REF TO lcl_application.
START-OF-SELECTION.
CREATE OBJECT g_application.
CALL SCREEN 0100.
*简单树的建立
*&---------------------------------------------------------------------*
*& Module USER_COMMAND_0100 INPUT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
MODULE user_command_0100 INPUT .
DATA: str1 TYPE tv_nodekey.
save_ok = ok_code.
CLEAR ok_code.
CASE save_ok.
WHEN 'EXIT'.
LEAVE PROGRAM .
WHEN 'TEST'.
text01 = 'TEST'.
WHEN 'BACK'.
* CALL SCREEN 0000.
WHEN 'RENEW'.
* LEAVE PROGRAM.
IF ( menustr = 'CODE1' ) OR ( menustr = 'CODE2' ).
READ TABLE node_table WITH KEY node_key = nodekey INTO node1.
IF sy-subrc = 0.
MESSAGE e208(00 ) WITH '键值重复' .
ENDIF .
ENDIF .
CASE menustr.
WHEN : 'CODE1'.
READ TABLE node_table WITH KEY node_key = nodekeyold INTO node2.
CLEAR node1.
node1- node_key = nodekey .
node1- relatkey = node2 -relatkey.
node1- isfolder = 'X' .
node1- text = nodetext .
APPEND node1 TO node_table .
CLEAR anode_table.
APPEND node1 TO anode_table .
CALL METHOD wa_tree->add_nodes
EXPORTING
table_structure_name = 'MTREESNODE'
node_table = anode_table.
WHEN : 'CODE2'.
CLEAR : node1.
node1- node_key = nodekey .
node1- relatkey = nodekeyold .
node1- isfolder = 'X' .
node1- text = nodetext .
APPEND node1 TO node_table .
CLEAR anode_table.
APPEND node1 TO anode_table .
CALL METHOD wa_tree->add_nodes
EXPORTING
table_structure_name = 'MTREESNODE'
node_table = anode_table.
WHEN : 'CODE3'.
node1- node_key = nodekeyold .
CALL METHOD wa_tree->node_set_text
EXPORTING
node_key = node1 -node_key
text = nodetext.
ENDCASE .
WHEN 'GETKEY'.
CALL METHOD wa_tree->get_selected_node
IMPORTING
node_key = str1.
IF sy-subrc = 0.
nodekeyold = str1.
ENDIF .
ENDCASE.
ENDMODULE. " USER_COMMAND_0100 INPUT
*&---------------------------------------------------------------------*
*& Module STATUS_0100 OUTPUT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
MODULE status_0100 OUTPUT .
SET PF-STATUS '0100'.
IF wa_custom_container IS INITIAL .
PERFORM create_tree.
ENDIF.
* SET TITLEBAR 'xxx'.
ENDMODULE. " STATUS_0100 OUTPUT
*&---------------------------------------------------------------------*
*& Module EXIT INPUT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
MODULE exit INPUT.
LEAVE PROGRAM.
ENDMODULE. " EXIT INPUT
*&---------------------------------------------------------------------*
*& Form CREATE_TREE
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM create_tree .
DATA: events TYPE cntl_simple_events,
event1 TYPE cntl_simple_event.
CREATE OBJECT wa_custom_container
EXPORTING
container_name = wa_container.
CREATE OBJECT wa_tree
EXPORTING
parent = wa_custom_container
node_selection_mode = cl_gui_simple_tree=>node_sel_mode_single .
* 节点的建立
CLEAR node1.
node1-node_key = 'COUNTRY'. "//根节点
* CLEAR node1-relatkey.
* CLEAR node1-relatship.
* node1-hidden = ''.
* node1-disabled = ''.
node1-isfolder = 'X'.
* CLEAR node1-n_image.
* CLEAR node1-exp_image.
* CLEAR node1-expander.
node1-text = '中国'.
APPEND node1 TO node_table.
CLEAR node1.
node1-node_key = 'CITYBEIJING'. "//城市节点北京
node1-relatkey = 'COUNTRY'.
node1-isfolder = 'X'.
node1-text = '北京'.
APPEND node1 TO node_table.
CLEAR node1.
node1-node_key = 'CITYSHANGHAI'. "//城市节点上海
node1-relatkey = 'COUNTRY'.
node1-isfolder = 'X'.
node1-text = '上海'.
APPEND node1 TO node_table.
CLEAR node1.
node1-node_key = 'KEYCHONGWEN'. "//地区节点 北京--崇文区
node1-relatkey = 'CITYBEIJING'.
* node1-relatship = CL_GUI_SIMPLE_TREE=>RELAT_LAST_CHILD.
node1-isfolder = ''.
node1-text = '崇文区'.
CLEAR node1- expander.
APPEND node1 TO node_table.
CALL METHOD wa_tree-> add_nodes
EXPORTING
table_structure_name = 'MTREESNODE'
node_table = node_table .
event1-eventid = cl_gui_simple_tree=>eventid_node_double_click .
event1-appl_event = 'X'.
APPEND event1 TO events .
CLEAR event1.
event1-eventid = cl_gui_simple_tree=>eventid_node_context_menu_req .
event1-appl_event = ''.
APPEND event1 TO events .
CALL METHOD wa_tree-> set_ctx_menu_select_event_appl
EXPORTING
appl_event = 'X'.
* CLEAR event1.
* event1-eventid = cl_gui_simple_tree=>eventid_node_context_menu_req.
* event1-appl_event = ''.
* APPEND event1 TO events.
CALL METHOD wa_tree-> set_registered_events
EXPORTING
events = events.
SET HANDLER g_application-> handle_node_double_click FOR wa_tree .
SET HANDLER g_application-> handle_node_context_menu_req FOR wa_tree .
SET HANDLER g_application-> handle_node_context_menu_sel FOR wa_tree .
ENDFORM. " CREATE_TREE*
DATA: save_ok TYPE sy- ucomm,
ok_code TYPE sy-ucomm .
DATA: text01 (18) TYPE c.
DATA: wa_container TYPE scrfname VALUE 'C_TEXTEDIT',
wa_custom_container TYPE REF TO cl_gui_custom_container,
wa_tree TYPE REF TO cl_gui_simple_tree.
DATA: node_table LIKE TABLE OF mtreesnode, "//TREE内表
anode_table LIKE TABLE OF mtreesnode,
node1 TYPE mtreesnode. "//TREE工作区
DATA: node2 TYPE mtreesnode.
DATA: wa_spfli TYPE TABLE OF spfli.
DATA: nodekey (200) VALUE 'NODE',
nodetext( 200) VALUE 'NONE',
nodekeyold( 200) VALUE 'NONE',
renew( 200).
DATA: getkey (200).
DATA: menustr (10) VALUE ''.
CLASS lcl_application DEFINITION DEFERRED.
*----------------------------------------------------------------------*
* CLASS LCL_APPLICATION DEFINITION
*----------------------------------------------------------------------*
*
*----------------------------------------------------------------------*
CLASS lcl_application DEFINITION .
PUBLIC SECTION.
METHODS : handle_node_double_click
FOR EVENT node_double_click OF cl_gui_simple_tree IMPORTING node_key.
METHODS :handle_node_context_menu_req
FOR EVENT node_context_menu_request OF cl_gui_simple_tree IMPORTING node_key menu.
METHODS : handle_node_context_menu_sel
FOR EVENT node_context_menu_select OF cl_gui_simple_tree IMPORTING node_key fcode.
ENDCLASS. "LCL_APPLICATION DEFINITION
*----------------------------------------------------------------------*
* CLASS lcl_application IMPLEMENTATION
*----------------------------------------------------------------------*
*
*----------------------------------------------------------------------*
CLASS lcl_application IMPLEMENTATION .
METHOD handle_node_double_click.
MESSAGE i208(00 ) WITH 'DOUBLE' .
nodekey = node_key.
READ TABLE node_table WITH KEY node_key = node_key INTO node1.
nodetext = node1-text .
ENDMETHOD. "handle_node_double_click
METHOD handle_node_context_menu_req. "//右键事件处理方法
CALL METHOD menu->add_function
EXPORTING
text = '增加本级节点'
fcode = 'CODE1'.
CALL METHOD menu->add_function
EXPORTING
text = '增加子节点'
fcode = 'CODE2'.
CALL METHOD menu->add_function
EXPORTING
text = '修改当前节点'
fcode = 'CODE3'.
CALL METHOD menu->add_function
EXPORTING
text = '删除当前节点'
fcode = 'CODE4'.
ENDMETHOD. "handle_node_context_menu_req
METHOD handle_node_context_menu_sel. "//选择事件处理方法
DATA : str1 TYPE tv_nodekey.
CALL METHOD wa_tree->get_selected_node
IMPORTING
node_key = str1.
IF sy- subrc = 0 .
menustr = fcode.
nodekey = str1.
nodekeyold = str1.
* nodetext = menustr.
READ TABLE node_table WITH KEY node_key = str1 INTO node1.
nodetext = node1-text .
IF fcode = 'CODE4' .
CALL METHOD wa_tree->delete_node
EXPORTING
node_key = node1 -node_key.
DELETE node_table WHERE node_key = node_key.
ENDIF .
ENDIF .
ENDMETHOD. "handle_node_context_menu_sel
ENDCLASS. "lcl_application IMPLEMENTATION
DATA: g_application TYPE REF TO lcl_application.
START-OF-SELECTION.
CREATE OBJECT g_application.
CALL SCREEN 0100.
*简单树的建立
*&---------------------------------------------------------------------*
*& Module USER_COMMAND_0100 INPUT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
MODULE user_command_0100 INPUT .
DATA: str1 TYPE tv_nodekey.
save_ok = ok_code.
CLEAR ok_code.
CASE save_ok.
WHEN 'EXIT'.
LEAVE PROGRAM .
WHEN 'TEST'.
text01 = 'TEST'.
WHEN 'BACK'.
* CALL SCREEN 0000.
WHEN 'RENEW'.
* LEAVE PROGRAM.
IF ( menustr = 'CODE1' ) OR ( menustr = 'CODE2' ).
READ TABLE node_table WITH KEY node_key = nodekey INTO node1.
IF sy-subrc = 0.
MESSAGE e208(00 ) WITH '键值重复' .
ENDIF .
ENDIF .
CASE menustr.
WHEN : 'CODE1'.
READ TABLE node_table WITH KEY node_key = nodekeyold INTO node2.
CLEAR node1.
node1- node_key = nodekey .
node1- relatkey = node2 -relatkey.
node1- isfolder = 'X' .
node1- text = nodetext .
APPEND node1 TO node_table .
CLEAR anode_table.
APPEND node1 TO anode_table .
CALL METHOD wa_tree->add_nodes
EXPORTING
table_structure_name = 'MTREESNODE'
node_table = anode_table.
WHEN : 'CODE2'.
CLEAR : node1.
node1- node_key = nodekey .
node1- relatkey = nodekeyold .
node1- isfolder = 'X' .
node1- text = nodetext .
APPEND node1 TO node_table .
CLEAR anode_table.
APPEND node1 TO anode_table .
CALL METHOD wa_tree->add_nodes
EXPORTING
table_structure_name = 'MTREESNODE'
node_table = anode_table.
WHEN : 'CODE3'.
node1- node_key = nodekeyold .
CALL METHOD wa_tree->node_set_text
EXPORTING
node_key = node1 -node_key
text = nodetext.
ENDCASE .
WHEN 'GETKEY'.
CALL METHOD wa_tree->get_selected_node
IMPORTING
node_key = str1.
IF sy-subrc = 0.
nodekeyold = str1.
ENDIF .
ENDCASE.
ENDMODULE. " USER_COMMAND_0100 INPUT
*&---------------------------------------------------------------------*
*& Module STATUS_0100 OUTPUT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
MODULE status_0100 OUTPUT .
SET PF-STATUS '0100'.
IF wa_custom_container IS INITIAL .
PERFORM create_tree.
ENDIF.
* SET TITLEBAR 'xxx'.
ENDMODULE. " STATUS_0100 OUTPUT
*&---------------------------------------------------------------------*
*& Module EXIT INPUT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
MODULE exit INPUT.
LEAVE PROGRAM.
ENDMODULE. " EXIT INPUT
*&---------------------------------------------------------------------*
*& Form CREATE_TREE
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM create_tree .
DATA: events TYPE cntl_simple_events,
event1 TYPE cntl_simple_event.
CREATE OBJECT wa_custom_container
EXPORTING
container_name = wa_container.
CREATE OBJECT wa_tree
EXPORTING
parent = wa_custom_container
node_selection_mode = cl_gui_simple_tree=>node_sel_mode_single .
* 节点的建立
CLEAR node1.
node1-node_key = 'COUNTRY'. "//根节点
* CLEAR node1-relatkey.
* CLEAR node1-relatship.
* node1-hidden = ''.
* node1-disabled = ''.
node1-isfolder = 'X'.
* CLEAR node1-n_image.
* CLEAR node1-exp_image.
* CLEAR node1-expander.
node1-text = '中国'.
APPEND node1 TO node_table.
CLEAR node1.
node1-node_key = 'CITYBEIJING'. "//城市节点北京
node1-relatkey = 'COUNTRY'.
node1-isfolder = 'X'.
node1-text = '北京'.
APPEND node1 TO node_table.
CLEAR node1.
node1-node_key = 'CITYSHANGHAI'. "//城市节点上海
node1-relatkey = 'COUNTRY'.
node1-isfolder = 'X'.
node1-text = '上海'.
APPEND node1 TO node_table.
CLEAR node1.
node1-node_key = 'KEYCHONGWEN'. "//地区节点 北京--崇文区
node1-relatkey = 'CITYBEIJING'.
* node1-relatship = CL_GUI_SIMPLE_TREE=>RELAT_LAST_CHILD.
node1-isfolder = ''.
node1-text = '崇文区'.
CLEAR node1- expander.
APPEND node1 TO node_table.
CALL METHOD wa_tree-> add_nodes
EXPORTING
table_structure_name = 'MTREESNODE'
node_table = node_table .
event1-eventid = cl_gui_simple_tree=>eventid_node_double_click .
event1-appl_event = 'X'.
APPEND event1 TO events .
CLEAR event1.
event1-eventid = cl_gui_simple_tree=>eventid_node_context_menu_req .
event1-appl_event = ''.
APPEND event1 TO events .
CALL METHOD wa_tree-> set_ctx_menu_select_event_appl
EXPORTING
appl_event = 'X'.
* CLEAR event1.
* event1-eventid = cl_gui_simple_tree=>eventid_node_context_menu_req.
* event1-appl_event = ''.
* APPEND event1 TO events.
CALL METHOD wa_tree-> set_registered_events
EXPORTING
events = events.
SET HANDLER g_application-> handle_node_double_click FOR wa_tree .
SET HANDLER g_application-> handle_node_context_menu_req FOR wa_tree .
SET HANDLER g_application-> handle_node_context_menu_sel FOR wa_tree .
ENDFORM. " CREATE_TREE*
REPORT ytest001.
DATA: save_ok TYPE sy- ucomm,
ok_code TYPE sy-ucomm .
DATA: text01 (18) TYPE c.
DATA: wa_container TYPE scrfname VALUE 'C_TEXTEDIT',
wa_custom_container TYPE REF TO cl_gui_custom_container,
wa_tree TYPE REF TO cl_gui_simple_tree.
DATA: node_table LIKE TABLE OF mtreesnode, "//TREE内表
anode_table LIKE TABLE OF mtreesnode,
node1 TYPE mtreesnode. "//TREE工作区
DATA: node2 TYPE mtreesnode.
DATA: wa_spfli TYPE TABLE OF spfli.
DATA: nodekey (200) VALUE 'NODE',
nodetext( 200) VALUE 'NONE',
nodekeyold( 200) VALUE 'NONE',
renew( 200).
DATA: getkey (200).
DATA: menustr (10) VALUE ''.
CLASS lcl_application DEFINITION DEFERRED.
*----------------------------------------------------------------------*
* CLASS LCL_APPLICATION DEFINITION
*----------------------------------------------------------------------*
*
*----------------------------------------------------------------------*
CLASS lcl_application DEFINITION .
PUBLIC SECTION.
METHODS : handle_node_double_click
FOR EVENT node_double_click OF cl_gui_simple_tree IMPORTING node_key.
METHODS :handle_node_context_menu_req
FOR EVENT node_context_menu_request OF cl_gui_simple_tree IMPORTING node_key menu.
METHODS : handle_node_context_menu_sel
FOR EVENT node_context_menu_select OF cl_gui_simple_tree IMPORTING node_key fcode.
ENDCLASS. "LCL_APPLICATION DEFINITION
*----------------------------------------------------------------------*
* CLASS lcl_application IMPLEMENTATION
*----------------------------------------------------------------------*
*
*----------------------------------------------------------------------*
CLASS lcl_application IMPLEMENTATION .
METHOD handle_node_double_click.
MESSAGE i208(00 ) WITH 'DOUBLE' .
nodekey = node_key.
READ TABLE node_table WITH KEY node_key = node_key INTO node1.
nodetext = node1-text .
ENDMETHOD. "handle_node_double_click
METHOD handle_node_context_menu_req. "//右键事件处理方法
CALL METHOD menu->add_function
EXPORTING
text = '增加本级节点'
fcode = 'CODE1'.
CALL METHOD menu->add_function
EXPORTING
text = '增加子节点'
fcode = 'CODE2'.
CALL METHOD menu->add_function
EXPORTING
text = '修改当前节点'
fcode = 'CODE3'.
CALL METHOD menu->add_function
EXPORTING
text = '删除当前节点'
fcode = 'CODE4'.
ENDMETHOD. "handle_node_context_menu_req
METHOD handle_node_context_menu_sel. "//选择事件处理方法
DATA : str1 TYPE tv_nodekey.
CALL METHOD wa_tree->get_selected_node
IMPORTING
node_key = str1.
IF sy- subrc = 0 .
menustr = fcode.
nodekey = str1.
nodekeyold = str1.
* nodetext = menustr.
READ TABLE node_table WITH KEY node_key = str1 INTO node1.
nodetext = node1-text .
IF fcode = 'CODE4' .
CALL METHOD wa_tree->delete_node
EXPORTING
node_key = node1 -node_key.
DELETE node_table WHERE node_key = node_key.
ENDIF .
ENDIF .
ENDMETHOD. "handle_node_context_menu_sel
ENDCLASS. "lcl_application IMPLEMENTATION
DATA: g_application TYPE REF TO lcl_application.
START-OF-SELECTION.
CREATE OBJECT g_application.
CALL SCREEN 0100.
*简单树的建立
*&---------------------------------------------------------------------*
*& Module USER_COMMAND_0100 INPUT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
MODULE user_command_0100 INPUT .
DATA: str1 TYPE tv_nodekey.
save_ok = ok_code.
CLEAR ok_code.
CASE save_ok.
WHEN 'EXIT'.
LEAVE PROGRAM .
WHEN 'TEST'.
text01 = 'TEST'.
WHEN 'BACK'.
* CALL SCREEN 0000.
WHEN 'RENEW'.
* LEAVE PROGRAM.
IF ( menustr = 'CODE1' ) OR ( menustr = 'CODE2' ).
READ TABLE node_table WITH KEY node_key = nodekey INTO node1.
IF sy-subrc = 0.
MESSAGE e208(00 ) WITH '键值重复' .
ENDIF .
ENDIF .
CASE menustr.
WHEN : 'CODE1'.
READ TABLE node_table WITH KEY node_key = nodekeyold INTO node2.
CLEAR node1.
node1- node_key = nodekey .
node1- relatkey = node2 -relatkey.
node1- isfolder = 'X' .
node1- text = nodetext .
APPEND node1 TO node_table .
CLEAR anode_table.
APPEND node1 TO anode_table .
CALL METHOD wa_tree->add_nodes
EXPORTING
table_structure_name = 'MTREESNODE'
node_table = anode_table.
WHEN : 'CODE2'.
CLEAR : node1.
node1- node_key = nodekey .
node1- relatkey = nodekeyold .
node1- isfolder = 'X' .
node1- text = nodetext .
APPEND node1 TO node_table .
CLEAR anode_table.
APPEND node1 TO anode_table .
CALL METHOD wa_tree->add_nodes
EXPORTING
table_structure_name = 'MTREESNODE'
node_table = anode_table.
WHEN : 'CODE3'.
node1- node_key = nodekeyold .
CALL METHOD wa_tree->node_set_text
EXPORTING
node_key = node1 -node_key
text = nodetext.
ENDCASE .
WHEN 'GETKEY'.
CALL METHOD wa_tree->get_selected_node
IMPORTING
node_key = str1.
IF sy-subrc = 0.
nodekeyold = str1.
ENDIF .
ENDCASE.
ENDMODULE. " USER_COMMAND_0100 INPUT
*&---------------------------------------------------------------------*
*& Module STATUS_0100 OUTPUT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
MODULE status_0100 OUTPUT .
SET PF-STATUS '0100'.
IF wa_custom_container IS INITIAL .
PERFORM create_tree.
ENDIF.
* SET TITLEBAR 'xxx'.
ENDMODULE. " STATUS_0100 OUTPUT
*&---------------------------------------------------------------------*
*& Module EXIT INPUT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
MODULE exit INPUT.
LEAVE PROGRAM.
ENDMODULE. " EXIT INPUT
*&---------------------------------------------------------------------*
*& Form CREATE_TREE
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM create_tree .
DATA: events TYPE cntl_simple_events,
event1 TYPE cntl_simple_event.
CREATE OBJECT wa_custom_container
EXPORTING
container_name = wa_container.
CREATE OBJECT wa_tree
EXPORTING
parent = wa_custom_container
node_selection_mode = cl_gui_simple_tree=>node_sel_mode_single .
* 节点的建立
CLEAR node1.
node1-node_key = 'COUNTRY'. "//根节点
* CLEAR node1-relatkey.
* CLEAR node1-relatship.
* node1-hidden = ''.
* node1-disabled = ''.
node1-isfolder = 'X'.
* CLEAR node1-n_image.
* CLEAR node1-exp_image.
* CLEAR node1-expander.
node1-text = '中国'.
APPEND node1 TO node_table.
CLEAR node1.
node1-node_key = 'CITYBEIJING'. "//城市节点北京
node1-relatkey = 'COUNTRY'.
node1-isfolder = 'X'.
node1-text = '北京'.
APPEND node1 TO node_table.
CLEAR node1.
node1-node_key = 'CITYSHANGHAI'. "//城市节点上海
node1-relatkey = 'COUNTRY'.
node1-isfolder = 'X'.
node1-text = '上海'.
APPEND node1 TO node_table.
CLEAR node1.
node1-node_key = 'KEYCHONGWEN'. "//地区节点 北京--崇文区
node1-relatkey = 'CITYBEIJING'.
* node1-relatship = CL_GUI_SIMPLE_TREE=>RELAT_LAST_CHILD.
node1-isfolder = ''.
node1-text = '崇文区'.
CLEAR node1- expander.
APPEND node1 TO node_table.
CALL METHOD wa_tree-> add_nodes
EXPORTING
table_structure_name = 'MTREESNODE'
node_table = node_table .
event1-eventid = cl_gui_simple_tree=>eventid_node_double_click .
event1-appl_event = 'X'.
APPEND event1 TO events .
CLEAR event1.
event1-eventid = cl_gui_simple_tree=>eventid_node_context_menu_req .
event1-appl_event = ''.
APPEND event1 TO events .
CALL METHOD wa_tree-> set_ctx_menu_select_event_appl
EXPORTING
appl_event = 'X'.
* CLEAR event1.
* event1-eventid = cl_gui_simple_tree=>eventid_node_context_menu_req.
* event1-appl_event = ''.
* APPEND event1 TO events.
CALL METHOD wa_tree-> set_registered_events
EXPORTING
events = events.
SET HANDLER g_application-> handle_node_double_click FOR wa_tree .
SET HANDLER g_application-> handle_node_context_menu_req FOR wa_tree .
SET HANDLER g_application-> handle_node_context_menu_sel FOR wa_tree .
ENDFORM. " CREATE_TREE
0 0
- Sap Tree Control
- TREE CONTROL
- tree control
- The SAP Toolbar control
- sap grid control
- SAP TOOLBAR CONTROL
- SAP Control Framework系列
- The SAP Toolbar control
- SAP Control framework
- SAP Control Framework
- SAP Control Framework 丢失事件?
- SAP control编程快速入门
- SAP评估控制 Valuation control
- Tree Control 的使用
- 树形控件(Tree Control)
- MFC中tree control
- tree control的应用
- TREE control 介绍
- 2行数据只有一列数据不同(不是主键),怎么合并成1行?
- Android代码混淆
- 输出最长公共子序列
- PHP的采集插件simple_html_dom的转码bug
- FOJ 2170 花生的序列 DP
- Sap Tree Control
- pymogo数据库连接错误
- 树莓派玩家需要的X条核心品格
- 最大似然估计方法
- 欧拉错排公式
- 使用 Socket 类向 HTTP 服务器发送数据和接收响应。
- 链表排序
- 光学变焦:拍照手机的下一个卖点?
- Android性能优化工具dmtracedump