✒️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
Lección 7: Catálogo ALV automático, logos, encabezados y status
1.- Creación del catalogo de forma automática
Existen dos formas de crear el catlaogo del ALV, de forma manual ingresando los campos i bien usando la función REUSE_ALV_FIELDCATALOG_MERGE
FORM armar_catalogo_automatico. 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.
IF sy-subrc <> 0. MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4. ENDIF.
ENDFORM. "armar_catalogo_automatico
Para poder hacerlo, necesitamos cambiar dos puntos del programa. El primero es la forma como se declara la tabla interna del ALV. Si creamos el catálogo de forma automática, debemos declarar le tabla interna utilizando LIKE y haciendo referencia a campos de una tabla de base de datos existentes
TYPE-POOLS: slis.*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, direccion LIKE ztabla_usuarios-direccion, codigo_postal LIKE ztabla_usuarios-codigo_postal, fecha_nac 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 restrinja la antidad de caracteres de ancho de pantalla a 72 Utilidades / Opciones / Editor ABAP / Editor / y Tildamos Long. Líneas compatib descend.(72)
2.- Utilización de Logos y encabezados
En los ALV Grilla podemos agrtegar logos y encabezaos en los listados. Para ello debemos declarar una tabla del tipo SLIS_T_LISTHEADER y una estructura S_LIS_LISTHEADER
* Tabla y estructura para la cabecera ti_header TYPE slis_t_listheader, st_header TYPE slis_listheader.
Antes de completar el catalogo vamos a llenar la tabla TI_HEADER con el encabezado del reporte, el tipo de reporte y la fecha del sistema
FORM llenar_cabecera . 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. ENDFORM.
Después 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_COMENTARY_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
Para ver los logos disponibles o cargar nuevos usamos la transacción SE78
Video explicativo de las opciones de un reporte ALV, Detalle, Ordenar, Filtros, Pre visualizar, Exporta a
3.- Utilización de Status GUIs
Para poder utilizar un Status GUI en un repote 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_CALLBAK_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. ENDFORM. "ejecutar_alvAhora 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 las tecla 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 creemos estos botones, debemos acordarnos de setearlos con Tipo de función (Function Type) igual a ‘E’, si no, no funcionaran como esperamos.
Una vez creados estos botones, agregamos la subrutina que capturara la acciones realizadas por el usuario.
FORM user_command USING r_ucomm TYPE syucomm
 
 
 
Agradecimiento:
Ha agradecido este aporte: Francisco Ortega Aguilar
Favorito:
Está publicación ha sido agregada a sus favoritos por: Francisco Ortega Aguilar
Sobre el autor
Publicación académica de Juan Hern?ndez, en su ámbito de estudios para la Carrera Consultor ABAP.
Juan Hern?ndez
Profesión: Programador Inform?tico - Espa?a - Legajo: XQ15K
✒️Autor de: 125 Publicaciones Académicas
🎓Egresado de los módulos:
Disponibilidad Laboral: PartTime
Certificación Académica de Juan Hern?ndez