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

Tutorial on ALV tree

Former Member
0 Likes
1,137

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

4 REPLIES 4
Read only

Former Member
0 Likes
613

Hi,

Pls verify the link:

http://www.sapdevelopment.co.uk/reporting/alv/alvtree.htm

Pls reward points.

Regards,

Ameet

Read only

Former Member
0 Likes
613

hi,

see the system defined programs start with "saptlist_"

search for the programs in abap editor(se38) saptlist_*

rgds,

bharat.

Read only

Former Member
0 Likes
613

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.

Read only

Former Member
0 Likes
613

Hi Imran,

Check these demo Programs

SAPTLIST_TREE_CONTROL_DEMO

SAPCOLUMN_TREE_CONTROL_DEMO

SAPSIMPLE_TREE_CONTROL_DEMO

Regards

Arun