Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Sap Abap Alv Grid de Dos Maneras
Sap Abap Alv Grid de Dos Maneras
Bien, en este artículo resumiré los pasos para crear ambos ALV, y así podremos ver las
similitudes y diferencias entre ambos ALV.
CL_GUI_ALV_GRID
En este caso el proceso para generar un ALV paso a paso sería el siguiente:
6. Pasamos los datos para mostrar en pantalla en las casillas del ALV. Los datos se pasan
con una tabla interna al método de la clase alv: set_table_for_first_display.
7. Opcionalmente, indicamos el catálogo de campos para los campos del ALV, asignando
una tabla, estructura o vista en el parámetro i_structure_name.
Bien, estos son los pasos mínimos necesarios para crear el ALV, aquí podemos ver un
ejemplo:
DATA:
t_mara TYPE TABLE OF mara,
mi_layout TYPE lvs_s_layo,
mi_alv_grid TYPE REF TO cl_gui_alv_grid,
mi_contenedor TYPE REF TO cl_gui_custom_container.
También tendríamos que manejar los eventos, como por ejemplo un double-click,
print_top_of_list, etc., la clase cl_gui_alv_grid tiene 32 eventos.
Para manejar los eventos, seguimos los siguientes pasos:
1. Creamos una clase local para incluir los métodos manejadores de eventos
2. Definimos en la clase, el método 'manejador' por el evento que necesitemos (por
ejemplo, para el doble-clic)
3. Implementamos el método de la clase ( en este caso, lo que queremos que sucede cuando
el usuario pulse doble clic)
4. Registramos el método manejador a la instancia/objeto de nuestro ALV, usando SET
HANDLER.
Veamos un ejemplo:
ENDMETHOD.
ENDCLASS.
DATA:
mi_alv TYPE REF TO cl_gui_alv_grid,
receptor_eventos TYPE REF TO lcl_receptor_eventos.
Ahora, vamos a hacer un ALV de los nuevos (ALV Object Model), basados en la clase:
CL_SALV_TABLE
En este caso, tendríamos que seguir los siguientes pasos:
Veamos un ejemplo:
CLEAR: tabla_interna.
SELECT * FROM spfli
INTO CORRESPONDING FIELDS OF TABLE tabla_interna
WHERE carrid IN s_carrid.
TRY.
cl_salv_table =>factory(
IMPORTING
r_salv_table = mi_tabla
CHANGING
t_table = tabla_interna ).
ENDTRY.