Thursday, June 5, 2008

Simple ALV Tree structure program

TYPE-POOLS : fibs,stree.
DATA : t_node TYPE snodetext.

DATA : it_node LIKE TABLE OF t_node,
wa_node LIKE t_node.

*Internal Table declarations
DATA: BEGIN OF fs_scarr,
carrid LIKE scarr-carrid,
END OF fs_scarr.

DATA:BEGIN OF fs_spfli,
carrid LIKE spfli-carrid,
connid LIKE spfli-connid,
END OF fs_spfli.

DATA:BEGIN OF fs_sflight,
carrid LIKE sflight-carrid,
connid LIKE sflight-connid,
fldate LIKE sflight-fldate,
END OF fs_sflight.

DATA:BEGIN OF fs_sbook,
carrid LIKE sbook-carrid,
connid LIKE sbook-connid,
fldate LIKE sbook-fldate,
bookid LIKE sbook-bookid,
END OF fs_sbook.

DATA:t_scarr LIKE TABLE OF fs_scarr,
t_spfli LIKE TABLE OF fs_spfli,
t_sflight LIKE TABLE OF fs_sflight,
t_sbook LIKE TABLE OF fs_sbook.
********************************************************
START-OF-SELECTION.
PERFORM get_data.
PERFORM build_tree.
PERFORM display_tree.
*&---------------------------------------------------------------------*
*& Form get_data
*&---------------------------------------------------------------------*
FORM get_data .

SELECT carrid
FROM scarr
INTO TABLE t_scarr.

SELECT carrid
connid
FROM spfli
INTO TABLE t_spfli
FOR ALL ENTRIES IN t_scarr
WHERE carrid EQ t_scarr-carrid.

SELECT carrid
connid
fldate
FROM sflight
INTO TABLE t_sflight
FOR ALL ENTRIES IN t_spfli
WHERE carrid EQ t_spfli-carrid
AND connid EQ t_spfli-connid.

SELECT carrid
connid
fldate
bookid
FROM sbook
INTO TABLE t_sbook
FOR ALL ENTRIES IN t_sflight
WHERE carrid EQ t_sflight-carrid
AND connid EQ t_sflight-connid
AND fldate EQ t_sflight-fldate.

ENDFORM. " get_data
*&---------------------------------------------------------------------*
*& Form build_tree
*----------------------------------------------------------------------*

FORM build_tree .
CLEAR: it_node,
wa_node.

SORT: t_scarr BY carrid,
t_spfli BY carrid connid,
t_sflight BY carrid connid fldate,
t_sbook BY carrid connid fldate bookid.

wa_node-type = 'T'.
wa_node-name = 'Flight Details'.
wa_node-tlevel = '01'.
wa_node-nlength = '15'.
wa_node-color = '4'.
wa_node-text = 'Flight'.
wa_node-tlength ='20'.
wa_node-tcolor = 3.
APPEND wa_node TO it_node.
CLEAR wa_node.

LOOP AT t_scarr INTO fs_scarr.

wa_node-type = 'P'.
wa_node-name = 'CARRID'.
wa_node-tlevel = '02'.
wa_node-nlength = '8'.
wa_node-color = '1'.
wa_node-text = fs_scarr-carrid.
wa_node-tlength ='20'.
wa_node-tcolor = 4.
APPEND wa_node TO it_node.
CLEAR wa_node.

LOOP AT t_spfli INTO fs_spfli WHERE carrid EQ fs_scarr-carrid.
wa_node-type = 'P'.
wa_node-name = 'CONNID'.
wa_node-tlevel = '03'.
wa_node-nlength = '8'.
wa_node-color = '1'.
wa_node-text = fs_spfli-connid.
wa_node-tlength ='20'.
wa_node-tcolor = 4.
APPEND wa_node TO it_node.
CLEAR wa_node.

LOOP AT t_sflight INTO fs_sflight WHERE carrid EQ fs_spfli-carrid
AND connid EQ fs_spfli-connid.

wa_node-type = 'P'.
wa_node-name = 'FLDATE'.
wa_node-tlevel = '04'.
wa_node-nlength = '8'.
wa_node-color = '3'.
wa_node-text = fs_sflight-fldate.
wa_node-tlength ='20'.
wa_node-tcolor = 4.
APPEND wa_node TO it_node.
CLEAR wa_node.

LOOP AT t_sbook INTO fs_sbook WHERE carrid EQ fs_sflight-carrid
AND connid EQ fs_sflight-connid
AND fldate EQ fs_sflight-fldate.
wa_node-type = 'P'.
wa_node-name = 'BOOkID'.
wa_node-tlevel = '05'.
wa_node-nlength = '8'.
wa_node-color = '1'.
wa_node-text = fs_sbook-bookid.
wa_node-tlength ='20'.
wa_node-tcolor = 4.
APPEND wa_node TO it_node.
CLEAR wa_node.

ENDLOOP.
ENDLOOP.
ENDLOOP.
ENDLOOP.

ENDFORM. " build_tree
*&---------------------------------------------------------------------*
*& Form display_tree
*----------------------------------------------------------------------*

FORM display_tree .

CALL FUNCTION 'RS_TREE_CONSTRUCT'
* EXPORTING
* INSERT_ID = '000000'
* RELATIONSHIP = ' '
* LOG = LOG
TABLES
nodetab = it_node
* EXCEPTIONS
* TREE_FAILURE = 1
* ID_NOT_FOUND = 2
* WRONG_RELATIONSHIP = 3
.

CALL FUNCTION 'RS_TREE_LIST_DISPLAY'
EXPORTING
callback_program = sy-repid
check_duplicate_name = '1'
color_of_node = '4'
color_of_mark = '3'
color_of_link = '1'
color_of_match = '5'
node_length = 30
text_length = 75
use_control = stree_use_list
* IMPORTING
* F15 = F15
.

ENDFORM. " display_tree

No comments: