✒️ABAP / El catálogo ALV automático, los logos, los encabezados y los status GUI Por Lisimaco Prieto Herrera
ABAP El catálogo ALV automático, los logos, los encabezados y los status GUI

El catálogo ALV automático, los logos, los encabezados y los status GUI
La creación del catálogo del ALV en forma automática
Existen 2 formas de crear el catálogo del ALV, la primera es en forma manual, ingresando campo por campo, tal como hicimos en el ejemplo de la lección anterior.
La segunda consiste en crear el catálogo del ALV en forma automática con el módulo de funciones REUSE_ALV_FIELDCATALOG_MERGE.
Si tomamos el ejemplo de la lección anterior, el código para la creación automática del catálogo sería el siguiente:
Pero para pode usar el módulo de funciones que crea automáticamente el catálogo vamos a tener que modificar dos puntos en el programa.
El primero consiste en la forma como se declara la tabla del ALV, en este caso TI_USUARIOS. Si creamos el catálogo en forma automática debemos declarar la tabla interna usando la sentencia OCCURS y LIKE y haciendo referencia a campos de una BD existente.
La declaración de la tabla interna del catálogo mediante la sentencia OCCURS 0 hace que no sea necesario declarar una cabecera o estructura ya que la misma viene incluida con la tabla interna.
Lo segundo que vamos a tener que hacer para poder generar el catálogo en forma automática es configurar el editor, para que se restrinja la cantidad de caracteres de ancho de la pantalla a 72 caracteres. Esto significa que ninguna línea del código del programa debe tener más de 72 caracteres de ancho, ya sea de comentarios o de código.
La configuración del ancho del editor ABAP
Para configurar el ancho del editor ABAP a 72 caracteres por línea accedemos a la opción del menú:
Utilidades/Opciones/Editor ABAP/Editor/Y tildamos log. líneas compatib. descedend.(72)
Si no realizamos la restricción del ancho máximo de 72 caracteres en el código del programa entonces al ejecutar el reporte ALV vamos a visualizar el siguiente dump en pantalla:
Ahora bien si generamos el catálogo del ALV en forma automática usando el módulo de funciones REUSE_ALV_FIELDCATALOG_MERGE entonces luego de la ejecución de este módulo de funciones la tabla TI_CATALOGO tendrá el siguiente contenido.
Si deseamos alguna de las propiedades de los campos del catálogo del ALV entonces luego de la ejecución del módulo de funciones REUSE_ALV_FIELDCATALOG_MERGE vamos a tener que modificar el contenido de la tabla interna TI_CATALOGO. Por ejemplo en el siguiente código modificamos el contenido del texto medio correspondiente a campo NOMBRE_APE con el texto TEST tal como vemos en la siguiente imagen:
Y el resultado de la ejecución del código anterior es el siguiente:
La utilización de logos y encabezados en los ALV
En los ALV Grilla podemos agregar logos y encabezados en los listados, cuestión que no es posible en el ALV Lista. Para ello, debemos declarar una tabla interna del tipo SLIS_T_LISTHEADER y una estructura del tipo SLIS_LISTHEADER tal como vemos en la siguiente imagen:
Antes de declararse la subrutina que genera el catálogo del ALV en forma automática vamos a declarar la subrutina LLENAR_CABECERA tal como vemos en la siguiente imagen:
Y dentro de la subrutina LLENAR_CABECERA vamos a llenar la tabla interna TI_HEADER con el encabezado del reporte, el tipo de reporte y la fecha del sistema.
Luego agregamos en la llamada al módulo de funciones del ALV, el parámetro I_CALL_TO_PAGE con el literal 'TOP_OF_PAGE', que será el nombre de la subrutina que cargue el contenido del encabezado y el log.
Ahora vamos a crear la subrutina TOP-OF-PAGE con la llamada al módulo de funciones REUSE_ALV_COMMENTARY_WRITE, el cual carga el encabezado que definimos en la tabla TI_HEADER, junto con el logo 'ENJOYSAP_LOGO'.
Transacción SE78 se usa para administrar los logos disponibles en el sistema.
La utilización de un status GUI en un ALV
Para poder usar un status GUI en un reporte ALV, vamos a agregar en la llamada al módulo de funciones del ALV el parámetro exporting i-CALLBACK_PF_STATUS_SET con la literal 'PF_STATUS', que será el nombre de la subrutina que declara 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 configura el status GUI.
Vamos a crear un status GUI para ello hacemos clic en el botón del mouse y seleccionamos Crear/STATUS GUI tal como vemos en la siguiente imagen.
Completamos el nombre del status que es 0100 y un texto breve que es Status 0100 tal como vemos en la siguiente imagen:
Dentro de la barra de pulsadores vamos a crear un botón con la descripción Usuarios activos y el código USU_ACTI.
En las Teclas e función del Status GUI 0100 agregamos los códigos de los botones de navegación para poder volver atrás (BACK), volver a la pantalla principal 8EXIT) o salir del programa (CANCEL).
Si hacemos doble clic en cada uno de los códigos de los botones de navegación entonces podemos configurarlos. Debemos acordarnos de configurarlos con Tipo de función igual a E, sino no funcionarán como esperamos.
Por último agregamos la subrutina USER_COMMAND que capturará las acciones realizadas por el usuario.
Finalmente si ejecutamos el reporte, veremos en el Status GUI, el botón de usuarios activos y si lo ejecutamos, se procesará el código existente en la subrutina USER_COMMAND.
Y si por ejemplo hacemos clic en el botón Volver atrás de la barra de herramientas:
Entonces volvemos a la pantalla inicial del reporte ALV tal como vemos en la siguiente imagen:
 
 
 
Sobre el autor
Publicación académica de Lisimaco Prieto Herrera, en su ámbito de estudios para el Curso SAP ABAP.
Lisimaco Prieto Herrera
Profesión: Ingeniero de Sistemas - Colombia - Legajo: DV67X
✒️Autor de: 96 Publicaciones Académicas
🎓Egresado de los módulos:
Presentación:
Ingeniero de sistemas con amplia experiencia en el desarrollo de software para el sistema sap r/3 en lenguaje de programación abap.
Certificación Académica de Lisimaco Prieto






Disponibilidad Laboral: FullTime


















