
Reportes ALV
Es una herramienta de ABAP que se usa para crear reportes de manera eficaz, rapida y estandarizada
Ventajas
No se pueden ejecutar en batch
Reducen tiempos de desarrollo
Proporcionan a reportes funciones estandar (Exportar a excel, etc)
Proporcionan salida por pantalla entandarizada e uniforme
Se basa en la utilización de funciones
Hay tres tipos
Grillas, listas y jerarquico (Solo es utilizado cuando se requiere encabezado y detalle)
REUSE ALV GRID DISPLAY = función para mostrar reporte tipo grilla
REUSE ALV LIST DISPLAY = función para mostrar reporte tipo lista
REUSE ALV HIERSEQ LIST DISPLAY = función para mostrar reporte tipo jerarquico
Creación de Reportes ALV
*&---------------------------------------------------------------------*
*& Report ZREPORTE_ALV
*&
*&---------------------------------------------------------------------*
*&
*&
*&---------------------------------------------------------------------*
REPORT zreporte_alv.
TYPE-POOLS: slis.
* Tabla de salida del ALV
DATA: ti_usuarios TYPE STANDARD TABLE OF ztabla_usuarios,
st_usuarios LIKE LINE OF ti_usuarios.
* Tabla y estructura del catalogo
DATA: ti_catalogo TYPE slis_t_fieldcat_alv,
st_catalogo TYPE slis_fieldcat_alv,
* Estructura para la configuración de la salida
st_layout TYPE slis_layout_alv,
* Variable con el nombre del programa
v_repid LIKE sy-repid.
*----------------------------------------------------------------------*
* Pantalla de selección
*----------------------------------------------------------------------*
SELECTION-SCREEN BEGIN OF BLOCK bloque WITH FRAME TITLE text-002.
PARAMETER: p_grilla RADIOBUTTON GROUP bot2,
p_lista RADIOBUTTON GROUP bot2.
SELECTION-SCREEN END OF BLOCK bloque.
*----------------------------------------------------------------------*
START-OF-SELECTION.
*----------------------------------------------------------------------*
* Selección de los datos
PERFORM seleccion_datos.
* Seteo del Layout
PERFORM layout_alv.
* Armado automático del catálogo
PERFORM armar_catalogo.
* Ejecución de la función del ALV
PERFORM ejecutar_alv.
*&---------------------------------------------------------------------*
*& Form armar_CATALOGO
*&---------------------------------------------------------------------*
FORM armar_catalogo.
CLEAR ti_catalogo.
REFRESH ti_catalogo.
CLEAR st_catalogo.
st_catalogo-fieldname = 'DNI'. "Nombre del campo
st_catalogo-tabname = 'TI_USUARIOS'. "Nombre Tabla
st_catalogo-seltext_s = 'DNI'. "Descripción corta Cabecera
st_catalogo-seltext_m = 'DNI'. "Descripción media Cabecera
st_catalogo-seltext_l = 'DNI'. "Descripción larga Cabecera
st_catalogo-outputlen = 10. "Ancho de la columna
st_catalogo-just = 'R'. "Alineación
APPEND st_catalogo TO ti_catalogo.
CLEAR st_catalogo.
st_catalogo-fieldname = 'NOMBRE_APE'.
st_catalogo-tabname = 'TI_USUARIOS'.
st_catalogo-seltext_s = 'Nombre y Apellido'.
st_catalogo-seltext_m = 'Nombre y Apellido'.
st_catalogo-seltext_l = 'Nombre y Apellido'.
st_catalogo-outputlen = 25.
st_catalogo-just = 'R'.
APPEND st_catalogo TO ti_catalogo.
CLEAR st_catalogo.
st_catalogo-fieldname = 'ESTADO_USU'.
st_catalogo-tabname = 'TI_USUARIOS'.
st_catalogo-seltext_s = 'Estado del Usuario'.
st_catalogo-seltext_m = 'Estado del Usuario'.
st_catalogo-seltext_l = 'Estado del Usuario'.
st_catalogo-outputlen = 20.
st_catalogo-just = 'R'.
APPEND st_catalogo TO ti_catalogo.
CLEAR st_catalogo.
st_catalogo-fieldname = 'DIRECCION'.
st_catalogo-tabname = 'TI_USUARIOS'.
st_catalogo-seltext_s = 'Dirección'.
st_catalogo-seltext_m = 'Dirección'.
st_catalogo-seltext_l = 'Dirección'.
st_catalogo-outputlen = 30.
st_catalogo-just = 'R'.
APPEND st_catalogo TO ti_catalogo.
CLEAR st_catalogo.
st_catalogo-fieldname = 'CODIGO_POSTAL'.
st_catalogo-tabname = 'TI_USUARIOS'.
st_catalogo-seltext_s = 'Código Postal'.
st_catalogo-seltext_m = 'Código Postal'.
st_catalogo-seltext_l = 'Código Postal'.
st_catalogo-outputlen = 15.
st_catalogo-just = 'R'.
APPEND st_catalogo TO ti_catalogo.
CLEAR st_catalogo.
st_catalogo-fieldname = 'F_NACIMIENTO'.
st_catalogo-tabname = 'TI_USUARIOS'.
st_catalogo-seltext_s = 'Fecha Nacimiento'.
st_catalogo-seltext_m = 'Fecha Nacimiento'.
st_catalogo-seltext_l = 'Fecha Nacimiento'.
st_catalogo-outputlen = 15.
st_catalogo-just = 'R'.
APPEND st_catalogo TO ti_catalogo.
CLEAR st_catalogo.
st_catalogo-fieldname = 'ESTADO_CIVIL'.
st_catalogo-tabname = 'TI_USUARIOS'.
st_catalogo-seltext_s = 'Estado Civil'.
st_catalogo-seltext_m = 'Estado Civil'.
st_catalogo-seltext_l = 'Estado Civil'.
st_catalogo-outputlen = 15.
st_catalogo-just = 'R'.
APPEND st_catalogo TO ti_catalogo.
ENDFORM. "armar_catalogo
*&---------------------------------------------------------------------*
*& Form ejecutar_alv
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
FORM ejecutar_alv.
v_repid = sy-repid.
IF p_grilla = 'X'.
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
i_callback_program = v_repid
it_fieldcat = ti_catalogo[]
is_layout = st_layout
TABLES
t_outtab = ti_usuarios.
ELSEIF p_lista = 'X'.
CALL FUNCTION 'REUSE_ALV_LIST_DISPLAY'
EXPORTING
i_callback_program = v_repid
it_fieldcat = ti_catalogo[]
is_layout = st_layout
TABLES
t_outtab = ti_usuarios.
ENDIF.
ENDFORM. "ejecutar_alv
*&---------------------------------------------------------------------*
*& Form SELECCION_DATOS
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
FORM seleccion_datos .
CLEAR ti_usuarios.
REFRESH ti_usuarios.
SELECT dni nombre_ape estado_usu direccion codigo_postal
f_nacimiento estado_civil
FROM ztabla_usuarios
INTO CORRESPONDING FIELDS OF TABLE ti_usuarios.
ENDFORM. " SELECCION_DATOS
*&---------------------------------------------------------------------*
*& Form LAYOUT_ALV
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
FORM layout_alv .
CLEAR st_layout.
st_layout-window_titlebar = text-001. " Titulo Ventana Principal.
ENDFORM. " LAYOUT_ALV