1- Creación del Catálogo en Forma Automático
Existen 2 formas de crear el Catálogo del ALV. Una es definiendo campo a campo. La otra es utilizando la función automática
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 { }
inconsistent_interface = 1
program_error = 2
OTHERS = 3.
Además se debe declarar la Tabla Interna del ALV utilizando LIKE y haciendo referencia a campos de una TBD existente.
* Declarar así para usar el MERGE en el catálogo
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,
END OF ti_usuarios.
Por último se debe restringir la cantidad de caracteres por Línea a 72
Desde Editor ABAP ==> Utilidades ==> Parametrizaciones y en la Pantalla abajo de todo Long.líneas compatib descend.(72)
2- Utilización de Logos y Encabezados
En los Reportes ALV Grilla se pueden agregar Logos y Encabezados en los Listados. Para ello se deben 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
* Armado del Encabezado (3 Líneas de Títulos con la 1ra en letras grandes y las otras 2 en letras chicas)
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.
st_header-typ = 'S'.
st_header-key = 'Tipo de Reporte:'.
APPEND st_header TO ti_header.
st_header-typ = 'S'.
st_header-key = 'Fecha:'.
st_header-info = v_fecha.
APPEND st_header TO ti_header.
En el llamado a la Función del ALV Grilla se agrega un parámetro en EXPORTING denominado I_CALLBACK_TOP_OF_PAGE que contendrá el Nombre de la Subrutina que cargará el contenido del Encabezado y 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' " Nombre de Subrutina
is_layout = st_layout
TABLES
t_outtab = ti_usuarios.
* Subrutina que carga el Encabezado y el Logo
FORM top_of_page.
CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE'
EXPORTING
it_list_commentary = ti_header
i_logo = 'ENJOYSAP_LOGO'. "Nombre del Logo a insertar
ENDFORM.
3- Utilización de STATUS GUI en Reportes ALV
En el llamado a la Función del ALV se agrega un parámetro en EXPORTING denominado I_CALLBACK_PF_STATUS_SET
que contendrá el Nombre de la Subrutina que declare la utilización del Status Gui y el parámetro que contendrá el Nombre de la Subrutina que se ejecute para capturar la acción realizada por el usuario, denominado I_CALLBACK_USER_COMMAND.
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
i_callback_program = v_repid
i_callback_pf_status_set = 'PF_STATUS' "Nombre de Subrutina
i_callback_user_command = 'USER_COMMAND' "Nombre de Subrutina
it_fieldcat = ti_catalogo { }
i_callback_top_of_page = TOP_OF_PAGE' " Nombre de Subrutina
is_layout = st_layout
TABLES
t_outtab = ti_usuarios.
* Subrutina que setea el Status Gui
FORM pf_status USING rt_extab TYPE slis_t_extab.
SET PF-STATUS '0100'.
ENDFORM.
* Subrutina que Captura las Acciones del Usuario
FORM user_command USING r_ucomm TYPE sy-ucomm
rs_selfield TYPE slis_selfield.
CASE r_ucomm.
WHEN 'USU_ACTI'.
ENDFORM.