CATALOGO ALV AUTOMATICO LOGOS ENCABEZADOS Y STATUS
CREACION DEL CATALOGO EN FORMA AUTOMATICA
Existen dos formas de crear el catalogo ALV, la primera de forma manual, ingresando campo por campo, la segunda crear el catalogo en forma automática con la función REUSE_ALV_FIELDCATALOG_MERGE.
call function 'REUSE_ALV_FIELDCATALOG_MERGE'
exporting
i_program_name = repid
i_internal_tabname = 'TI_USUARIOS'
i_client_never_display = 'X'
i_inclname = repid
i_bypassing_buffer = 'X'
changing
ct_fieldcat = ti_catalog[].
exceptions
inconsistent_interface = 1
program_error = 2
OTHERS = 3.
Se debe declarar la tabla interna del ALV. Se debe declarar la tabla interna utilizando LIKE y haciendo referencia a campos de una tabla 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_APE LIKE ZTABLA_USUARIOS-CODIGO_POSTAL,
F_NACIMIENTO 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 cantidad de caracteres de ancho de lap antalla a 72.
Accedemos a la opcion del menú.
UTILIDADES - OPCIONES - EDITOR ABAP - EDITOR Y TL¿ILDAMOS LONG. LINEAS COMPATIB DESCEND.(72)
----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
UTILIZACION DE LOGOS Y ENCABEZADOS
Debemos declarar una tabla del tipo SLIS_T_HEADER y una estructura del tipo SLIS_LISTHEADER.
TI_HEADER TYPE SLIS_T_LISHEADER,
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.
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 = 'H'.
ST_HEADER-INFO = 'TIPO DE REPORTE: '.
ST_HEADER-INFO = 'ALV'.
APPEND ST_HEADER TO TI_HEADER.
CLEAR ST_HEADER.
ST_HEADER-TYP = 'S'.
ST_HEADER-INFO = 'FECHA:'.
ST_HEADER-INFO = V_FECHA.
APPEND ST_HEADER TO TI_HEADER.
CLEAR ST_HEADER.
Luego agregamos en la llamada a la funcion del ALV, el parametro exporting i_call_top_page CON EL LITERAL 'TOP_OF_PAGE', que sera 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
TALES
T_OUTTAB = TI_USUARIOS.
Ahora creamos la subrutina TOP_OF_PAGE con la llamada 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_COMMENTAR = TI_HEADER
I_LOGO = 'ENJOYSAP_LOGO'.
ENDFORM.
Para ver los logos disponibles se usa la transaccion SE78 o cargar nuevos.
Transaccion OAER tambien se usa para subir logos.
------------------------------------------------------------------------------------------------------------------------------------------------------
UTILIZACION DE STATUS GUIS
Amplio margen de funcionalidades de pantalla adicionamos el parametro exporting I_CALLBACK_PF_STATUS_SET con el literal 'PF_STATUS' , que sera el nombre de la subrutina que decalre la utilizacion del status GUI y el parametro exporting I_CALLBACK_USER_COMMAND con el literal 'USER_COMMAND', que sera el nombre de la subrutina que se ejecute para capturar la accion realizada por el usuario.
Ahora definimos la subrutina PF_STATUS que setea el status.
EJ:
FORM PF_STATUS USING RT<-EXTAB TYPE SLIS_T_EXTAB.
SET PF-STATUS '0100'
ENDFORM.
Se crea con el status un boton con la descripcion usuarios activos y el codigo usu_acti.
Tambien en las teclas de funcion (function keys) del status, agregamos los codigosd para poder navegar para atras, volver a la pantalla principal o salir del programa.
Seterales con tipo de funcion (function type) igual a "E".
Por ultimo agregamos la subrutina que capturara las acciones realizadas por el usuario.