✒️ABAP El catálogo ALV automático, los logos, los encabezados y los status GUI
ABAP El catálogo ALV automático, los logos, los encabezados y los status GUI
Creación del catálogo en forma automática
Existen dos 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, es crear el catálogo en forma automática 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:
CALL FUNCTION 'REUSE_ALV_FIELDCATALOG_MERGE'
EXPORTING
i_program_name = v_repid
i_internal_tabname = 'TI_USUARIOS'
i_client_never_display = 'X'
i_inclname = v_repid
CHANGING
ct_fieldcat = ti_catalogo[]
EXCEPTIONS
inconsistent_interface = 1
program_error = 2
OTHERS = 3.
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. 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.
DATA: BEGIN OF ti_usuarios OCCURS 0,
dni LIKE zoqs36a_usuarios-dni,
nombre_ape LIKE zoqs36a_usuarios-nombre_ape,
estado_usu LIKE zoqs36a_usuarios-estado_usu,
direccion LIKE zoqs36a_usuarios-direccion,
fecha_nan LIKE zoqs36a_usuarios-fecha_nac,
estado_civil LIKE zoqs36a_usuarios-estado_civil,
codigo_postal LIKE zoqs36a_usuarios-codigo_postal,
END OF ti_usuarios.
Lo otro que debemos hacer es configurar el editor, para que se restrinja la cantidad de caracteres de ancho de la pantalla a 72.
Configuración del ancho del Editor ABAP
Para configurar el ancho del editor ABAP a 72 líneas accedemos a la opción del menú:
> Utilidades
|-> Opciones
|-> Editor ABAP
|-> Editor
|-> Y tildamos Long. lineas compatib descend.(72)
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.
ti_header TYPE slis_t_listheader,
st_header TYPE slis_listheader.
Antes de completar el catálogo, vamos a llenar la tabla TI_HEADER con el encabezado del Reporte,
el tipo de reporte y la fecha del sistema.
DATA: v_fecha(10) TYPE c.
CONCATENATE sy-datum+6(2) sy-datum+4(2)
sy-datum(4) INTO v_fecha SEPARATED BY '/'.
st_header-typ = 'H'.
st_header-info = 'Listado de Usuarios'.
APPEND st_header TO ti_header.
CLEAR st_header.
st_header-typ = 'S'.
st_header-key = 'Tipo de reportes'.
st_header-info = 'AVL'.
APPEND st_header TO ti_header.
CLEAR st_header.
st_header-typ = 'S'.
st_header-key = 'Fecha'.
st_header-info = v_fecha.
APPEND st_header TO ti_header.
CLEAR st_header.
Luego, agregamos en la llamada a la función 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.
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
i_callback_program = v_repid
i_callback_user_command = 'USER_COMMAND'
it_fieldcat = ti_catalogo[]
i_callback_top_of_page = 'TOP_OF_PAGE'
is_layout = st_layout
TABLES
t_outtab = ti_usuarios.
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, junto con el logo 'ENJOYSAP_LOGO'.
CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE'
EXPORTING
it_list_commentary = ti_header
i_logo = 'ENJOYSAP_LOGO'.
Transacción SE78 (Administracion Imágenes del Sistema)
Para ver los logos disponibles en el sistema o cargar nuevos debemos utilizar la transacción SE78.
Finalmente ejecutamos el programa.
Utilización de Status GUIs
Para poder utilizar un Status GUI en un reporte 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.
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
i_callback_program = v_repid
i_callback_pf_status_set = 'PF_STATUS'
i_callback_user_command = 'USER_COMMAND'
it_fieldcat = ti_catalogo[]
i_callback_top_of_page = 'TOP_OF_PAGE'
is_layout = st_layout
TABLES
t_outtab = ti_usuarios.
Ahora definimos la subrutina PF_STATUS que setea el status.
FORM pf_status USING rt_extab TYPE slis_t_extab.
SET PF-STATUS '0100'.
ENDFORM. "PF_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 Teclas de función (Function Keys) del status, agregamos los códigos para poder navegar para atrás,
volver a la pantalla principal o salir del programa. Cuando creamos estos botones,
debemos acordarnos de setearlos con Tipo de función (Function Type) igual a ''E'', sino no funcionarán como esperamos.
Por último agregamos la subrutina que capturará las acciones realizadas por el usuario.
FORM user_command USING r_ucomm TYPE syucomm
rs_selfield TYPE slis_selfield.
CASE r_ucomm.
WHEN 'ACEPTAR'.
WHEN 'CANCELAR'.
ENDCASE.
ENDFORM. "user_command
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.
 
 
 
Sobre el autor
Publicación académica de Alex Francisco Lemos Collazos, en su ámbito de estudios para la Carrera Consultor ABAP.
Alex Francisco Lemos Collazos
Profesión: Ingeniero en Sistemas - Colombia - Legajo: QS36A
✒️Autor de: 174 Publicaciones Académicas
🎓Cursando Actualmente: Master S/4HANA Material Management
🎓Egresado de los módulos:
- Máster Material Management en SAP S/4HANA LOGISTIC
- Carrera Consultor ABAP Nivel Avanzado
- Carrera Consultor ABAP Nivel Inicial
- Carrera Consultor en SAP SD Nivel Inicial