
1. Creación del catálogo de manera automática
Existen dos maneras de crear el catálogo del ALV:
- Manera manual -> cargando manualmente uno a uno los campos que componen el catálogo
- Manera automática -> automáticamente haciendo uso de la función REUSE_ALV_FIELDCATALOG_MERGE
Para hacerlo de manera automática, se debe primero declarar de manera diferente la tabla interna del ALV, utilizando LIKE y haciendo referencia a campos de una tabla de base de datos existente. Pej:
DATA: BEGIN OF ti_usuarios OCCURS 0,
dni LIKE ztabla_usuarios-dni,
nombre_ape LIKE ztabla_usuarios-nombre_ape,
....
END OF ti_usuarios.
y se invoca de la siguiente manera la creació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_catalog[]
EXCEPTIONS
inconsistent_interface = 1
program_error = 2
OTHERS = 3.
Lo otro que se debe hacer es configurar el editor, para qye se restrinja la cantidad de caracteres de ancho de la pantalla a 72. para esto se ingresa al menú Utilidades -> Opciones -> Editor ABAP -> Editor -> Tildamos Long. líneas compatib. descend. (72)
2. Utilización de Logos y Encabezados
En los ALV Grilla podemos agregar logos y encabezados en los listados. Para esto se debe declarar una tabla de tipo SLIS_T_LISTHEADER y una estructura del tipo SLIS_LISTHEADER. Luego la tabla se llena con el encabezado del reporte, el tipo de reporte y la fecha del sistema Ej:
ti_header TYPE slis_t_listheader,
st_header TYPE slis_listheader.
st_header-typ = 'H'.
st_header-info = 'Listado de Usuarios'.
APPEND st_header TO ti_header.
CLEAR st_header.
...
Luego se agrega en la llamada de 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_catalog[]
i_callback_top_of_page = 'TOP_OF_PAGE'
is_layout = st_layout
TABLES
t_outtab = ti_usuarios.
Luego se procede a crear 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 del reporte. Ej:
FORM top_of_page
CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE'
EXPORTING
it_list_commentary = ti_header
i_logo = 'ENJOYSAP_LOGO'.
ENDFORM.
Para ver los logos disponibles en el sistema o cargar nuevos, debemos usar la Tx SE78.
3. Utilización de Status GUIs
Para poder utilizar un status_GUI en un reporte ALV se debe agregar 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 campturar la acción realizada por el usuario. Pej:
CALL FUNTION '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 define la subrutina que setea el status que en el ejemplo es PF_STATUS utilizando el código del status GUI creado.