
El catálogo ALV automático, los logos, los encabezados y los status GUI
1. 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
FORM armar_catalogo.
REFRESH ti_catalogo.
CLEAR wa_catalogo.
wa_catalogo-fieldname = 'DNI'. "Nombre del campo
wa_catalogo-tabname = 'TI_USUARIOS'. "Nombre Tabla
wa_catalogo-seltext_s = 'DNI'. "Descripción corta Cabecera
wa_catalogo-seltext_m = 'DNI'. "Descripción media Cabecera
wa_catalogo-seltext_l = 'DNI'. "Descripción larga Cabecera
wa_catalogo-outputlen = 10. "Ancho de la columna
wa_catalogo-just = 'C'. "Alineación
APPEND wa_catalogo TO ti_catalogo.
La segunda consiste en crear el catálogo del ALV en forma automática con el módulo de funciones reuse_alv_fieldcatalog_merge
Pero para poder utilizar el módulo de funciones que crea automáticamente el catálogo vamos a tener que modificar 2 puntos del programa:
- El primero consiste en la forma como se declara la tabla interna del ALV, en este caso ti_usuarios. Si creamos el catálogo de forma automática debemos declarar la tabla interna utilizando la sentencia OCCURS y LIKE y haciendo referencia a campos de una tabla base de datos existente
* Declarar así para usar el MERGE en el catalogo
DATA: BEGIN OF ti_usuarios OCCURS 0,
dni LIKE ztabla_usuarios-dni,
nombre_ape LIKE ztabla_usuarios-nombre_ape,
estado_usu LIKE ztabla_usuarios-estado_usu,
direccion LIKE ztabla_usuarios-direccion,
fnacimiento LIKE ztabla_usuarios-fnacimiento,
nacionalidad LIKE ztabla_usuarios-nacionalidad,
codigo_postal LIKE ztabla_usuarios-codigo_postal,
estado_civil LIKE ztabla_usuarios-estado_civil,
END OF ti_usuarios,
La declaración de una 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 incluída con la tabla interna.
- Lo segundo 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 mas de 71 caracteres de ancho, ya sea de comentarios o de código.
Para las configuraciones del ancho del editor ABAP es la siguiente: Utilidades > Opciones > Editor ABAP > Seleccionar Long. líneas compatib descend.
Si no realizamos la restricción del ancho máximos de 72 caracteress en el codigo del programa entonces al ejecutar el reporte ALV se mostrará un dump en pantalla
2. 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 se debe declarar una tabla interna del tipo slis_t_listheader y una estructura del tipo slis_listheader:
* Tabla interna y estructura para la cabecera
ti_header TYPE slis_t_listheader,
wa_header TYPE slis_listheader.
Antes de declararse la subrutina que genera el catálogo del ALV en forma automática se debe declarar la subrutina llenar_cabecera
* Completamos la cabecera del ALV
PERFORM llenar_cabecera.
Y dentro de la subrutina llenar_cabecera se llena la tabla ti_header con el encabezado del reporte, el tipo de reporte y la fecha del sistema
Luego agregar en la llamada al módulo de funciones del ALV el parámetro exporting I_CALL_TOP_PAGE con el literal TOP_OF_PAGE que será el nombre de la subrutina que cargue el contenido del encabezado y el logo
Luefgo crear la subrutinaa TOP_OF_PAGE con la llamad al módulo de funciones REUSE_ALV_COMMENTARY_WRITE, el cual carga el encabezado que definimos en la tabla interna ti_header junto con el logo 'EnjoySap_Logo'
< Transacción SE78 para administrar los logos disponibles en el sistema >
3. La utilización de un status GUI en un ALV
Para poder utilizar 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 el 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.
Luego se define la subrutina pf_status que configura el status GUI y agregar la subrutina USER_COMMAND que capturará las acciones realizadas por el usuario.