✒️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
Existen dos formas de ingresar el catálogo en un reporte ALV, la primera es en forma manual, ingresando campo por campo, tal como se realizó en el ejemplo de la lección anterior, y la segunda de forma automática mediante la función REUSE_ALV_FIELDCATALOG_MERGE.
Retomando el código de la lección anterior, este tendría los siguientes cambios.
v_repid = sy-repid.
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.
Para poderlo realizar de esta forma se tienen que hacer un par de modificaciones: el primero es la forma en cómo se declara la tabla interna del ALV. Se creamos el catálogo en forma automática debemos declara la tabla interna utilizando LIKE y haciendo referencia a los campos
DATA: BEGIN OF ti_usuarios OCCURS 0,
dni LIKE ztabla_usinter-dni,
nombre_ape LIKE ztabla_usinter-nombre_ape,
estado_usu LIKE ztabla_usinter-estado_usu,
direccion LIKE ztabla_usinter-estado_usu,
codigo_postal LIKE ztabla_usinter-codigo_postal,
f_nacimiento LIKE ztabla_usinter-f_nacimiento,
estado_civil LIKE ztabla_usinter-estado_civil,
END OF ti_usuarios.
UTILIZACION DE LOS LOGOS Y ENCABEZADOS
En los ALV Grilla se pueden agregar logos y encabezados en los listados, esto se hace declarando 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, tenemos que cargar el catálogo de la tabla TI_HEADER con el encabezado de 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 reporte: '.
st_header-info = 'ALV'.
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.
El siguiente paso es agregar en la llamada a la función del ALV el parámetro exporting 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 logo.
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.
Luego se crea 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'.
ENDFORM. "top_of_page
Nota: La transacción para visualizar y cargar nuevas imágenes en el sistema es la SE78.
Otra posibilidad para subir logos es la transacción OAER. Si accedemos a esta transacción, se nos presentará una pantalla para completar los parámetros de la siguiente forma:
Nombre/Clase: Pictures
Tipo de Clase: OT
Clave del objeto: Nombre que se le quiere dar a logo (en mayúsculas)
Se ejecuta la transacción y en la siguiente pantalla seleccioamos ‘Documento Standard’, damos clic sobre el icono imagen (se pueden cargar al sistema distintos tipos de archivos y visualizaremos una ventana de diálogo en donde podremos seleccionar y subir el archivo desde nuestra PC al servidor para utilizarlo en un encabezado del ALV. Si deseamos incluir el encabezado en una orden de transporte, debemos acceder al Menú/Documentos/Transportar
ESTATUS GUI
Para poder utilizar un Status GUI en un reporte ALV, vamos a agregar en la llamada a la función del ALV el parámetros exporting I_CALL_PF_STATUS_SET con literal PF_STATUS que será el nombre de la subrutina que declare la utilización del Status Gui y el parámetros exporting I_CALL_USER_COMMAND con literal USER_COMMAND, que será el nombre de 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.
Finalmente se define la subrutina PF_STATUS que setea el STATUS.
FORM pf_status USING rt_extab TYPE slis_t_extab.
SET PF-STATUS '0100'.
ENDFORM.
Se crea un botón en el status con la descripción “Usuarios Activos” y el código USU_ACTI.
También en las Teclas de Función (Function Kesy) del status, agregamos los códigos para poder navegar atrás, volver a la pantalla principal o salir del programa. Cuando creamos estos botones es importante recordar setearlos con TIPO FUNCIÓN igual a E, si no no funcionarán como esperamos.
 
 
 
Sobre el autor
Publicación académica de Jose Alberto Rivera Gonzalez, en su ámbito de estudios para la Carrera Consultor ABAP.
Jose Alberto Rivera Gonzalez
Profesión: Técnico Informático - Mexico - Legajo: LG32F
✒️Autor de: 102 Publicaciones Académicas
🎓Egresado de los módulos:
Certificación Académica de Jose Rivera