Escolar Documentos
Profissional Documentos
Cultura Documentos
REPORT Z_ALV_TREE.
*------------------------------------------------------------------*
* DECLARACION DE TYPES
*------------------------------------------------------------------*
TYPES: BEGIN OF TY_SPFLI,
CARRID TYPE SPFLI-CARRID,
CONNID TYPE SPFLI-CONNID,
COUNTRYFR TYPE SPFLI-COUNTRYFR,
CITYFROM TYPE SPFLI-CITYFROM,
AIRPFROM TYPE SPFLI-AIRPFROM,
COUNTRYTO TYPE SPFLI-COUNTRYTO,
CITYTO TYPE SPFLI-CITYTO,
END OF TY_SPFLI.
*-----------------------------------------------------------------*
* DECLARACION DE TABLAS INTERNAS
*-----------------------------------------------------------------*
DATA: T_SPFLI TYPE STANDARD TABLE OF TY_SPFLI
WITH HEADER LINE,
TAB_TREE TYPE STANDARD TABLE OF TY_SPFLI
WITH HEADER LINE,
T_TREE TYPE STANDARD TABLE OF TY_SPFLI
WITH HEADER LINE,
T_HEADER TYPE STANDARD TABLE OF TY_HEADER
WITH HEADER LINE.
*-----------------------------------------------------------------*
* DECLARACION DE VARIABLES
*-----------------------------------------------------------------*
DATA: G_ALV_TREE TYPE REF TO CL_GUI_ALV_TREE,
L_HIERARCHY_HEADER TYPE TREEV_HHDR,
GS_FIELDCAT TYPE LVC_S_FCAT,
GT_FIELDCAT_TREE TYPE LVC_T_FCAT,
G_CUSTOM_CONTAINER TYPE REF TO CL_GUI_CUSTOM_CONTAINER.
*-----------------------------------------------------------------*
* DECLARACION DE FIELD-SYMBOLS
*-----------------------------------------------------------------*
FIELD-SYMBOLS: <HEADER> LIKE LINE OF T_HEADER,
<SPFLI> LIKE LINE OF T_SPFLI.
*-----------------------------------------------------------------*
* SELECTION-SCREEN
*-----------------------------------------------------------------*
*-----------------------------------------------------------------*
* START-OF-SELECTION
*-----------------------------------------------------------------*
START-OF-SELECTION.
PERFORM OBTENER_DATOS.
IF G_ALV_TREE IS INITIAL.
PERFORM INIT_TREE.
= 2.
ENDIF.
*-----------------------------------------------------------------*
*
FORM init_tree
*-----------------------------------------------------------------*
FORM INIT_TREE.
L_TREE_CONTAINER_NAME = 'TREE_CONTROL'.
=1
CNTL_SYSTEM_ERROR
CREATE_ERROR
=2
=3
LIFETIME_ERROR
=4
LIFETIME_DYNPRO_DYNPRO_LINK = 5.
= G_CUSTOM_CONTAINER
NODE_SELECTION_MODE = CL_GUI_COLUMN_TREE=>NODE_SEL_MODE_SINGLE
ITEM_SELECTION
= ''
NO_HTML_HEADER
NO_TOOLBAR
= 'X'
= ''
EXCEPTIONS
CNTL_ERROR
=1
CNTL_SYSTEM_ERROR
CREATE_ERROR
=2
=3
LIFETIME_ERROR
=4
ILLEGAL_NODE_SELECTION_MODE = 5
FAILED
=6
ILLEGAL_COLUMN_NAME
= 7.
PERFORM FILL_CATALOG_TREE.
PERFORM BUILD_HIERARCHY_HEADER CHANGING L_HIERARCHY_HEADER.
= T_TREE[]
IT_FIELDCATALOG = GT_FIELDCAT_TREE.
PERFORM CREATE_HIERARCHY.
ENDFORM.
*-----------------------------------------------------------------*
* FORM FILL_CATALOG_TREE
*-----------------------------------------------------------------*
FORM FILL_CATALOG_TREE.
CLEAR GS_FIELDCAT.
GS_FIELDCAT-COL_POS = 1.
GS_FIELDCAT-REPTEXT = 'Flight'.
GS_FIELDCAT-SCRTEXT_S = 'Flight'.
GS_FIELDCAT-FIELDNAME = 'CONNID'.
GS_FIELDCAT-TABNAME = 'T_SPFLI'.
APPEND GS_FIELDCAT TO GT_FIELDCAT_TREE.
CLEAR GS_FIELDCAT.
GS_FIELDCAT-COL_POS = 2.
GS_FIELDCAT-REPTEXT = 'Country'.
GS_FIELDCAT-SCRTEXT_S = 'Country'.
GS_FIELDCAT-FIELDNAME = 'COUNTRYFR'.
GS_FIELDCAT-TABNAME = 'T_SPFLI'.
APPEND GS_FIELDCAT TO GT_FIELDCAT_TREE.
CLEAR GS_FIELDCAT.
GS_FIELDCAT-COL_POS = 3.
GS_FIELDCAT-REPTEXT = 'Dep.City'.
GS_FIELDCAT-SCRTEXT_S = 'Dep.City'.
GS_FIELDCAT-FIELDNAME = 'CITYFROM'.
GS_FIELDCAT-TABNAME = 'T_SPFLI'.
GS_FIELDCAT-OUTPUTLEN = '15'.
APPEND GS_FIELDCAT TO GT_FIELDCAT_TREE.
CLEAR GS_FIELDCAT.
GS_FIELDCAT-COL_POS = 4.
GS_FIELDCAT-REPTEXT = 'Dep.Airp'.
GS_FIELDCAT-SCRTEXT_S = 'Dep.Airp'.
GS_FIELDCAT-FIELDNAME = 'AIRPFROM'.
GS_FIELDCAT-TABNAME = 'T_SPFLI'.
GS_FIELDCAT-OUTPUTLEN = '20'.
CLEAR GS_FIELDCAT.
GS_FIELDCAT-COL_POS = 5.
GS_FIELDCAT-REPTEXT = 'Country'.
GS_FIELDCAT-SCRTEXT_S = 'Country'.
GS_FIELDCAT-FIELDNAME = 'COUNTRYTO'.
GS_FIELDCAT-TABNAME = 'T_SPFLI'.
GS_FIELDCAT-OUTPUTLEN = '15'.
APPEND GS_FIELDCAT TO GT_FIELDCAT_TREE.
CLEAR GS_FIELDCAT.
GS_FIELDCAT-COL_POS = 6.
GS_FIELDCAT-REPTEXT = 'Arr.City'.
GS_FIELDCAT-SCRTEXT_S = 'Arr.City'.
GS_FIELDCAT-FIELDNAME = 'CITYTO'.
GS_FIELDCAT-TABNAME = 'T_SPFLI'.
GS_FIELDCAT-OUTPUTLEN = '20'.
APPEND GS_FIELDCAT TO GT_FIELDCAT_TREE.
ENDFORM.
*---------------------------------------------------------------------*
*
FORM build_hierarchy_header
*---------------------------------------------------------------------*
FORM BUILD_HIERARCHY_HEADER CHANGING
P_HIERARCHY_HEADER TYPE TREEV_HHDR.
CLEAR P_HIERARCHY_HEADER.
P_HIERARCHY_HEADER-HEADING = 'Airline carrier'(300).
P_HIERARCHY_HEADER-WIDTH = 18.
P_HIERARCHY_HEADER-WIDTH_PIX = ' '.
ENDFORM.
*---------------------------------------------------------------------*
FORM create_hierarchy
*---------------------------------------------------------------------*
FORM CREATE_HIERARCHY.
CLEAR L_ROOT_KEY.
ENDFORM.
*---------------------------------------------------------------------*
*
FORM ADD_NODE
*---------------------------------------------------------------------*
FORM ADD_NODE USING L_NAME L_ROOT_KEY
CHANGING L_NEXT_KEY.
L_NODE_TEXT = L_NAME.
CALL METHOD G_ALV_TREE->ADD_NODE
EXPORTING
I_RELAT_NODE_KEY = L_ROOT_KEY
I_RELATIONSHIP = CL_GUI_COLUMN_TREE=>RELAT_LAST_CHILD
I_NODE_TEXT
= L_NODE_TEXT
IS_OUTTAB_LINE = LS_TREE
IMPORTING
E_NEW_NODE_KEY = L_NEXT_KEY.
ENDFORM.
*---------------------------------------------------------------------*
*
FORM ADD_LEAF
*---------------------------------------------------------------------*
FORM ADD_LEAF USING L_TREE TYPE TY_SPFLI
L_NEXT_KEY
CHANGING L_LAST_KEY.
ENDFORM.
*---------------------------------------------------------------------*
*
FORM OBTENER_DATOS
*---------------------------------------------------------------------*
FORM OBTENER_DATOS.
IF SY-SUBRC EQ 0.
LOOP AT T_SPFLI ASSIGNING <SPFLI>.
MOVE <SPFLI>-CARRID TO T_HEADER-CARRID.
APPEND T_HEADER.
ENDLOOP.
SORT T_HEADER.
DELETE ADJACENT DUPLICATES FROM T_HEADER.
ENDIF.
ENDFORM.