🚀PROMO #PLANCARRERA2024 - 🔥Bonificaciones, Precios Congelados y Cuotas

 X 

✒️ABAP La creación de un ALV TREE orientado a objetos

ABAP La creación de un ALV TREE orientado a objetos

ABAP La creación de un ALV TREE orientado a objetos

Creating an ALV Tree Using Object Orientation

In this tutorial, we'll walk through the creation of a program, Z_LLENAR_SPFLI, which populates data into the standard table SPFLI containing flight information. Then, using transaction SE38, we'll create the program Z_ALV_TREE.

Key Points:

  • Internal Table Declaration: We start by declaring an internal table with 7 fields, which will be displayed on the screen.
  • Instance Variables: We declare variables to instantiate two classes, CL_GUI_ALV_TREE and CL_GUI_CUSTOM_CONTAINER.
  • Data Retrieval: Inside the START-OF-SELECTION event, we construct the obtener_datos subroutine, which retrieves all data from the SPFLI table.
  • Instance Check: We check if the tree has not been instantiated yet, then we instantiate both the tree and the container.
  • Catalog Filling: The fill_catalog_tree subroutine fills the catalog.
  • Hierarchy Building: We build the data hierarchy of the tree using the build_hierarchy_header and create_hierarchy subroutines.
  • Displaying ALV: Finally, we call the method to display the ALV on the screen.
  • Dynpro Creation: We also need to create a dynpro where we place a custom control containing the ALV Tree and a GUI status for screen navigation.
  • Execution: Execute the program to see the output on the screen.

E.g

*&---------------------------------------------------------------------*
*& Report Z_ALV_TREE
*&
*&---------------------------------------------------------------------*
*&
*&
*&---------------------------------------------------------------------*
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.

TYPES: BEGIN OF ty_header,
carrid TYPE spfli-carrid,
END OF ty_header.

*----------------------------------------------------------------------*
* 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.

*----------------------------------------------------------------------*
START-OF-SELECTION.
*----------------------------------------------------------------------*

* Obtenemos los datos que se mostrarán en el ALV
PERFORM obtener_datos.

IF g_alv_tree IS INITIAL.
* Se crearán los objetos correspondientes al CONTAINER y el ALV TREE
PERFORM init_tree.

CALL METHOD cl_gui_cfw=>flush
EXCEPTIONS
cntl_system_error = 1
cntl_error = 2.
ENDIF.

CALL SCREEN 100.

*----------------------------------------------------------------------*
* FORM init_tree *
*----------------------------------------------------------------------*
FORM init_tree.

DATA: l_tree_container_name(30) TYPE c.

l_tree_container_name = 'TREE_CONTROL'.

* Creamos el objeto CONTAINER
CREATE OBJECT g_custom_container
EXPORTING
container_name = l_tree_container_name
EXCEPTIONS
cntl_error = 1
cntl_system_error = 2
create_error = 3
lifetime_error = 4
lifetime_dynpro_dynpro_link = 5.


* Creamos el objeto del ALV TREE
CREATE OBJECT g_alv_tree
EXPORTING
parent = g_custom_container
node_selection_mode = cl_gui_column_tree=>node_sel_mode_single
item_selection = ''
no_html_header = 'X'
no_toolbar = ''
EXCEPTIONS
cntl_error = 1
cntl_system_error = 2
create_error = 3
lifetime_error = 4
illegal_node_selection_mode = 5
failed = 6
illegal_column_name = 7.

* Completamos el catálogo
PERFORM fill_catalog_tree.

* Construimos la jerarquia del ALV TREE
PERFORM build_hierarchy_header CHANGING l_hierarchy_header.

* Ejecutamos el método que muestra el ALV
CALL METHOD g_alv_tree->set_table_for_first_display
EXPORTING
is_hierarchy_header = l_hierarchy_header
CHANGING
it_outtab = t_tree[]
it_fieldcatalog = gt_fieldcat_tree.

PERFORM create_hierarchy.

ENDFORM. "INIT_TREE

*----------------------------------------------------------------------*
* FORM FILL_CATALOG_TREE
*----------------------------------------------------------------------*
FORM fill_catalog_tree.

DATA: gs_fieldcat_add TYPE lvc_s_fcat.

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'.
APPEND gs_fieldcat TO gt_fieldcat_tree.

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. "FILL_CATALOG_TREE
*----------------------------------------------------------------------*
* 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. "BUILD_HIERARCHY_HEADER
*----------------------------------------------------------------------*
* FORM create_hierarchy *
*----------------------------------------------------------------------*
FORM create_hierarchy.

DATA: l_root_key TYPE lvc_nkey,
l_next_key TYPE lvc_nkey,
l_last_key TYPE lvc_nkey,
header TYPE string,
w_menge_text(13) TYPE c.

CLEAR l_root_key.

LOOP AT t_header ASSIGNING <header>.
CLEAR l_root_key.
CLEAR l_next_key.

* Agregamos un nuevo nodo en el ALV TREE
PERFORM add_node USING <header>-carrid l_root_key
CHANGING l_next_key.

LOOP AT t_spfli ASSIGNING <spfli> WHERE carrid EQ <header>-carrid.
MOVE-CORRESPONDING <spfli> TO tab_tree.
PERFORM add_leaf USING tab_tree l_next_key
CHANGING l_last_key.
ENDLOOP.
ENDLOOP.

* Actualizamos el ALV TREE
CALL METHOD g_alv_tree->frontend_update.
ENDFORM. "CREATE_HIERARCHY

*----------------------------------------------------------------------*
* FORM ADD_NODE
*----------------------------------------------------------------------*
FORM add_node USING l_name l_root_key CHANGING l_next_key.

DATA: l_node_text TYPE lvc_value,
ls_tree TYPE ty_spfli.

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. "ADD_NODE

*----------------------------------------------------------------------*
* FORM ADD_LEAF *
*----------------------------------------------------------------------*
FORM add_leaf USING l_tree TYPE ty_spfli
l_next_key
CHANGING l_last_key.

CALL METHOD g_alv_tree->add_node
EXPORTING
i_relat_node_key = l_next_key
i_relationship = cl_gui_column_tree=>relat_last_child
is_outtab_line = tab_tree
IMPORTING
e_new_node_key = l_last_key.

ENDFORM. "ADD_LEAF

*----------------------------------------------------------------------*
* FORM OBTENER_DATOS
*----------------------------------------------------------------------*
FORM obtener_datos.

SELECT carrid connid countryfr cityfrom
airpfrom countryto cityto
INTO TABLE t_spfli
FROM spfli.

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. "OBTENER_DATOS

*&---------------------------------------------------------------------*
*& Module STATUS_0100 OUTPUT
*&---------------------------------------------------------------------*
MODULE status_0100 OUTPUT.
SET PF-STATUS '0100'.
SET TITLEBAR '0100'.
ENDMODULE. " STATUS_0100 OUTPUT

*&---------------------------------------------------------------------*
*& Module EXIT_COMMAND_0100 INPUT
*&---------------------------------------------------------------------*
MODULE exit_command_0100 INPUT.
LEAVE PROGRAM.
ENDMODULE. " EXIT_COMMAND_0100 INPUT


 

 

 


Sobre el autor

Publicación académica de Jaime Eduardo Gomez Arango, en su ámbito de estudios para la Carrera Consultor ABAP.

SAP Master

Jaime Eduardo Gomez Arango

Profesión: Ingeniero de Sistemas y Computación - España - Legajo: SW34C

✒️Autor de: 118 Publicaciones Académicas

🎓Cursando Actualmente: Consultor ABAP Nivel Avanzado

🎓Egresado del módulo:

Disponibilidad Laboral: FullTime

Presentación:

Ingeniero de sistemas y computación con 8 años de experiencia el desarrollo frontend & backend (react/node) y en cloud (aws), actualmente desarrollando habilidades en sap btp, ui5, abap y fiori.

Certificación Académica de Jaime Gomez

✒️+Comunidad Académica CVOSOFT

Continúe aprendiendo sobre el tema "La creación de un ALV TREE orientado a objetos" de la mano de nuestros alumnos.

SAP Master

Lección 9: Video - Creación de un ALV TREE orientado a objetos. 1.- Video que muestra como crear un ALV TREE orientado a objetos. Programas útiles para tener en cuenta: Existen muchos programas estándar muy útiles que podemos tener en cuenta a la hora de querer implementar diferentes funcionalidades a nuestro ALV TREE, algunos son: BCALV_TREE_01. BCALV_TREE_02. BCALV_TREE_03. BCALV_TREE_04. BCALV_TREE_05. BCALV_TREE_06. BCALV_TREE_DND_MULTIPLE.

Acceder a esta publicación

Creado y Compartido por: Calixto Gutiérrez

*** CVOSOFT - Nuestros Alumnos - Nuestro Mayor Orgullo como Academia ***

SAP Expert


Creación de un ALV TREE orientado a objetos. Se crea el reporte Z_LLENAR_SPFLI que contiene información sobre vuelos. Luego se crea el Z_ALV_TREE, clic en display. Mostrar lista de objetos, se declara una tabla interna con 7 campos, la cual se mostrara por pantalla. Dentro del evento STAR-OF-SELECTION , se crea la subrutina obtener datos la cual recupera todos los datos de la tabla SPFLI. Luego si el árbol no fue instanciado todavía construimos una instancia del árbol y del conteiner. Mediante la rutina fill_catalog-tree se llena el catalogo. Se construye la jerarquía del árbol mediante la subrutina build_hierarchy_header y créate_hierarchy. Luego clic en screens, clic en 0100,...

Acceder a esta publicación

Creado y Compartido por: David De Jesùs Restrepo Cañas

*** CVOSOFT - Nuestros Alumnos - Nuestro Mayor Orgullo como Academia ***

SAP Master

ALV TREE ORIENTADO A OBJETOS: CREAR PROGRAMA SE38 PROGRAMAS UTILES: BCALV_TREE_01 BCALV_TREE_02 BCALV_TREE_03 BCALV_TREE_04 BCALV_TREE_05 BCALV_TREE_06 BCALV_TREE_DND_MULTIPLE Clase estandar ABAP para crear ALV TREES POO CL_GUI_ALV_TREE_SIMPLE. NO es posible crear jerarquias.

Acceder a esta publicación

Creado y Compartido por: Jose Ignacio Rodini

*** CVOSOFT - Nuestros Alumnos - Nuestro Mayor Orgullo como Academia ***

SAP Master

ALV Tree OO Declarar la tabla interna a mostrar Declarar variables para crear objetos del ALV Tree CL_GUI_ALV_TREE CL_GUI_CUSTOM_CONTAINER En el START-OF-SELECTION creamos instancias de los objetos si no han sido creados Construimos jerarquía del árbol Llamamos al método SET_TABLE_FOR_FIRST_DISPLAY Crear Dynpro con el Custom Control Creamos Status Gui para navegar entre pantallas

Acceder a esta publicación

Creado y Compartido por: Xavier Martinez Garsaball

*** CVOSOFT - Nuestros Alumnos - Nuestro Mayor Orgullo como Academia ***

SAP Master

Creación de un ALV TREE orientado a objetos * Declarar tabla interna * Variable para instanciar la clase CL_GUI_ALV_TREE * Variable para instanciar la clase CL_GUI_CUSTOM_CONTAINER * Recuperar datos a mostrar * Crear catalogo *Crear jerarquía * Método SET_TABLE_FOR_FIRST_DISPLAY * Dynpro con custom container

Acceder a esta publicación

Creado y Compartido por: Helen Silva Ruiz

*** CVOSOFT - Nuestros Alumnos - Nuestro Mayor Orgullo como Academia ***

SAP Master

Creación de un ALV Tree Orientado a Objetos Vamos a puntualizar los aspectos más importantes a tener en cuenta para este tipo de programas. - Declaración de Datos Tabla Interna conteniendo los Datos a mostrar por pantalla Una Variable para instanciar la Clase CL_GUI_ALV_TREE Una Variable para instanciar la Clase CL_GUI_CUSTOM_CONTAINER - Evento START-OF-SELECTION Llamamos a la Subrutina que recupera la información de la TBD y arma la Tabla Interna Si el árbol no fue instanciado, Creamos una instancia del árbol y del container con CREATE OBJECT. Llamamos a una Subrutina para completar el Catálogo Se construye la jerarquía de los...

Acceder a esta publicación

Creado y Compartido por: Victor Norberto Levi

*** CVOSOFT - Nuestros Alumnos - Nuestro Mayor Orgullo como Academia ***

SAP Expert


CREACION ALV TREE OO: Creamos el reporte Z_LLENAR_SPFLI ( contiene información sobre vuelos). Luego se creamos Z_ALV_TREE, clic en display. Declaramos una tabla interna con campos que luego se muestra en pantalla . En el evento STAR-OF-SELECTION , se creamos la subrutina para recuperar todos los datos de la tabla SPFLI. Si el árbol no fue instanciado construimos una instancia del árbol y del conteiner. Con la rutina fill_catalog-tree se llena el catalogo. Se construye la jerarquía del árbol mediante la subrutina build_hierarchy_header y créate_hierarchy. Clic en screens. Clic en 0100. Clic en LAYOUT t y en STATUS GUI para navegar en pantalla. Ejecutamos el programa y se visualiza por...

Acceder a esta publicación

Creado y Compartido por: Ernesto Aristides Romano

*** CVOSOFT - Nuestros Alumnos - Nuestro Mayor Orgullo como Academia ***

SAP Master

Lección 9 Video: ALV TREE orientado a objetos Creamos el programa Z_LLENAR_SPFLI Luego construimos el programa z_alv_tree Damos clic en lista de objetos Los puntos más importantes para tener en cuenta son: Declarar los campos en la tabla interna, la cual se mostrara por pantalla Se instancia la clase variable cl_gui_alv_tree Se instancia la clase variable cl_gui_custom_container Dentro del evento start-of-selection construimos la subrutina obtener datos, la cual recupera todos los datos de la tabal spfli Si el árbol no fue instanciado, construimos la instancia init_tree Mediante la rutina fill_catalog_tree. Por esta función llenamos el catalogo Construimos la jerarquía de los...

Acceder a esta publicación

Creado y Compartido por: Jhon Deibys Cano Pineda

 


 

👌Genial!, estos fueron los últimos artículos sobre más de 79.000 publicaciones académicas abiertas, libres y gratuitas compartidas con la comunidad, para acceder a ellas le dejamos el enlace a CVOPEN ACADEMY.

Buscador de Publicaciones:

 


 

No sea Juan... Solo podrá llegar alto si realiza su formación con los mejores!