Tree_Report

使用的树结点:SNODETEXT

使用的共通FUNCTIONRS_TREE_CONSTRUCTRS_TREE_EXPANDRS_TREE_LIST_DISPLAYRS_TREE_GET_CURRENT_NODERS_TREE_SET_NODE

,有HOTSPOT置。

屏幕STATUS置参源中心//S001.JPG.

[@more@]

*&---------------------------------------------------------------------*

*& Report ZTREE_REPORT

*&

*&---------------------------------------------------------------------*

REPORT ZTREE_REPORT.

************************************************************************

* INCLUDE

************************************************************************

INCLUDE:.

************************************************************************

* CONSTANTS

************************************************************************

CONSTANTS:

C_ON(20) VALUE 'ICON_LED_GREEN',

C_OFF(20) VALUE 'ICON_LED_YELLOW',

C_ROOT(20) VALUE 'ICON_WORKFLOW_INBOX'.

************************************************************************

* DATA

************************************************************************

* 学生成績情報用構造

DATA: BEGIN OF GH_STUINFO,

ID(4) TYPE N,

NAME(10) TYPE C,

ABAP(2) TYPE N,

CPP(2) TYPE N,

JAVA(2) TYPE N,

END OF GH_STUINFO.

* 学生成績情報用テーブル

DATA GT_STUINFO LIKE TABLE OF GH_STUINFO.

DATA:

GH_NODE LIKE SNODETEXT, "階層ノード

GT_TREE LIKE TABLE OF SNODETEXT. "ツリー

* 現在のノード

DATA: GW_CURNODE LIKE SNODETEXT.

* カーソルのフィールド

DATA: GW_CURSORFIELD(30) TYPE C.

DATA:

GW_KIND(13) TYPE C VALUE 'GH_NODE-KIND1',

GW_TEXT(13) TYPE C VALUE 'GH_NODE-TEXT1',

GW_POS(13) TYPE C VALUE 'GH_NODE-TPOS1',

GW_LEN(16) TYPE C VALUE 'GH_NODE-TLENGTH1',

GW_COL(15) TYPE C VALUE 'GH_NODE-TCOLOR1',

GW_INTE(18) TYPE C VALUE 'GH_NODE-TINTENSIV1'.

* 階層ノードの項目値設定用シンボル

FIELD-SYMBOLS: ,

,

,

,

,

.

************************************************************************

* START-OF-SELECTION

************************************************************************

START-OF-SELECTION.

* 学生成績情報の取得

PERFORM GET_STUINFO.

* ルートノーの作成

PERFORM SET_LIST_ROOT.

* リストヘッダタイトルの設定

PERFORM SET_LIST_HEADER_TITLE.

* リストデータの設定

PERFORM SET_LIST_DATA.

* ツリーの作成

PERFORM BUILD_TREE.

* 初期化の時、サブツリー展開

PERFORM INIT_TREE_EXPAND.

* 階層照会

PERFORM DRAW_TREE.

*---------------------------------------------------------------------*

* FORM GET_STUINFO

*---------------------------------------------------------------------*

* 学生成績情報の取得

*---------------------------------------------------------------------*

FORM GET_STUINFO.

CLEAR GH_STUINFO.

GH_STUINFO-ID = '001'.

GH_STUINFO-NAME = 'JIM'.

GH_STUINFO-ABAP = '96'.

GH_STUINFO-CPP = '96'.

GH_STUINFO-JAVA = '96'.

APPEND GH_STUINFO TO GT_STUINFO.

CLEAR GH_STUINFO.

GH_STUINFO-ID = '002'.

GH_STUINFO-NAME = 'MARK'.

GH_STUINFO-ABAP = '90'.

GH_STUINFO-CPP = '90'.

GH_STUINFO-JAVA = '90'.

APPEND GH_STUINFO TO GT_STUINFO.

ENDFORM. " GET_STUINFO

*---------------------------------------------------------------------*

* FORM SET_LIST_ROOT

*---------------------------------------------------------------------*

* ルートノーの作成

*---------------------------------------------------------------------*

FORM SET_LIST_ROOT.

CLEAR: GH_NODE.

GH_NODE-NAME = ''. "オブジェクト名

GH_NODE-KIND = 'I'. "テキストタイプ

GH_NODE-TEXT = C_ROOT. "アイコン

GH_NODE-TLENGTH = 10. "ノードの出力長

GH_NODE-TLEVEL = 1. "ノードレベル

APPEND GH_NODE TO GT_TREE.

ENDFORM. " SET_LIST_ROOT

*---------------------------------------------------------------------*

* FORM SET_LIST_HEADER_TITLE

*---------------------------------------------------------------------*

* リストヘッダタイトルの設定

*---------------------------------------------------------------------*

FORM SET_LIST_HEADER_TITLE.

CLEAR: GH_NODE.

PERFORM SET_NODE USING 'H_TITLE' 2 0 1 1.

* ID

PERFORM SET_COLUMN USING 1 '' 'ID' 10 8 3 9.

* NAME

PERFORM SET_COLUMN USING 2 '' 'NAME' 20 8 3 9.

APPEND GH_NODE TO GT_TREE.

CLEAR: GH_NODE.

PERFORM SET_NODE USING 'S_TITLE' 3 0 1 0.

* ABAP

PERFORM SET_COLUMN USING 1 '' 'ABAP' 10 8 5 9.

* CPP

PERFORM SET_COLUMN USING 2 '' 'CPP' 20 8 5 9.

* JAVA

PERFORM SET_COLUMN USING 3 '' 'JAVA' 30 8 5 9.

APPEND GH_NODE TO GT_TREE.

ENDFORM. "SET_LIST_HEADER_TITLE

*---------------------------------------------------------------------*

* FORM SET_NODE

*---------------------------------------------------------------------*

* ノード全体の設

*---------------------------------------------------------------------*

FORM SET_NODE USING U_NAME U_LEV U_LEN U_COL U_INTE.

GH_NODE-NAME = U_NAME.

GH_NODE-TLEVEL = U_LEV.

GH_NODE-NLENGTH = U_LEN.

GH_NODE-COLOR = U_COL.

GH_NODE-INTENSIV = U_INTE.

ENDFORM. "set_node

*---------------------------------------------------------------------*

* FORM SET_COLUMN

*---------------------------------------------------------------------*

* リスト用内部テーブルの項目値の設

*---------------------------------------------------------------------*

FORM SET_COLUMN USING U_NO U_KIND U_TEXT U_POS U_LEN U_COL U_INTE.

GW_KIND+12(1) = U_NO.

GW_TEXT+12(1) = U_NO.

GW_POS+12(1) = U_NO.

GW_LEN+15(1) = U_NO.

GW_COL+14(1) = U_NO.

GW_INTE+17(1) = U_NO.

ASSIGN (GW_KIND) TO .

ASSIGN (GW_TEXT) TO .

ASSIGN (GW_POS) TO .

ASSIGN (GW_LEN) TO .

ASSIGN (GW_COL) TO .

ASSIGN (GW_INTE) TO .

= U_KIND.

= U_TEXT.

> = U_POS.

> = U_LEN.

> = U_COL.

= U_INTE.

ENDFORM. " SET_COLUMN

*----------------------------------------------------------------------*

* FORM SET_LIST_DATA

*----------------------------------------------------------------------*

* リストデータの設

*----------------------------------------------------------------------*

FORM SET_LIST_DATA.

DATA: LW_NAME(20) TYPE C.

LOOP AT GT_STUINFO INTO GH_STUINFO.

* 学生番号と名称の設

CLEAR GH_NODE.

PERFORM SET_NODE USING GH_STUINFO-ID 2 0 1 0.

PERFORM SET_COLUMN USING '1' '' GH_STUINFO-ID 10 8 3 9.

PERFORM SET_COLUMN USING '2' '' GH_STUINFO-NAME 20 8 3 9.

APPEND GH_NODE TO GT_TREE.

* 学生成績の設

CLEAR GH_NODE.

CONCATENATE GH_STUINFO-ID GH_STUINFO-NAME INTO LW_NAME.

PERFORM SET_NODE USING LW_NAME 3 0 1 0.

PERFORM SET_COLUMN USING '1' '' GH_STUINFO-ABAP 10 8 5 9.

PERFORM SET_COLUMN USING '2' '' GH_STUINFO-CPP 20 8 5 9.

PERFORM SET_COLUMN USING '3' '' GH_STUINFO-JAVA 30 8 5 9.

PERFORM SET_COLUMN USING '4' 'I' C_OFF 40 4 5 9.

GH_NODE-HOTSPOT4 = 'X'.

APPEND GH_NODE TO GT_TREE.

ENDLOOP.

ENDFORM. " SET_LIST_DATA

*----------------------------------------------------------------------*

* FORM BUILD_TREE

*----------------------------------------------------------------------*

* ツリーの作

*----------------------------------------------------------------------*

FORM BUILD_TREE.

CALL FUNCTION 'RS_TREE_CONSTRUCT'

TABLES

NODETAB = GT_TREE

EXCEPTIONS

TREE_FAILURE = 1

ID_NOT_FOUND = 2

WRONG_RELATIONSHIP = 3

OTHERS = 4.

ENDFORM. " BUILD_TREE

*----------------------------------------------------------------------*

* FORM INIT_TREE_EXPAND

*----------------------------------------------------------------------*

* 初期化の時、サブツリー展開

*----------------------------------------------------------------------*

FORM INIT_TREE_EXPAND.

LOOP AT GT_TREE INTO GH_NODE WHERE TLEVEL = 2.

PERFORM EXPAND_TREE USING GH_NODE-ID 2.

ENDLOOP.

ENDFORM. " INIT_TREE_EXPAND

*----------------------------------------------------------------------*

* FORM EXPAND_TREE

*----------------------------------------------------------------------*

* サブツリー展

*----------------------------------------------------------------------*

FORM EXPAND_TREE USING U_ID

U_DEPTH.

CALL FUNCTION 'RS_TREE_EXPAND'

EXPORTING

NODE_ID = U_ID

* ALL = ' '

* LIST_SCROLL =

DEPTH = U_DEPTH

EXCEPTIONS

NOT_FOUND = 1

OTHERS = 2.

ENDFORM. " EXPAND_TREE

*----------------------------------------------------------------------*

* FORM DRAW_TREE

*----------------------------------------------------------------------*

* 階層照

*----------------------------------------------------------------------*

FORM DRAW_TREE.

SET PF-STATUS 'S001'.

CALL FUNCTION 'RS_TREE_LIST_DISPLAY'

EXPORTING

CALLBACK_PROGRAM = SY-CPROG

CALLBACK_USER_COMMAND = 'NODE_SELECT'

CALLBACK_TOP_OF_PAGE = 'TOP_OF_PAGE_FORM'.

ENDFORM. " DRAW_TREE

*---------------------------------------------------------------------*

* FORM GET_CURRENT_NODE

*---------------------------------------------------------------------*

* 現在のノードを読

*---------------------------------------------------------------------*

FORM GET_CURRENT_NODE CHANGING U_NODE.

CALL FUNCTION 'RS_TREE_GET_CURRENT_NODE'

IMPORTING

NODE_INFO = U_NODE.

ENDFORM. " GET_CURRENT_NODE

*---------------------------------------------------------------------*

* FORM SET_CUR_NODE

*---------------------------------------------------------------------*

* ノード変

*---------------------------------------------------------------------*

FORM SET_CUR_NODE USING U_NODE LIKE SNODETEXT.

CALL FUNCTION 'RS_TREE_SET_NODE'

EXPORTING

NODE_INFO = U_NODE

EXCEPTIONS

ID_NOT_FOUND = 1

OTHERS = 2.

ENDFORM. " SET_CUR_NODE

*&---------------------------------------------------------------------*

*& Form NODE_SELECT

*&---------------------------------------------------------------------*

* ノードが選択された場合

*----------------------------------------------------------------------*

FORM NODE_SELECT TABLES U_CONTENT STRUCTURE SEUCOMM

USING U_COMMAND

CHANGING U_EXIT

U_LIST_REFRESH.

CASE U_COMMAND.

*

WHEN 'TRSL'.

PERFORM GET_CURRENT_NODE CHANGING GW_CURNODE.

* カーソルのフィールドがアイコンの場

IF GW_CURNODE-TLEVEL = 3.

PERFORM SELECT_LIST_LEVEL3.

ENDIF.

ENDCASE.

ENDFORM. " NODE_SELECT

*&--------------------------------------------------------------------*

*& Form SELECT_LIST_LEVEL3

*&--------------------------------------------------------------------*

* text

*---------------------------------------------------------------------*

FORM SELECT_LIST_LEVEL3.

GET CURSOR FIELD GW_CURSORFIELD.

* カーソルのフィールドがアイコンの場合

IF GW_CURSORFIELD = C_ON OR

GW_CURSORFIELD = C_OFF.

IF GW_CURNODE-TEXT4 = C_ON.

GW_CURNODE-TEXT4 = C_OFF.

ELSEIF GW_CURNODE-TEXT4 = C_OFF.

GW_CURNODE-TEXT4 = C_ON.

ENDIF.

ENDIF.

PERFORM SET_CUR_NODE USING GW_CURNODE.

ENDFORM. " SELECT_LIST_LEVEL3

*---------------------------------------------------------------------*

* FORM TOP_OF_PAGE_FORM

*---------------------------------------------------------------------*

* 見出し出

*---------------------------------------------------------------------*

FORM TOP_OF_PAGE_FORM.

WRITE: /80(100) '学生成績情報'.

WRITE SY-ULINE.

ENDFORM. " TOP_OF_PAGE_FORM

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/8214011/viewspace-910893/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/8214011/viewspace-910893/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值