‎2007 Jul 23 6:15 AM
Hi Folks,
I need a tutorial / example which explains how to create ALV tree. Kindly let me know if there is any available with you ?
Regards,
Imran
‎2007 Jul 23 6:19 AM
Hi,
Pls verify the link:
http://www.sapdevelopment.co.uk/reporting/alv/alvtree.htm
Pls reward points.
Regards,
Ameet
‎2007 Jul 23 6:23 AM
hi,
see the system defined programs start with "saptlist_"
search for the programs in abap editor(se38) saptlist_*
rgds,
bharat.
‎2007 Jul 23 6:28 AM
HI,
use this code.....
screen:...................................
PROCESS BEFORE OUTPUT.
MODULE STATUS_0100.
*
PROCESS AFTER INPUT.
MODULE CLOSE_100 AT EXIT-COMMAND.
MODULE USER_COMMAND_0100.
data declaration.......................
&----
& Include MZSANKET_OCX_TREE_ALVTOP Module poo
*& *
&----
PROGRAM SAPMZSANKET_OCX_TREE_ALV .
DATA: OK_CODE LIKE SY-UCOMM,
URL(256). " For URL.
DATA: CONTAINER TYPE REF TO CL_GUI_CUSTOM_CONTAINER, " Main container
SPLITTER TYPE REF TO CL_GUI_SPLITTER_CONTAINER, " Splitter container
SUB_CONTAINER1 TYPE REF TO CL_GUI_CONTAINER, " Sub-container1
GRID_CONTAINER TYPE REF TO CL_GUI_SPLITTER_CONTAINER, " GRID_CONTAINER
SUB_SPLITTER TYPE REF TO CL_GUI_SPLITTER_CONTAINER, " Splitter container
SUB_CONTAINER2 TYPE REF TO CL_GUI_CONTAINER, " Sub-container2
GRID_CONTAINER1 TYPE REF TO CL_GUI_CONTAINER, " Grid-container1
GRID_CONTAINER2 TYPE REF TO CL_GUI_CONTAINER, " Grid-container2
PICTURE TYPE REF TO CL_GUI_PICTURE, " Picture
G_TREE TYPE REF TO CL_GUI_SIMPLE_TREE, " Tree
ALV TYPE REF TO CL_GUI_ALV_GRID, " ALV Grid
GS_LAYOUT TYPE LVC_S_LAYO,
ALV1 TYPE REF TO CL_GUI_ALV_GRID, " ALV Grid1
GS_LAYOUT1 TYPE LVC_S_LAYO.
DATA: EVENTS TYPE CNTL_SIMPLE_EVENTS, " Event table
WA_EVENTS TYPE CNTL_SIMPLE_EVENT. " WA for Event table
DATA: T_NODE LIKE MTREESNODE OCCURS 0 WITH HEADER LINE. " Node table
DATA: I_SCARR TYPE TABLE OF SCARR, " Info Airline i_table
WA_SCARR TYPE SCARR ,
I_SPFLI TYPE TABLE OF SPFLI, " Flight schedule i_table
WA_SPFLI TYPE SPFLI,
I_SFLIGHT TYPE TABLE OF SFLIGHT, " Flight info
WA_SFLIGHT TYPE SFLIGHT.
----
CLASS NODE_DATA DEFINATION
----
*
----
CLASS NODE_DATA DEFINITION.
PUBLIC SECTION.
CLASS-METHODS :
NODE_DBL FOR EVENT NODE_DOUBLE_CLICK OF CL_GUI_SIMPLE_TREE
IMPORTING NODE_KEY.
ENDCLASS. "NODE_DATA DEFINITION
----
CLASS NODE_DATA IMPLEMENTATION
----
*
----
CLASS NODE_DATA IMPLEMENTATION.
METHOD NODE_DBL.
*Get Picture free
IF PICTURE IS NOT INITIAL.
PERFORM FREE_PICTURE.
ENDIF.
*Set Grid
PERFORM SET_ALV USING NODE_KEY.
ENDMETHOD. "NODE_DBL
ENDCLASS. "NODE_DATA IMPLEMENTATION
PBO...............................
&----
*& Include MZSANKET_OCX_TREE_ALVO01 *
&----
&----
*& Module STATUS_0100 OUTPUT
&----
text
----
MODULE
STATUS_0100 OUTPUT.
SET PF-STATUS 'SANKET'.
SET TITLEBAR 'SANKET'.
*Main container
IF CONTAINER IS INITIAL.
CREATE OBJECT CONTAINER
EXPORTING
CONTAINER_NAME = 'CONTAINER'
STYLE = CL_GUI_CONTROL=>WS_THICKFRAME " For border
EXCEPTIONS
CNTL_ERROR = 1
CNTL_SYSTEM_ERROR = 2
CREATE_ERROR = 3
LIFETIME_ERROR = 4
LIFETIME_DYNPRO_DYNPRO_LINK = 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.
*Create splitter container
CREATE OBJECT SPLITTER
EXPORTING
PARENT = CONTAINER
ROWS = 1
COLUMNS = 2
EXCEPTIONS
CNTL_ERROR = 1
CNTL_SYSTEM_ERROR = 2
OTHERS = 3 .
IF SY-SUBRC <> 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
*Get SUB_CONTAINER1
CALL METHOD SPLITTER->GET_CONTAINER
EXPORTING
ROW = 1
COLUMN = 1
RECEIVING
CONTAINER = SUB_CONTAINER1.
IF SY-SUBRC <> 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
*Set column width
CALL METHOD SPLITTER->SET_COLUMN_WIDTH
EXPORTING
ID = 1
WIDTH = 25
EXCEPTIONS
CNTL_ERROR = 1
CNTL_SYSTEM_ERROR = 2
OTHERS = 3.
IF SY-SUBRC <> 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
*First column fixed(not-movable)
CALL METHOD SPLITTER->SET_COLUMN_SASH
EXPORTING
ID = 1
TYPE = 1
VALUE = 0
EXCEPTIONS
CNTL_ERROR = 1
CNTL_SYSTEM_ERROR = 2
OTHERS = 3.
IF SY-SUBRC <> 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
*Get Tree
PERFORM SET_TREE.
*Get SUB_CONTAINER2
CALL METHOD SPLITTER->GET_CONTAINER
EXPORTING
ROW = 1
COLUMN = 2
RECEIVING
CONTAINER = SUB_CONTAINER2.
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 splitter container
CREATE OBJECT SUB_SPLITTER
EXPORTING
PARENT = SUB_CONTAINER2
ROWS = 2
COLUMNS = 1
EXCEPTIONS
CNTL_ERROR = 1
CNTL_SYSTEM_ERROR = 2
OTHERS = 3 .
IF SY-SUBRC <> 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
*Get SUB_CONTAINER1
CALL METHOD SUB_SPLITTER->GET_CONTAINER
EXPORTING
ROW = 1
COLUMN = 1
RECEIVING
CONTAINER = GRID_CONTAINER1.
IF SY-SUBRC <> 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
*Get Tree
PERFORM SET_TREE.
*Get SUB_CONTAINER2
CALL METHOD SUB_SPLITTER->GET_CONTAINER
EXPORTING
ROW = 2
COLUMN = 1
RECEIVING
CONTAINER = GRID_CONTAINER2.
IF SY-SUBRC <> 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
*Set column width
CALL METHOD SUB_SPLITTER->SET_ROW_HEIGHT
EXPORTING
ID = 1
HEIGHT = 100
EXCEPTIONS
CNTL_ERROR = 1
CNTL_SYSTEM_ERROR = 2
OTHERS = 3.
IF SY-SUBRC <> 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
*First column fixed(not-movable)
CALL METHOD SUB_SPLITTER->SET_ROW_SASH
EXPORTING
ID = 1
TYPE = 1
VALUE = 0
EXCEPTIONS
CNTL_ERROR = 1
CNTL_SYSTEM_ERROR = 2
OTHERS = 3.
IF SY-SUBRC <> 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
*************
*Get picture
PERFORM SET_PICTURE.
ENDIF.
ENDMODULE. " STATUS_0100 OUTPUT
sub-routine.........................
&----
*& Include MZSANKET_OCX_TREE_ALVF01 *
&----
&----
*& Form SET_PICTURE
&----
text
----
--> p1 text
<-- p2 text
----
FORM SET_PICTURE .
DATA: QUERY_TABLE LIKE W3QUERY OCCURS 1 WITH HEADER LINE, " Query string for WWW server
HTML_TABLE LIKE W3HTML OCCURS 1, " Contains HTML for WWW client
RETURN_CODE LIKE W3PARAM-RET_CODE, " Parameter definitions for various function modules
CONTENT_TYPE LIKE W3PARAM-CONT_TYPE,
CONTENT_LENGTH LIKE W3PARAM-CONT_LEN,
PIC_DATA LIKE W3MIME OCCURS 0, " Contains MIME data for WWW client
PIC_SIZE TYPE I.
REFRESH QUERY_TABLE.
QUERY_TABLE-NAME = '_OBJECT_ID'. " Picture name
QUERY_TABLE-VALUE = 'TRVPICTURE02'. " Picture value
APPEND QUERY_TABLE.
*Get image
CREATE OBJECT PICTURE
EXPORTING
PARENT = GRID_CONTAINER1
EXCEPTIONS
ERROR = 1
OTHERS = 2 .
CALL FUNCTION 'WWW_GET_MIME_OBJECT'
TABLES
QUERY_STRING = QUERY_TABLE
HTML = HTML_TABLE
MIME = PIC_DATA
CHANGING
RETURN_CODE = RETURN_CODE
CONTENT_TYPE = CONTENT_TYPE
CONTENT_LENGTH = CONTENT_LENGTH
EXCEPTIONS
OBJECT_NOT_FOUND = 1
PARAMETER_NOT_FOUND = 2
OTHERS = 3.
IF SY-SUBRC = 0.
PIC_SIZE = CONTENT_LENGTH.
ENDIF.
CALL FUNCTION 'DP_CREATE_URL'
EXPORTING
TYPE = 'IMAGE'
SUBTYPE = CNDP_SAP_TAB_UNKNOWN
SIZE = PIC_SIZE
TABLES
DATA = PIC_DATA
CHANGING
URL = URL
EXCEPTIONS
DP_INVALID_PARAMETER = 1
DP_ERROR_PUT_TABLE = 2
DP_ERROR_GENERAL = 3
OTHERS = 4.
CALL METHOD PICTURE->LOAD_PICTURE_FROM_URL
EXPORTING
URL = URL
EXCEPTIONS
ERROR = 1
OTHERS = 2.
*Display mode of picture
CALL METHOD PICTURE->SET_DISPLAY_MODE
EXPORTING
DISPLAY_MODE = CL_GUI_PICTURE=>DISPLAY_MODE_STRETCH
EXCEPTIONS
ERROR = 1
OTHERS = 2.
ENDFORM. " SET_PICTURE
&----
*& Form SET_TREE
&----
text
----
--> p1 text
<-- p2 text
----
FORM SET_TREE .
*Create tree
IF G_TREE IS INITIAL.
CREATE OBJECT G_TREE
EXPORTING
PARENT = SUB_CONTAINER1
NODE_SELECTION_MODE = 1
EXCEPTIONS
LIFETIME_ERROR = 1
CNTL_SYSTEM_ERROR = 2
CREATE_ERROR = 3
FAILED = 4
ILLEGAL_NODE_SELECTION_MODE = 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.
*Events in G_TREE
WA_EVENTS-EVENTID = CL_GUI_SIMPLE_TREE=>EVENTID_NODE_DOUBLE_CLICK.
WA_EVENTS-APPL_EVENT = 'X'.
APPEND WA_EVENTS TO EVENTS.
*Register events
CALL METHOD G_TREE->SET_REGISTERED_EVENTS
EXPORTING
EVENTS = EVENTS
EXCEPTIONS
CNTL_ERROR = 1
CNTL_SYSTEM_ERROR = 2
ILLEGAL_EVENT_COMBINATION = 3
OTHERS = 4.
**Set handler
SET HANDLER NODE_DATA=>NODE_DBL FOR G_TREE.
*Fill I_SCARR
SELECT CARRID CARRNAME FROM SCARR
INTO CORRESPONDING FIELDS OF TABLE I_SCARR.
*Primary node
CLEAR: T_NODE,T_NODE[].
T_NODE-NODE_KEY = 'VIKALP'.
T_NODE-EXPANDER = 'X'.
T_NODE-EXP_IMAGE = '@AV@'. " Image when folder open
T_NODE-N_IMAGE = '@AV@'. " Image when folder not open
T_NODE-TEXT = 'Airline name'.
APPEND T_NODE.
*Secondary nodes
LOOP AT I_SCARR INTO WA_SCARR.
CLEAR: T_NODE.
T_NODE-TEXT = WA_SCARR-CARRNAME.
T_NODE-NODE_KEY = WA_SCARR-CARRID.
T_NODE-EXPANDER = ' '.
T_NODE-RELATKEY = 'VIKALP'.
T_NODE-RELATSHIP = CL_GUI_SIMPLE_TREE=>RELAT_LAST_CHILD.
T_NODE-N_IMAGE = '@AV@'.
APPEND T_NODE.
ENDLOOP.
*To add nodes
CALL METHOD G_TREE->ADD_NODES
EXPORTING
TABLE_STRUCTURE_NAME = 'MTREESNODE'
NODE_TABLE = T_NODE[]
EXCEPTIONS
ERROR_IN_NODE_TABLE = 1
FAILED = 2
DP_ERROR = 3
TABLE_STRUCTURE_NAME_NOT_FOUND = 4
OTHERS = 5.
ENDIF.
ENDFORM. " SET_TREE
&----
*& Form SET_ALV
&----
text
----
--> p1 text
<-- p2 text
----
FORM SET_ALV USING NODE_KEY.
CLEAR: I_SPFLI,I_SFLIGHT.
*Fill I_SPFLI
SELECT CARRID CONNID COUNTRYFR CITYFROM AIRPFROM COUNTRYTO CITYTO AIRPTO FLTIME
DEPTIME ARRTIME DISTANCE DISTID PERIOD
FROM SPFLI
INTO CORRESPONDING FIELDS OF TABLE I_SPFLI
WHERE CARRID = NODE_KEY.
*Fill I_SFLIGHT
SELECT CARRID CONNID FLDATE PRICE CURRENCY PLANETYPE SEATSMAX SEATSOCC
PAYMENTSUM SEATSMAX_B SEATSOCC_B SEATSMAX_F SEATSOCC_F
FROM SFLIGHT
INTO CORRESPONDING FIELDS OF TABLE I_SFLIGHT
WHERE CARRID = NODE_KEY.
*Free grid
IF ALV IS NOT INITIAL.
PERFORM FREE_GRID.
ENDIF.
*Get ALV
IF ALV IS INITIAL.
CALL METHOD SUB_SPLITTER->SET_ROW_HEIGHT
EXPORTING
ID = 1
HEIGHT = 50
EXCEPTIONS
CNTL_ERROR = 1
CNTL_SYSTEM_ERROR = 2
OTHERS = 3.
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 ALV
EXPORTING
I_PARENT = GRID_CONTAINER1
EXCEPTIONS
ERROR_CNTL_CREATE = 1
ERROR_CNTL_INIT = 2
ERROR_CNTL_LINK = 3
ERROR_DP_CREATE = 4
OTHERS = 5 .
IF SY-SUBRC <> 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
*Title of grid
GS_LAYOUT-GRID_TITLE = 'Flight status'(100).
*For display ALV first time
CALL METHOD ALV->SET_TABLE_FOR_FIRST_DISPLAY
EXPORTING
I_STRUCTURE_NAME = 'SPFLI'
IS_LAYOUT = GS_LAYOUT
CHANGING
IT_OUTTAB = I_SPFLI
EXCEPTIONS
INVALID_PARAMETER_COMBINATION = 1
PROGRAM_ERROR = 2
TOO_MANY_LINES = 3
OTHERS = 4.
IF SY-SUBRC <> 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
****************
*Free grid
IF ALV1 IS NOT INITIAL.
PERFORM FREE_GRID.
ENDIF.
CREATE OBJECT ALV1
EXPORTING
I_PARENT = GRID_CONTAINER2
EXCEPTIONS
ERROR_CNTL_CREATE = 1
ERROR_CNTL_INIT = 2
ERROR_CNTL_LINK = 3
ERROR_DP_CREATE = 4
OTHERS = 5 .
IF SY-SUBRC <> 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
*Title of grid
GS_LAYOUT1-GRID_TITLE = 'Booking info'(100).
*For display ALV first time
CALL METHOD ALV1->SET_TABLE_FOR_FIRST_DISPLAY
EXPORTING
I_STRUCTURE_NAME = 'SFLIGHT'
IS_LAYOUT = GS_LAYOUT1
CHANGING
IT_OUTTAB = I_SFLIGHT
EXCEPTIONS
INVALID_PARAMETER_COMBINATION = 1
PROGRAM_ERROR = 2
TOO_MANY_LINES = 3
OTHERS = 4.
IF SY-SUBRC <> 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
****************
ENDIF.
ENDFORM. " SET_ALV
&----
*& Form FREE_PICTURE
&----
text
----
--> p1 text
<-- p2 text
----
FORM FREE_PICTURE .
*Free Picture
CALL METHOD PICTURE->FREE
EXCEPTIONS
CNTL_ERROR = 1
CNTL_SYSTEM_ERROR = 2
OTHERS = 3.
IF SY-SUBRC <> 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
CLEAR PICTURE.
ENDFORM. " FREE_PICTURE
&----
*& Form FREE_GRID
&----
text
----
--> p1 text
<-- p2 text
----
FORM FREE_GRID .
*Free grid
CALL METHOD ALV->FREE
EXCEPTIONS
CNTL_ERROR = 1
CNTL_SYSTEM_ERROR = 2
OTHERS = 3.
IF SY-SUBRC <> 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
CLEAR ALV.
*Free grid
CALL METHOD ALV1->FREE
EXCEPTIONS
CNTL_ERROR = 1
CNTL_SYSTEM_ERROR = 2
OTHERS = 3.
IF SY-SUBRC <> 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
CLEAR ALV1.
ENDFORM. " FREE_GRID
pai.................
&----
*& Include MZSANKET_OCX_TREE_ALVI01 *
&----
&----
*& Module USER_COMMAND_0100 INPUT
&----
text
----
MODULE USER_COMMAND_0100 INPUT.
ENDMODULE. " USER_COMMAND_0100 INPUT
&----
*& Module CLOSE_100 INPUT
&----
text
----
MODULE CLOSE_100 INPUT.
LEAVE TO SCREEN 0.
ENDMODULE. " CLOSE_100 INPUT
USe this code.
If useful Reward me with points.
Thanks
Sanket.
‎2007 Jul 23 6:42 AM
Hi Imran,
Check these demo Programs
SAPTLIST_TREE_CONTROL_DEMO
SAPCOLUMN_TREE_CONTROL_DEMO
SAPSIMPLE_TREE_CONTROL_DEMO
Regards
Arun