✒️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
CATALOGO ALV AUTOMATICO, LOGOS, ENCABEZADOS Y STATUS.
Creación del catálogo en forma automática:
Para crear el catálogo en forma automática se hace con la función REUSE_ALV_FIELDCATALOG_MERGE.
Como ejemplo el código para la creación automática sería el siguiente:
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.
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. Así.
*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,
dirección LIKE ztabla_usuarios-dirección,
codigo_postal LIKE ztabla_usuarios-f_nacimiento,
estado_civil LIKE ztabla_usuarios-estado_civil,
END OF ti_usuarios.
Lo otro que debemos hacer es configurar el editor, para que se retrinja la cantidad de caracteres de ancho de la pantalla a 72. Para hacer esto vamos al menu 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.
*Tabla y estructura para la cabecera
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. Así.
DATA: v_fecha(10) TYPE c.
CONCATENATE sy-datum 6(2) sy-datum 4(2)
sy_datum(4) INTO v_fecha SEPARATED BY '/'. "Esto se hace para mostrar la fecha separada "por /
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.
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
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'.
FORM top_of_page.
CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE'
EXPORTING
it_list_commentary = ti_header
i_logo = 'ENJOYSAP_LOGO'.
ENDFORM. "top_of_page
Transacción SE78: Sirve para ver los logos disponibles en el sistema o cargar nuevos.
Otra forma para subir logos es a través de la transacción OAER.
1.En nombre clase, introducimos pictures.
2.tipo de clase: OT
3.Clave del objeto, nombre que se le quiere dar al logo en mayusculas.
se ejecuta la transacción
4.Luego seleccionamos documento estandar, a través de este podemos seleccionar y subir el archivo de nuestra pc al servidor, para usarlo en un encabezado de un alv.
5.Si deseamos agregar la imagen a una orden de transporte vamos a la opción documentos, transportar.
3.Utilización de Status GUIs
Para poder utilizar un Status GUI en un reporte ALV, se agrega 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 exportig 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 (Functio 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 syucom
rs_selfield TYPE slis_selfield.
CASE r_ucomm.
WHEN 'USU_ACTI'.
ENDCASE.
ENDFORM. "user command
 
 
 
Sobre el autor
Publicación académica de Franco Alfieri Maringota Alvarado, en su ámbito de estudios para la Carrera Consultor ABAP.
Franco Alfieri Maringota Alvarado
Peru - Legajo: GF44M
✒️Autor de: 288 Publicaciones Académicas
🎓Egresado de los módulos:
- Carrera Consultor en SAP FI Nivel Inicial
- Carrera Consultor en SAP BI / BW BO Nivel Avanzado
- Carrera Consultor ABAP Nivel Avanzado
- Carrera Consultor ABAP Nivel Inicial
- Carrera Consultor en SAP BI / BW BO Nivel Inicial