1|
Qué es un ALV?
Los tipos de ALV más comúnmente usados son tres: Grillas, Listas y Jerárquico. Las Grillas y las Listas pueden utilizarse en cualquier reporte reporte,, Grillas -> REUSE_ALV_GRID_DISPLAY Listas -> REUSE_ALV_LIST_DISPLAY Jerárquico -> REUSE_ALV_HIERSEQ_LIST_DISPLAY
2|
Mi primer reporte ALV
PASO 1ero. : Declaraciones de tipos, estructuras y tablas propias del ALV Dentro de este paso, declaramos el tipo SLIS SLIS,, que es necesario para la utilización de reportes ALV ALV..
También declaramos una tabla y una estructura para el catalogo del ALV que son del tipo SLIS_T_FIELDCAT_ALV y SLIS_FIELDCAT_ALV , otra estructura para la configuración de la salida que es del tipo SLIS_LAYOUT_ALV y una variable del tipo SY-REPID SY-REPID,, para almacenar el nombre del programa.
PASO 2do. : Declaración de la tabla de salida del ALV Vamos a declarar la tabla de salida TI_USUARIOS que se mostrará en el ALV ALV..
PASO 3ero. : Selección de los datos que se mostrarán en el ALV Ahora seleccionamos los datos de la tabla ZTABLA_USUARIOS, que mostraremos en el listado de salida y los guardamos en la tabla interna TI_USUARIOS .
PASO 4to. : Armado del catálogo del ALV Armamos el catálogo del ALV con los campos que serán las columnas de nuestro reporte reporte.. Para ello, completaremos para cada columna del listado, los siguientes campos pertenecientes a la tabla del catálogo.
Existen muchismas más propiedades del catálogo que se pueden configurar según lo que necesitemos mostrar en el listado. Para más información, hacer doble click en el tipo SLIS_T_FIELDCAT_ALV.
PASO 5to. : Configuración de la salida del ALV
Vamos a cargar con valores la estructura ST_LAYOUT para configurar ciertos aspectos de la salida del ALV ALV..
Existen muchismas más opciones a configurar en el layout de un reporte ALV. Para más información, hacer doble click en el tipo SLIS_LAYOUT_ALV.
PASO 6to. : Ejecución de la función del ALV Por último, lo que nos queda es la ejecución de la función del ALV ALV.. Si queremos un reporte tipo grilla, ejecutaremos la función REUSE_ALV_GRID_DISPLAY . Si queremos un reporte tipo lista, ejecutaremos la función REUSE_ALV_LIST_DISPLAY . Ambas funciones se completan de la misma manera. Como dijimos anteriormente, los ALV jerárquicos se utilizan para cuando tenemos que mostrar datos de cabecera y detalle, por lo tanto no es aplicable para este ejemplo. Si es grilla:
Si es lista:
Finalmente si ejecutamos el reporte veremos, si usamos la función para grillas:
Y si usamos la función para listas:
1|
Creación del catálogo en forma automática
Existen dos formas de crear el catálogo del ALV, ALV , la primera es en forma manual, ingresando campo por campo, tal como hicimos en el ejemplo de la lección anterior. La segunda, es crear el catálogo en forma automatica con la función REUSE_ALV_FIELDCATALOG_MERGE . Si tomamos el ejemplo de la lección anterior, el código para la creación automática sería el siguiente:
Pero para poder hacer esto vamos a tener que modificar dos puntos del programa. El primero es la forma como se declara la tabla interna del ALV ALV.. Si creamos el catálogo en forma automática debemos declarar la tabla interna utilizando LIKE y haciendo referencia a campos de una tabla base de datos existente.
Lo otro que debemos hacer es configurar el editor, para que se restrinja la cantidad de caractéres de ancho de la pantalla a 72. Esto lo hacemos desde la opción de menú Utilities/Setting Utili ties/Settings/ABAP s/ABAP Editor/Editor/Downwars-Co Editor/Editor/Downwars-Comp.Line mp.Line Lenght(72).
2|
Utilización de Logos y encabezados
En los ALV Grilla podemos agregar logos y encabezados en los listados. Para ello, debemos declarar una tabla del tipo SLIS_T_LISTHEADER y una estructura del tipo SLIS_LISTHEADER SLIS_LISTHEADER..
Antes de completar el catálogo, vamos a llenar la tabla TI_HEADER con el encabezado del Reporte Reporte,, el tipo de reporte y la fecha del sistema.
Luego, agregamos en la llamada a la funcion del ALV ALV,, el parámetro exporting I_CALL_TOP_PA I_CALL_TOP_PAGE GE con el literal 'TOP_OF_PAGE' , que será el nombre de la subrutina que cargue el contenido del encabezado y el logo.
Ahora creamos la subrutina TOP_OF_PAGE, con la llamada a la función REUSE_ALV_COMMENTARY_WRITE , que carga el encabezado que definimos en la tabla interna TI_HEADER TI_HEADER,, junto con el logo 'ENJOYSAP_LOGO' .
Para ver los logos disponibles en el sistema o cargar nuevos debemos utilizar la transacción SE78.
Finalmente ejecutamos ejecutamos el programa y vemos:
3|
Utilización de Status GUIs
Para poder utilizar un Status GUI en un reporte ALV, ALV, vamos a agregar en la llamada a la función del ALV el parámetro exporting I_CALLBACK_PF_STATUS_SET con el literal 'PF_STATUS' , que será el nombre de la subrutina que declare la utilización del Status GUI y el parámetro exporting I_CALLBACK_USER_COMMAND con el literal 'USER_COMMAND' , que será el nombre de la subrutina que se ejecute para capturar la acción realizada por el usuario.
Ahora definimos la subrutina PF_STATUS que setea el status.
Vamos a crear en el status, un botón con la descripción "Usuarios activos" y el código USU_ACTI. También en las Function Keys del status, agregamos los códigos para poder navegar para atras, volver a la pantalla principal o salir del programa. Cuando creamos estos botones, debemos acordarnos de setearlos con Function Type ''E'', ''E'', sino no funcionarán como esperamos.
Por último agregamos la subrutina que realizadas por el usuario.
capturará las acciones
Finalmente si ejecutamos el reporte reporte,, veremos en el Status GUI, GUI, el botón de usuarios activos y si lo ejecutamos, se procesará el código existente en la subrutina USER_COMMAND USER_COMMAND..
1|
Agrupamiento en un ALV
Podemos agrupar los registros que mostramos en un ALV ALV.. Para ello, declaramos una tabla del tipo SLIS_T_SORTINFO_ALV y una estructura del tipo SLIS_SORTINFO_ALV SLIS_SORTINFO_ALV..
Luego antes de llamar a la función del ALV ALV,, vamos a cargar la tabla TI_SORT con los registros en el orden en el que deseamos agrupar.
Ahora debemos completar el parámetro exporting IT_SORT con nuestra tabla interna TI_SORT .
Finalmente, si ejecutamos el reporte reporte,, veremos la agrupación por Estado Civil.
2|
ALV Jerárquico
Como dijimos anteriormente, los ALV Jerárquicos se utilizan cuando tenemos que mostrar en un reporte reporte,, datos de cabecera y de posición.
En las declaraciones de las tablas internas de cabecera y posiciones, debe haber como mínimo un campo en común. En el caso que mostramos a continuación, el campo común es el CARRID CARRID,, que es la compañia aérea.
Debemos declarar una estructura del tipo SLIS_KEYINFO_ALV, SLIS_KEYINFO_ALV , que será ST_KEYINFO ST_KEYINFO y contendrá el campo clave que une a las dos tablas internas.
Ahora vamos a cargar las tablas internas de cabecera y detalle con un juego de datos para la compañia aérea ARG. En el programa de ejemplo de la lección, también cargamos un juego de datos para la compañia aérea LAN.
Cuando configuremos la salida del reporte ALV, ALV, debemos setear la propiedad EXPAND_FIELDNAME con el nombre del campo que une a las dos tablas internas.
Luego crearemos el catálogo del ALV para ambas tablas internas, sumando los campos de ambas tablas en la tabla del catálogo TI_CATALOGO.. TI_CATALOGO
Ahora tenemos que completar la estructura ST_KEYINFO ST_KEYINFO.. En los campos HEADER01 y ITEM01 va a ir el campo de la tabla de cabecera que hace de vínculo con la tabla de detalles.
Por último, ejecutamos REUSE_ALV_HIERSEQ_LIST_DISPLAY .
la
función
Y veremos el siguiente reporte ALV: ALV: