树型结构
来源:互联网 发布:dnf几分钟就网络中断 编辑:程序博客网 时间:2024/04/29 12:21
*&---------------------------------------------------------------------*
*& Modulpool SAPSIMPLE_TREE_CONTROL_DEMO *
*& *
*&---------------------------------------------------------------------*
REPORT ZTEST01 MESSAGE-ID TREE_CONTROL_MSG.
INCLUDE ZTEST01TOP.
INCLUDE ZTEST01O01.
INCLUDE ZTEST01I01.
INCLUDE ZTEST01F01.
START-OF-SELECTION.
CREATE OBJECT G_APPLICATION.
SET SCREEN 100.
*&---------------------------------------------------------------------*
*& 包括 ZTEST01TOP
*&---------------------------------------------------------------------*
*& Include SIMPLE_TREE_CONTROL_DEMOTOP *
*& *
*&---------------------------------------------------------------------*
CLASS LCL_APPLICATION DEFINITION DEFERRED.
CLASS CL_GUI_CFW DEFINITION LOAD.
TYPES: NODE_TABLE_TYPE LIKE STANDARD TABLE OF MTREESNODE
WITH DEFAULT KEY.
DATA: G_APPLICATION TYPE REF TO LCL_APPLICATION,
G_CUSTOM_CONTAINER TYPE REF TO CL_GUI_CUSTOM_CONTAINER,
G_TREE TYPE REF TO CL_GUI_SIMPLE_TREE,
G_OK_CODE TYPE SY-UCOMM.
DATA: G_EVENT(30),
G_NODE_KEY TYPE TV_NODEKEY.
DATA: NODE_TABLE TYPE NODE_TABLE_TYPE.
CONSTANTS:
BEGIN OF C_NODEKEY,
ROOT TYPE TV_NODEKEY VALUE 'Root',
CHILD1 TYPE TV_NODEKEY VALUE 'Child1',
CHILD2 TYPE TV_NODEKEY VALUE 'Child2',
NEW1 TYPE TV_NODEKEY VALUE 'New1',
NEW2 TYPE TV_NODEKEY VALUE 'New2',
END OF C_NODEKEY.
*&---------------------------------------------------------------------*
*& 包括 ZTEST01O01
*&---------------------------------------------------------------------*
*& Module STATUS_100 OUTPUT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
MODULE STATUS_100 OUTPUT.
SET PF-STATUS 'MAIN'.
IF G_TREE IS INITIAL.
PERFORM CREATE_AND_INIT_TREE.
PERFORM CREATE_TREE.
ENDIF.
ENDMODULE. " STATUS_100 OUTPUT
*&---------------------------------------------------------------------*
*& Form CREATE_TREE
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
FORM CREATE_TREE .
PERFORM BUILD_NODE_TABLE USING NODE_TABLE.
CALL METHOD G_TREE->ADD_NODES
EXPORTING
TABLE_STRUCTURE_NAME = 'MTREESNODE'
NODE_TABLE = NODE_TABLE
EXCEPTIONS
FAILED = 1
ERROR_IN_NODE_TABLE = 2
DP_ERROR = 3
TABLE_STRUCTURE_NAME_NOT_FOUND = 4
OTHERS = 5.
IF SY-SUBRC <> 0.
MESSAGE A000.
ENDIF.
ENDFORM. " CREATE_TREE
*&---------------------------------------------------------------------*
*& 包括 ZTEST01I01
*&---------------------------------------------------------------------*
*& Module USER_COMMAND_100 INPUT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
MODULE USER_COMMAND_100 INPUT.
DATA: RETURN_CODE TYPE I.
*** 如果事件是注册的,就必须要用 call method cl_gui_cfw=>DISPATCH
CALL METHOD CL_GUI_CFW=>DISPATCH
IMPORTING
RETURN_CODE = RETURN_CODE.
IF RETURN_CODE <> CL_GUI_CFW=>RC_NOEVENT.
CLEAR G_OK_CODE.
EXIT.
ENDIF.
CASE G_OK_CODE.
WHEN 'BACK'.
IF NOT G_CUSTOM_CONTAINER IS INITIAL.
CALL METHOD G_CUSTOM_CONTAINER->FREE
EXCEPTIONS
CNTL_SYSTEM_ERROR = 1
CNTL_ERROR = 2.
CLEAR G_CUSTOM_CONTAINER.
CLEAR G_TREE.
ENDIF.
LEAVE PROGRAM.
ENDCASE.
CLEAR G_OK_CODE.
ENDMODULE. " USER_COMMAND_0100 INPUT
*
*&---------------------------------------------------------------------*
*& 包括 ZTEST01F01
*&---------------------------------------------------------------------*
* INCLUDE SIMPLE_TREE_CONTROL_DEMOCL1 *
*----------------------------------------------------------------------*
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_EXPAND_NO_CHILDREN
FOR EVENT EXPAND_NO_CHILDREN
OF CL_GUI_SIMPLE_TREE
IMPORTING NODE_KEY.
ENDCLASS. "LCL_APPLICATION DEFINITION
*----------------------------------------------------------------------*
* CLASS LCL_APPLICATION IMPLEMENTATION
*----------------------------------------------------------------------*
*
*----------------------------------------------------------------------*
CLASS LCL_APPLICATION IMPLEMENTATION.
** 创建树型控件时,绑定的双击事件
METHOD HANDLE_NODE_DOUBLE_CLICK.
G_EVENT = 'NODE_DOUBLE_CLICK'.
G_NODE_KEY = NODE_KEY.
ENDMETHOD. "HANDLE_NODE_DOUBLE_CLICK
** 创建树型控件时,绑定的单击结点事件
METHOD HANDLE_EXPAND_NO_CHILDREN.
DATA: NODE_TABLE TYPE NODE_TABLE_TYPE,
NODE TYPE MTREESNODE.
G_EVENT = 'EXPAND_NO_CHILDREN'.
G_NODE_KEY = NODE_KEY.
IF NODE_KEY = 'Child2'.
CLEAR NODE.
NODE-NODE_KEY = C_NODEKEY-NEW1.
NODE-RELATKEY = C_NODEKEY-CHILD2.
NODE-RELATSHIP = CL_GUI_SIMPLE_TREE=>RELAT_LAST_CHILD.
NODE-ISFOLDER = ' '.
NODE-TEXT = 'New1'(NE1).
APPEND NODE TO NODE_TABLE.
CLEAR NODE.
NODE-NODE_KEY = C_NODEKEY-NEW2.
NODE-RELATKEY = C_NODEKEY-CHILD2.
NODE-RELATSHIP = CL_GUI_SIMPLE_TREE=>RELAT_LAST_CHILD.
NODE-N_IMAGE = '@10@'.
NODE-EXPANDER = ' '.
NODE-TEXT = 'New2'(NE2).
APPEND NODE TO NODE_TABLE.
*** 将数据写进树型控件
CALL METHOD G_TREE->ADD_NODES
EXPORTING
TABLE_STRUCTURE_NAME = 'MTREESNODE'
NODE_TABLE = NODE_TABLE
EXCEPTIONS
FAILED = 1
ERROR_IN_NODE_TABLE = 2
DP_ERROR = 3
TABLE_STRUCTURE_NAME_NOT_FOUND = 4
OTHERS = 5.
IF SY-SUBRC <> 0.
MESSAGE A000.
ENDIF.
ENDIF.
ENDMETHOD. "HANDLE_EXPAND_NO_CHILDREN
ENDCLASS. "LCL_APPLICATION IMPLEMENTATION
*&---------------------------------------------------------------------*
*& Form CREATE_AND_INIT_TREE
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
FORM CREATE_AND_INIT_TREE.
DATA: EVENTS TYPE CNTL_SIMPLE_EVENTS,
EVENT TYPE CNTL_SIMPLE_EVENT.
* 为树型控件创建一个容器
CREATE OBJECT G_CUSTOM_CONTAINER
EXPORTING
CONTAINER_NAME = 'TREE_CONTAINER'
EXCEPTIONS
CNTL_ERROR = 1
CNTL_SYSTEM_ERROR = 2
CREATE_ERROR = 3
LIFETIME_ERROR = 4
LIFETIME_DYNPRO_DYNPRO_LINK = 5.
IF SY-SUBRC <> 0.
MESSAGE A000.
ENDIF.
* 创建树型控件 此时没有数据
CREATE OBJECT G_TREE
EXPORTING
PARENT = G_CUSTOM_CONTAINER
NODE_SELECTION_MODE = CL_GUI_SIMPLE_TREE=>NODE_SEL_MODE_SINGLE
EXCEPTIONS
LIFETIME_ERROR = 1
CNTL_SYSTEM_ERROR = 2
CREATE_ERROR = 3
FAILED = 4
ILLEGAL_NODE_SELECTION_MODE = 5.
IF SY-SUBRC <> 0.
MESSAGE A000.
ENDIF.
*** 双击时事件
EVENT-EVENTID = CL_GUI_SIMPLE_TREE=>EVENTID_NODE_DOUBLE_CLICK.
EVENT-APPL_EVENT = 'X'.
APPEND EVENT TO EVENTS.
*** 单击子结点为时事件
EVENT-EVENTID = CL_GUI_SIMPLE_TREE=>EVENTID_EXPAND_NO_CHILDREN.
EVENT-APPL_EVENT = 'X'.
APPEND EVENT TO EVENTS.
*** 注册事情
CALL METHOD G_TREE->SET_REGISTERED_EVENTS
EXPORTING
EVENTS = EVENTS
EXCEPTIONS
CNTL_ERROR = 1
CNTL_SYSTEM_ERROR = 2
ILLEGAL_EVENT_COMBINATION = 3.
IF SY-SUBRC <> 0.
MESSAGE A000.
ENDIF.
*** 将事件和树型控件绑定
SET HANDLER G_APPLICATION->HANDLE_NODE_DOUBLE_CLICK FOR G_TREE.
SET HANDLER G_APPLICATION->HANDLE_EXPAND_NO_CHILDREN FOR G_TREE.
ENDFORM. " CREATE_AND_INIT_TREE
*&---------------------------------------------------------------------*
*& Form build_node_table
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
FORM BUILD_NODE_TABLE USING NODE_TABLE TYPE NODE_TABLE_TYPE.
DATA: NODE LIKE MTREESNODE.
NODE-NODE_KEY = C_NODEKEY-ROOT. " 指定最高级的父节点
CLEAR NODE-RELATKEY.
CLEAR NODE-RELATSHIP.
NODE-HIDDEN = ' '. " 整个树型结构是否显示
NODE-DISABLED = 'X'. " 没测出什么作用
NODE-ISFOLDER = 'X'. " 结点的图标为文件夹.
NODE-TEXT = 'Root'. " 结点显示的方本
APPEND NODE TO NODE_TABLE. " 写进树型结构内表
* 加第一个 一级子结点
NODE-NODE_KEY = C_NODEKEY-CHILD1. " 一级子结点
NODE-RELATKEY = C_NODEKEY-ROOT. " 指定本级结点的父结点
NODE-RELATSHIP = CL_GUI_SIMPLE_TREE=>RELAT_LAST_CHILD. " 没测出作什么用
NODE-HIDDEN = ' '.
NODE-DISABLED = ' '.
NODE-ISFOLDER = 'X'.
NODE-EXPANDER = 'X'.
NODE-TEXT = 'Child1'.
NODE-STYLE = CL_GUI_SIMPLE_TREE=>STYLE_EMPHASIZED_POSITIVE. "上颜色
APPEND NODE TO NODE_TABLE.
* 加第二个 一级子结点
CLEAR NODE-RELATKEY.
CLEAR NODE-RELATSHIP.
NODE-NODE_KEY = C_NODEKEY-CHILD2.
NODE-RELATKEY = C_NODEKEY-ROOT.
NODE-RELATSHIP = CL_GUI_SIMPLE_TREE=>RELAT_LAST_CHILD.
NODE-HIDDEN = ' '.
NODE-DISABLED = ' '.
NODE-ISFOLDER = 'X'.
NODE-EXPANDER = 'X'.
NODE-TEXT = 'Child2'.
NODE-STYLE = CL_GUI_SIMPLE_TREE=>STYLE_EMPHASIZED_POSITIVE.
APPEND NODE TO NODE_TABLE.
ENDFORM. " build_node_table
*&---------------------------------------------------------------------*
*& screen 100
*&---------------------------------------------------------------------*
PROCESS BEFORE OUTPUT.
MODULE STATUS_100.
PROCESS AFTER INPUT.
MODULE USER_COMMAND_100.
- 树型结构很重要
- 树型结构解决方案
- JS树型结构
- 树型结构
- 树型结构列表
- 用递归处理树型结构(表结构)
- asp实现树型结构
- 树型结构的设计
- 树型结构的遍历
- 树型结构的处理
- Delphi实现树型结构
- Oracle 树型结构查询
- 分级生成树型结构
- PB树型结构遍历
- sqlite 树型结构查询
- 左右编号树型结构
- 树型结构的创建
- dTree创建树型结构
- Groovy --> XML
- PHP 开源 CMS 三剑客论剑 SXSW 展会
- 出现not all code paths return a value错误的原因
- LINK.EXE参数解释:
- 嵌入式内功.扎马步
- 树型结构
- struts2国际化
- javaScript 中的本地对象(native object)
- PHP超强分页类2.0使用心得
- KITL 使用教程(重新整理)
- 数字转汉语读法的方法设计(C#)
- fseek与ftell函数
- 去掉IEjs拦截提示
- Dom4j 使用简介