‎2006 Nov 24 6:46 AM
Hi Experts,
Can anyone give me a detailed procedure to work on Custom Container in Dialog program. My requirement is to create a Tree control and handle events for Click and Double Click.
Thanks
AK
‎2006 Nov 24 6:49 AM
Hi,
check the program SAPSIMPLE_TREE_CONTROL_DEMO in se80.
this will help a lot.
regards
Sandeep
‎2006 Nov 24 6:47 AM
‎2006 Nov 24 6:49 AM
Hi,
check the program SAPSIMPLE_TREE_CONTROL_DEMO in se80.
this will help a lot.
regards
Sandeep
‎2006 Nov 24 7:16 AM
hi ashok,
i have send the sample code for creating tree with container , try this.
create a screen with container for this program
REPORT Z*************************.
TYPE-POOLS CNTL.
DATA: BEGIN OF WA_VBAK,
VBELN TYPE VBAK-VBELN,
ERDAT TYPE VBAK-ERDAT,
ERZET TYPE VBAK-ERZET,
ERNAM TYPE VBAK-ERNAM,
ANGDT TYPE VBAK-ANGDT,
END OF WA_VBAK.
DATA: BEGIN OF WA_VBAP,
VBELN TYPE VBAP-VBELN,
POSNR TYPE VBAP-POSNR,
MATNR TYPE VBAP-MATNR,
MATWA TYPE VBAP-MATWA,
PMATN TYPE VBAP-PMATN,
END OF WA_VBAP.
DATA: L_NODEKEY(10).
DATA: NODE TYPE TREEV_NODE,
UNODE TYPE TREEV_UNOD,
ITEM TYPE MTREEITM.
TYPES: ITEM_TABLE_TYPE LIKE STANDARD TABLE OF MTREEITM WITH DEFAULT KEY.
DATA : IT_VBAK LIKE TABLE OF WA_VBAK WITH HEADER LINE,
IT_VBAP LIKE TABLE OF WA_VBAP WITH HEADER LINE,
NODE_TABLE TYPE TREEV_NTAB,
UPDATE_NODE TYPE TREEV_UPNO,
ITEM_TABLE TYPE ITEM_TABLE_TYPE,
UPDATE_TABLE TYPE ITEM_TABLE_TYPE,
HIERARCHY_HEADER TYPE TREEV_HHDR,
G_NODEKEY(10) TYPE N,
event type cntl_simple_event,
EVENTS TYPE CNTL_SIMPLE_EVENTS,
G_CONTAINER TYPE REF TO CL_GUI_CUSTOM_CONTAINER,
G_ALV TYPE REF TO CL_GUI_COLUMN_TREE.
CLASS LCL_APPLICATION DEFINITION inheriting from cl_gui_column_tree.
PUBLIC SECTION.
METHODS:
HANDLE_EXPAND_NO_CHILDREN
FOR EVENT EXPAND_NO_CHILDREN
OF CL_GUI_COLUMN_TREE
IMPORTING NODE_KEY,
expandall importing node_key type TV_NODEKEY.
ENDCLASS.
DATA : EVENT_RECEIVER TYPE REF TO LCL_APPLICATION.
CALL SCREEN 9000.
CLASS LCL_APPLICATION IMPLEMENTATION.
METHOD HANDLE_EXPAND_NO_CHILDREN.
PERFORM BUILD_TREES USING NODE_KEY.
ENDMETHOD.
method expandall.
call method handle_expand_no_children
exporting
node_key = node_key.
.
endmethod.
ENDCLASS.
&----
*& Module STATUS_9000 OUTPUT
MODULE STATUS_9000 OUTPUT.
SET PF-STATUS 'STATUS'.
SET TITLEBAR 'xxx'.
IF G_CONTAINER IS INITIAL.
CREATE OBJECT G_CONTAINER
EXPORTING
PARENT =
CONTAINER_NAME = 'C_ALV'
.
IF SY-SUBRC <> 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
HIERARCHY_HEADER-HEADING = 'Hierarchy Header'. "#EC NOTEXT
HIERARCHY_HEADER-WIDTH = 30. " width: 30 characters
CREATE OBJECT G_ALV
EXPORTING
LIFETIME =
PARENT = G_CONTAINER
SHELLSTYLE =
NODE_SELECTION_MODE = CL_GUI_COLUMN_TREE=>NODE_SEL_MODE_SINGLE
HIDE_SELECTION =
ITEM_SELECTION = 'X'
HIERARCHY_COLUMN_NAME = 'COL1'
HIERARCHY_HEADER = HIERARCHY_HEADER
.
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 EVENT_RECEIVER
exporting
PARENT = G_CONTAINER
SHELLSTYLE =
NODE_SELECTION_MODE = CL_GUI_COLUMN_TREE=>NODE_SEL_MODE_SINGLE
HIDE_SELECTION =
ITEM_SELECTION = 'X'
HIERARCHY_COLUMN_NAME = 'COL1'
HIERARCHY_HEADER = HIERARCHY_HEADER.
" expand no children
event-eventid = CL_GUI_COLUMN_TREE=>EVENTID_EXPAND_NO_CHILDREN.
event-appl_event = 'X'.
append event to events.
CALL METHOD G_ALV->SET_REGISTERED_EVENTS
EXPORTING
EVENTS = EVENTS
EXCEPTIONS
CNTL_ERROR = 1
CNTL_SYSTEM_ERROR = 2
ILLEGAL_EVENT_COMBINATION = 3.
IF SY-SUBRC <> 0.
ENDIF.
assign event handlers in the application class to each desired event
SET HANDLER EVENT_RECEIVER->HANDLE_EXPAND_NO_CHILDREN FOR G_ALV.
PERFORM BUILD_SQL.
PERFORM BUILD_TREE.
ENDIF.
ENDMODULE. " STATUS_9000 OUTPUT
&----
*& Form BUILD_SQL
&----
FORM BUILD_SQL .
SELECT
VBELN
ERDAT
ERZET
ERNAM
ANGDT
INTO TABLE IT_VBAK
FROM VBAK
UP TO 2000 ROWS.
SELECT
VBELN
POSNR
MATNR
MATWA
PMATN
INTO TABLE IT_VBAP
FROM VBAP
FOR ALL ENTRIES IN IT_VBAK
WHERE VBELN = IT_VBAK-VBELN.
ENDFORM. " BUILD_SQL
&----
*& Module USER_COMMAND_9000 INPUT
&----
MODULE USER_COMMAND_9000 INPUT.
CASE SY-UCOMM.
WHEN 'EXIT'.
LEAVE PROGRAM.
WHEN 'EXPAND'.
PERFORM EXPAND_ALL.
ENDCASE.
ENDMODULE. " USER_COMMAND_9000 INPUT
&----
*& Form BUILD_TREE
&----
FORM BUILD_TREE .
PERFORM CREATE_COLS.
LOOP AT IT_VBAK WHERE VBELN <> ' '. " WHERE VBELN = '0000007895'.
CLEAR NODE.
NODE-NODE_KEY = IT_VBAK-VBELN. " Key of the node
CLEAR NODE-RELATKEY. " Special case: A root node has no parent
CLEAR NODE-RELATSHIP. " node.
NODE-HIDDEN = ' '. " The node is visible,
NODE-DISABLED = ' '. " selectable,
NODE-EXPANDER = 'X'.
NODE-ISFOLDER = ' '. " a folder.
CLEAR NODE-N_IMAGE. " Folder-/ Leaf-Symbol in state
CLEAR NODE-EXP_IMAGE. " Folder-/ Leaf-Symbol in state
CLEAR NODE-EXP_IMAGE.
APPEND NODE TO NODE_TABLE.
CLEAR ITEM.
ITEM-NODE_KEY = IT_VBAK-VBELN.
ITEM-ITEM_NAME = 'COL1'. " Item of Column 'Column1'
ITEM-CLASS = CL_GUI_COLUMN_TREE=>ITEM_CLASS_CHECKBOX. " Text Item
ITEM-EDITABLE = 'X'.
ITEM-TEXT = IT_VBAK-VBELN.
APPEND ITEM TO ITEM_TABLE.
CLEAR ITEM.
ITEM-NODE_KEY = IT_VBAK-VBELN.
ITEM-ITEM_NAME = 'COL2'. " Item of Column 'Column1'
ITEM-CLASS = CL_GUI_COLUMN_TREE=>ITEM_CLASS_TEXT. " Text Item
ITEM-TEXT = IT_VBAK-ERDAT.
APPEND ITEM TO ITEM_TABLE.
CLEAR ITEM.
ITEM-NODE_KEY = IT_VBAK-VBELN.
ITEM-ITEM_NAME = 'COL3'. " Item of Column 'Column1'
ITEM-CLASS = CL_GUI_COLUMN_TREE=>ITEM_CLASS_TEXT. " Text Item
ITEM-TEXT = IT_VBAK-ERZET.
APPEND ITEM TO ITEM_TABLE.
CLEAR ITEM.
ITEM-NODE_KEY = IT_VBAK-VBELN.
ITEM-ITEM_NAME = 'COL4'. " Item of Column 'Column1'
ITEM-CLASS = CL_GUI_COLUMN_TREE=>ITEM_CLASS_TEXT. " Text Item
ITEM-TEXT = IT_VBAK-ERNAM.
APPEND ITEM TO ITEM_TABLE.
CLEAR ITEM.
ITEM-NODE_KEY = IT_VBAK-VBELN.
ITEM-ITEM_NAME = 'COL5'. " Item of Column 'Column1'
ITEM-CLASS = CL_GUI_COLUMN_TREE=>ITEM_CLASS_TEXT. " Text Item
ITEM-TEXT = IT_VBAK-ANGDT.
APPEND ITEM TO ITEM_TABLE.
ENDLOOP.
CALL METHOD G_ALV->ADD_NODES_AND_ITEMS
EXPORTING
NODE_TABLE = NODE_TABLE
ITEM_TABLE = ITEM_TABLE
ITEM_TABLE_STRUCTURE_NAME = 'MTREEITM'
.
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. " BUILD_TREE
----
FORM create_cols *
----
Form Routines Used For creating columns in the tree display *
----
FORM CREATE_COLS.
PERFORM ADD_COLUMN USING 'COL2' 20 'ERDAT'.
PERFORM ADD_COLUMN USING 'COL3' 20 'ERZET'.
PERFORM ADD_COLUMN USING 'COL4' 25 'ERNAM'.
PERFORM ADD_COLUMN USING 'COL5' 25 'AUGAT'.
ENDFORM. " CREATE_COLS
----
FORM add_column *
----
Form routine used to call add_column method *
----
--> L_COL *
--> L_WIDTH *
--> L_TXT *
----
FORM ADD_COLUMN USING L_COL TYPE TV_ITMNAME
L_WIDTH TYPE I
L_TXT TYPE TV_HEADING.
CALL METHOD G_ALV->ADD_COLUMN
EXPORTING
NAME = L_COL
WIDTH = L_WIDTH
HEADER_TEXT = L_TXT
EXCEPTIONS
COLUMN_EXISTS = 1
ILLEGAL_COLUMN_NAME = 2
TOO_MANY_COLUMNS = 3
ILLEGAL_ALIGNMENT = 4
DIFFERENT_COLUMN_TYPES = 5
CNTL_SYSTEM_ERROR = 6
FAILED = 7
PREDECESSOR_COLUMN_NOT_FOUND = 8.
IF SY-SUBRC <> 0.
MESSAGE ID SY-MSGID TYPE 'I' NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
STOP.
ENDIF.
ENDFORM. "add_column
&----
*& Form EXPAND_NODE
&----
text
----
FORM EXPAND_NODE .
LOOP AT IT_VBAP WHERE VBELN = '0000007895'.
ADD 1 TO G_NODEKEY.
CLEAR UNODE.
UNODE-NODE_KEY = G_NODEKEY.
UNODE-RELATKEY = '0000007895'.
UNODE-RELATSHIP = CL_GUI_COLUMN_TREE=>RELAT_LAST_CHILD.
UNODE-HIDDEN = ' '.
UNODE-DISABLED = ' '.
UNODE-U_ALL = 'X'.
APPEND UNODE TO UPDATE_NODE.
CLEAR ITEM.
ITEM-NODE_KEY = G_NODEKEY.
ITEM-ITEM_NAME = 'COL1'. " Item of Column 'Column1'
ITEM-CLASS = CL_GUI_COLUMN_TREE=>ITEM_CLASS_CHECKBOX. " Text Item
ITEM-EDITABLE = 'X'.
ITEM-TEXT = IT_VBAP-VBELN.
APPEND ITEM TO UPDATE_TABLE.
CLEAR ITEM.
ITEM-NODE_KEY = G_NODEKEY.
ITEM-ITEM_NAME = 'COL2'. " Item of Column 'Column1'
ITEM-CLASS = CL_GUI_COLUMN_TREE=>ITEM_CLASS_TEXT. " Text Item
ITEM-TEXT = IT_VBAP-POSNR.
APPEND ITEM TO UPDATE_TABLE.
CLEAR ITEM.
ITEM-NODE_KEY = G_NODEKEY.
ITEM-ITEM_NAME = 'COL3'. " Item of Column 'Column1'
ITEM-CLASS = CL_GUI_COLUMN_TREE=>ITEM_CLASS_TEXT. " Text Item
ITEM-TEXT = IT_VBAP-MATNR.
APPEND ITEM TO UPDATE_TABLE.
CLEAR ITEM.
ITEM-NODE_KEY = G_NODEKEY.
ITEM-ITEM_NAME = 'COL4'. " Item of Column 'Column1'
ITEM-CLASS = CL_GUI_COLUMN_TREE=>ITEM_CLASS_TEXT. " Text Item
ITEM-TEXT = IT_VBAP-MATWA.
APPEND ITEM TO UPDATE_TABLE.
CLEAR ITEM.
ITEM-NODE_KEY = G_NODEKEY.
ITEM-ITEM_NAME = 'COL5'. " Item of Column 'Column1'
ITEM-CLASS = CL_GUI_COLUMN_TREE=>ITEM_CLASS_TEXT. " Text Item
ITEM-TEXT = IT_VBAP-PMATN.
APPEND ITEM TO UPDATE_TABLE.
ENDLOOP.
MOVE-CORRESPONDING NODE_TABLE TO UPDATE_NODE[].
CALL METHOD G_ALV->UPDATE_NODES_AND_ITEMS
EXPORTING
NODE_TABLE = UPDATE_NODE
ITEM_TABLE = UPDATE_TABLE
ITEM_TABLE_STRUCTURE_NAME = 'MTREEITM'
EXCEPTIONS
FAILED = 1
CNTL_SYSTEM_ERROR = 2
ERROR_IN_TABLES = 3
DP_ERROR = 4
TABLE_STRUCTURE_NAME_NOT_FOUND = 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.
ENDFORM. " EXPAND_NODE
FORM BUILD_TREES USING NODE_KEY.
REFRESH : NODE_TABLE, ITEM_TABLE.
LOOP AT IT_VBAP WHERE VBELN = NODE_KEY.
ADD 1 TO G_NODEKEY.
CLEAR NODE.
NODE-NODE_KEY = G_NODEKEY.
NODE-RELATKEY = NODE_KEY.
NODE-RELATSHIP = CL_GUI_COLUMN_TREE=>RELAT_LAST_CHILD.
NODE-HIDDEN = ' '.
NODE-DISABLED = ' '.
NODE-ISFOLDER = 'X'.
APPEND NODE TO NODE_TABLE.
CLEAR ITEM.
ITEM-NODE_KEY = G_NODEKEY.
ITEM-ITEM_NAME = 'COL1'. " Item of Column 'Column1'
ITEM-CLASS = CL_GUI_COLUMN_TREE=>ITEM_CLASS_CHECKBOX. " Text Item
ITEM-EDITABLE = 'X'.
ITEM-TEXT = IT_VBAK-VBELN.
APPEND ITEM TO ITEM_TABLE.
CLEAR ITEM.
ITEM-NODE_KEY = G_NODEKEY.
ITEM-ITEM_NAME = 'COL2'. " Item of Column 'Column1'
ITEM-CLASS = CL_GUI_COLUMN_TREE=>ITEM_CLASS_TEXT. " Text Item
ITEM-TEXT = IT_VBAP-POSNR.
APPEND ITEM TO ITEM_TABLE.
CLEAR ITEM.
ITEM-NODE_KEY = G_NODEKEY.
ITEM-ITEM_NAME = 'COL3'. " Item of Column 'Column1'
ITEM-CLASS = CL_GUI_COLUMN_TREE=>ITEM_CLASS_TEXT. " Text Item
ITEM-TEXT = IT_VBAP-MATNR.
APPEND ITEM TO ITEM_TABLE.
CLEAR ITEM.
ITEM-NODE_KEY = G_NODEKEY.
ITEM-ITEM_NAME = 'COL4'. " Item of Column 'Column1'
ITEM-CLASS = CL_GUI_COLUMN_TREE=>ITEM_CLASS_TEXT. " Text Item
ITEM-TEXT = IT_VBAP-MATWA.
APPEND ITEM TO ITEM_TABLE.
CLEAR ITEM.
ITEM-NODE_KEY = G_NODEKEY.
ITEM-ITEM_NAME = 'COL5'. " Item of Column 'Column1'
ITEM-CLASS = CL_GUI_COLUMN_TREE=>ITEM_CLASS_TEXT. " Text Item
ITEM-TEXT = IT_VBAP-PMATN.
APPEND ITEM TO ITEM_TABLE.
ENDLOOP.
CALL METHOD G_ALV->ADD_NODES_AND_ITEMS
EXPORTING
NODE_TABLE = NODE_TABLE
ITEM_TABLE = ITEM_TABLE
ITEM_TABLE_STRUCTURE_NAME = 'MTREEITM'
.
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. " BUILD_TREE
&----
*& Form EXPAND_ALL
&----
text
----
FORM EXPAND_ALL .
data : n_key type TV_NODEKEY.
loop at it_vbak where vbeln <> ''.
n_key = it_vbak-vbeln.
call method EVENT_RECEIVER->expandall
exporting
node_key = n_key.
endloop.
CALL METHOD G_ALV->EXPAND_ROOT_NODES
EXPORTING
LEVEL_COUNT = 2
EXPAND_SUBTREE = 'X'
.
IF SY-SUBRC <> 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.