✒️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
Catálogo ALV automático, logos, encabezados y status
Creación del catálogo en forma automática: Existen dos formas de crear el catálogo del ALV, la primera es en forma manual, ingresando campo por campo. La segunda, es crear el catálogo en forma automática con la función 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_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.Pero para poder realizar esto debemos modificar dos puntos del programa:
1. La forma como se declara la tabla interna del ALV. 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, por ejemplo:
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. DATA: st_usuarios LIKE LINE OF ti_usuarios.
2. Debemos configurar el editor, para que se restrinja la cantidad de caracteres de ancho de la pantalla a 72, para lo cual accedemos a la opción del menú: 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, de la siguiente manera:
DATA: ti_header TYPE slis_t_listheader, st_header TYPE slis_listheader.
Antes de completar el catálogo, debemos llenar la tabla TI_HEADER con el encabezado del Reporte, el tipo de reporte y la fecha del sistema, por ejemplo:
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 subrutina que cargue el contenido del encabezado y el logo, por ejemplo:
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', de la siguiente manera:
FORM top_of_page. CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE' EXPORTING it_list_commentary = ti_header i_logo = 'ENJOYSAP_LOGO'. ENDFORM. "top_of_page Nota: Para ver los logos disponibles en el sistema o cargar nuevos debemos utilizar la transacción SE78.
Utilización de Status GUIs: Para poder utilizar un Status GUI en un reporte 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_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
pre { direction: ltr; color: #000000; orphans: 2; widows: 2; background: transparent } pre.western { font-family: "Liberation Mono", "Courier New", monospace; so-language: es-ES } pre.cjk { font-family: "Noto Sans Mono CJK SC", monospace; so-language: zh-CN } pre.ctl { font-family: "Liberation Mono", "Courier New", monospace; so-language: hi-IN } p { margin-bottom: 0.25cm; direction: ltr; color: #000000; line-height: 115%; orphans: 2; widows: 2; background: transparent } p.western { font-family: "Liberation Serif", "Times New Roman", serif; so-language: es-ES } p.cjk { font-family: "Noto Serif CJK SC"; so-language: zh-CN } p.ctl { font-family: "Lohit Devanagari"; so-language: hi-IN } a:link { color: #000080; so-language: zxx; text-decoration: underline } a.sdfootnotesym-western { font-size: 10pt } a.sdfootnotesym-cjk { font-size: 10pt } a.sdendnotesym-western { font-size: 10pt } a.sdendnotesym-cjk { font-size: 10pt }
 
 
 
Sobre el autor
Publicación académica de Jos? Valent?n L?pez Montilla, en su ámbito de estudios para la Carrera Consultor ABAP.
Jos? Valent?n L?pez Montilla
Profesión: Ingeniero de Sistemas - Venezuela - Legajo: GT35M
✒️Autor de: 134 Publicaciones Académicas
🎓Egresado de los módulos:
Disponibilidad Laboral: FullTime
Presentación:
Ingeniero de sistemas y magister scientiarum en ingenier?a de software, con m?s de 30 a?os de experiencia en el ?rea de tecnolog?a de informaci?n, objetivo principal consultor sap abap
Certificación Académica de Jos? L?pez