✒️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
1. Creación de Catálogo en forma Automática:
Ya conocemos una forma de crear el catálogo del ALV que es en forma manual , ingresando campo x campo. La segunda , es crear el catálogo en forma automática con la funcion REUSE_ALV_FIELDCATALOG_MERGE
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_catalog ()
EXCEPTIONS
inconsistent_interface = 1
program_error = 2
OTHERS = 3.
para poder hacer esto , tenemos que modificar dos puntos del programa. El primero es la forma como se declara la tabla interna del ALV. Si creamos catálogo en forma automática debemos declarar la tabla interna utilizando LIKE y haciendo referencia a campos de una tabal de base de datos existente.
* Declarar asi para usar el MERGE en el catálogo.Se declara para la Tabla interna del ALV
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,
codigo_postal LIKE ztabla_usuarios-codigo_postal,
f_nacimiento LIKE ZTAbla_usuarios-f_nacimiento
estado_civil LIKE ztabla_usuarios-estado_civil,
END OF ti_usuarios.
Lo otro que hay que hacer es configurar el editor , para que restrinja la cantidad de caracteres de ancho de la pantalla a 72.
Menu >>Utilidades >>Opciones>>Editor ABAP>>Editor>> y Tildamos long.lineas compatibl descend.(72)
2.Utilización de Logos y Encabezados.
en los ALV Grilla podemos agregar logos y encabezados en los listados. Para ello , declaramos un tabla del tipo:
SLIS_T_LISTHEADER y una estructura del tipos SLIS_LISTHEADER
* Tabla y estructura para el encabezado
ti_header TYPE SLIS_T_LISTHEADER,
st_header TYPE SLIS_LISTHEADER.
Antes de completar el catálogo se completa la tabla TI_HEADER con el encabezdo del reporte, el tipo de reporte y fecha del sistema.
* LLenamos la tabla interna del encabezado
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-info = 'Tipo de reporte: ' .
st_header-info = 'ALV' .
APPEND st_header TO Ti_header.
CLEAR st_header.
st_header_typ = 'S' .
st-header-info = 'FECHA: ' .
st_header-info = v_fecha .
APPEND st_header TO Ti_header.
CLEAR st_header.
Luego agregamos en la llamada a la función 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
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. qu esta ultima carga el encabezado del logo que definimos en la tabla interna TI_HEADER
FORM top_of_page.
CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE'
EXPORTING
it_list_commentary = ti_header
i_logo = 'ENJOYSAP_LOGO' .
ENDFORM .
SE78 : esta transacción nos permite ver los logos disponibles o cargar nuevos logos.
AUDIO:
Para subir Logos, aparte de la Transacción SE78, tenemos la transacción estándar OAER. Para subir un logo completamos los parámetros solicitados: Nombre Clase=PICTURE, Tipo Clase = OT, Clave del Objeto=NOMBRE_LOGO (en Mayúscula). Ejecutamos la transacción y luego seleccionamos “Documento Estándar”, pinchamos sobre el icono “imagen” y saldrá una ventana de dialogo, donde podemos seleccionar la imagen de nuestro PC para subirla al servidor y ya se podrá usar en un reporte ALV. Si deseamos agregar la imagen a una Orden de Transporte debemos acceder al menú Documentos-Transportar.
3. Utilización del STATUS GUIs
Para poder utilizar un Status GUI( rango de funcionalidades de la pantalla) en un reporte ALV, se agrega en la llamada a la Función de ALV el parámetro Exporting I_CALLBACK_PF_STATUS_GET 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 encargará de caputrar 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 se define la subrutina PF_STATUS que seta el status
FORM pfstatus USING rt_extab TYPE slis_t_extab.
SET PF-STATUS '0100' .
ENDFORM.
Se va a crear en el status , un botón con la descripción "Usuarios Activos" y el codigo USU_ACTI.
Tambien 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 esos botones, debemos acordarnos de setearlos con Tipo de Función igual a "E" .
Por último se agrega la subrutina que capturará las acciones realizadas por el usuario.
* Codig que procesará la acción efectuada
FORM user_command USING r_ucomm TYPE syucomm
rs_selfield TYPE slis_selfield .
CASE r_ucomm .
WHEN 'USU_ACTI' .
ENDCASE
ENDFORM.
 
 
 
Sobre el autor
Publicación académica de Carlos Alberto Carreira, en su ámbito de estudios para la Carrera Consultor ABAP.
Carlos Alberto Carreira
Profesión: Consultor Técnico en Jde W.s. - Argentina - Legajo: KC15G
✒️Autor de: 92 Publicaciones Académicas
🎓Cursando Actualmente: Consultor ABAP Nivel Inicial
🎓Egresado de los módulos:
Certificación Académica de Carlos Carreira