Application Development and Automation Discussions
Join the discussions or start your own on all things application development, including tools and APIs, programming models, and keeping your skills sharp.
cancel
Showing results for 
Search instead for 
Did you mean: 
Read only

Dialog Programming

ashok_kumar24
Contributor
0 Likes
567

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

1 ACCEPTED SOLUTION
Read only

Former Member
0 Likes
537

Hi,

check the program SAPSIMPLE_TREE_CONTROL_DEMO in se80.

this will help a lot.

regards

Sandeep

3 REPLIES 3
Read only

Former Member
0 Likes
537

check transaction <b>DWDM</b>

for lots of ex.

Read only

Former Member
0 Likes
538

Hi,

check the program SAPSIMPLE_TREE_CONTROL_DEMO in se80.

this will help a lot.

regards

Sandeep

Read only

Former Member
0 Likes
537

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.