✒️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.
1.- Creación del catálogo en forma automática.
Existen dos formas de crear el catálogo:
- De forma manual, ingresando campo por campo; como en el caso anterior.
- Crear el catálogo de forma automática con la función: REUSE_ALV_FIELDCATALOG_MERGE.
El código quedaría:
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.
Pero antes hay que modificar dos puntos del programa:
- la forma como se declara la tabla interna del ALV.
Si creamos el catálogo de forma automática debemos
declarar la tabla interna utilizando LIKE y haciendo
referencia a campos de una tabla de base de datos
existente.
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,
fecha_nac LIKE ztabla_usuarios-fecha_nac,
estado_civil LIKE ztabla_usuarios-fecha-nac,
END OF ti_usuarios.
- Luego 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"
Desde el menú contextual:
Utilidades
Opciones
Editor ABAP
Editor
Tildar Long, lineas compatib
descend(72)
2.- Utilización de LOGO y ENCABEZADOS.
En los ALV Grilla podemos agregar logos y encabezados en los listados. Para esto se debe 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.
Anres de completar el catálogo, se llena la tabla TI_HEADER con el encabezado del 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.
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 rutina que carga el encabezado y el logo.
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
i_callback_program = v_regid
it_fieldcat = ti:catalog[]
i_callback_top_of_page = 'TOP_OF_PAGE'
is_layout = st_layout
TABLES
t_outtab = ti_usuarios.
Luego 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 = 'ENJYSAP:LOGO'.
ENFORM.
Con la transacción SE78 se puede ver todos los logos disponibles en el sistema o para cargar nuevos logos.
Finalmente ejecutamos el programa.
3.- Utilización de Status Gui's.
Para poder utilizar un status GUI en un reporte ALV, se debe 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 seá el nombre de la subrutina que se ejecute para capturar la acción reallzada 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.
FORM pf_status USING rt_extab TYPE slis_t_extab.
SET PF-STATUS '0100'.
ENDFORM.
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 (functions 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 funciona como esperamos.
Por último agregamos la subrutina que captura las acciones realizadas por el usuario.
FORM user_command USING r_ucomm TYPE sy-ucomm
rs_selfield TYPE slis_selfield.
CASE r_ucomm.
WHEN 'USU-ACTI'.
ENDCASE.
Ejecutando el reporte, se observa 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 Miguel Angel Acosta Acosta, en su ámbito de estudios para la Carrera Consultor ABAP.
Miguel Angel Acosta Acosta
Profesión: Ingeniero de Sistemas - Ecuador - Legajo: TF64C
✒️Autor de: 238 Publicaciones Académicas
🎓Egresado de los módulos:
- Carrera Consultor en SAP SD Nivel Avanzado
- Carrera Consultor en SAP SD Nivel Inicial
- Máster ABAP for HANA
- Carrera Consultor ABAP Nivel Avanzado
- Carrera Consultor ABAP Nivel Inicial
Disponibilidad Laboral: FullTime
Presentación:
Profesional de ingeniería de sistemas en computación e informática, con experiencia en la implantación y soporte de proyectos informáticos para empresas del sector industrial y financiero.
Certificación Académica de Miguel Acosta