✒️ABAP Los reportes interactivos
ABAP Los reportes interactivos
¿Qué es un Reporte interactivo?
Es un tipo de reporte ABAP, donde se muestra un primer listado por pantalla, con cierta información
y luego haciendo doble clic a una línea determinada del primer listado,
se accede a otros datos relativos a esa línea y así sucesivamente por cuantos niveles tenga el listado.
A diferencia del Reporte clásico, que puede ser ejecutado tanto Online como Batch,
el reporte interactivo es ejecutado solo en forma Online, ya que requiere de la interacción con el usuario.
La principal ventaja de los reportes interactivos es que con pocas líneas de código se puede crear un reporte con interacción
con el usuario, a diferencia de los programas de diálogo, que requieren de mucho más tiempo de construcción.
Veamos un ejemplo para el cual nos convendría crear un reporte interactivo:
Supongamos que tenemos un primer listado que muestra los usuarios con sus nombres
y luego cuando hacemos doble clic sobre un usuario en particular, vemos datos detallados del usuario, como pueden ser el país,
código postal, región, etc. En este caso, bastaría con crear un reporte interactivo para cumplir con este requerimiento.
Eventos y variables de un reporte interactivo
Cuando hacemos clic en alguna posición de la lista principal que se muestra por pantalla, se ejecutará el evento AT LINE-SELECTION.
Este evento debemos ubicarlo luego del evento START-OF-SELECTION.
En este momento, ciertas variables del sistema se completan con información muy útil. Ellas son:
SY-LSIND:
contiene el indice de la lista de detalle.
SY-LISEL:
tiene el contenido de la línea seleccionada.
SY-LILLI:
contiene la línea seleccionada de la lista.
SY-CUROW:
contiene la posición del cursor vertical en la pantalla.
Utilizaremos el evento TOP-OF-PAGE DURING LINE-SELECTION para imprimir por pantalla los textos de las cabeceras de las listas de detalle.
Existen algunos programas de prueba estándar ABAP que nos pueden servir para practicar. Ellos son:
DEMO_LIST_INTERACTIVE_1
DEMO_LIST_INTERACTIVE_2
DEMO_LIST_INTERACTIVE_3
DEMO_LIST_INTERACTIVE_4
Mi Primer reporte interactivo
Vamos a crear el reporte interactivo del ejemplo que dimos en el punto 1. Para esto, vamos a agregar en nuestra tabla
de usuarios ZTABLA_USUARIOS los campos:
DIRECCION que será CHAR de 30 posiciones, CODIGO_POSTAL que será CHAR de 4 posiciones,
F_NACIMIENTO que será DATS de 8 posiciones
y ESTADO_CIVIL que tendrá un dominio, que será CHAR de 1 posición y admitirá los valores S(Soltero) y C (Casado).
Modificación de una tabla base de datos
Debido a que realizamos cambios en la estructura de la tabla, tendremos que adaptar la tabla base de datos
, utilizando la opción del menú:
> Utilidades
|-> Objeto Base datos
|-> Utilidad base datos
|-> Activar y adaptar base de datos
Después debemos volver a generar la superficie de actualización, que creamos en la unidad 3
y finalmente ingresamos datos en la tabla a través de la transacción SM30.
Luego creamos el programa ABAP ZREPORTE_INT_USUARIOS. Dentro del evento START-OF-SELECTION realizamos la selección
del DNI y Nombre y Apellido de los usuarios. Después imprimimos por pantalla el resultado de la selección realizada.
CLEAR ti_usuarios.
REFRESH ti_usuarios.
SELECT *
FROM zoqs36a_usuarios
INTO TABLE ti_usuarios.
LOOP AT ti_usuarios INTO wa_usuarios.
FORMAT COLOR COL_TOTAL INTENSIFIED.
WRITE:/ wa_usuarios-dni,
wa_usuarios-nombre_ape.
ENDLOOP.
La salida por pantalla de nuestro programa se verá un listado con en DNI y el nombre con apellido:
Ahora vamos a agregar el evento AT LINE-SELECTION. El código que este dentro de este evento se ejecutará cuando
hagamos doble clic en algún lugar de la pantalla, donde se visualiza el primer listado.
Utilizaremos la variable del sistema SY-LISEL para obtener el DNI correspondiente a la línea de la pantalla a la cual le realizamos clic.
Luego crearemos la subrutina GENERAR_REPORTE_NIVEL2, la cual seleccionará de la tabla ZTABLA_USUARIOS los datos de detalle
correspondientes al usuario, cuyo DNI fue capturado anteriormente y los imprimirá por pantalla.
AT LINE-SELECTION.
v_dni = sy-lisel(10).
PERFORM generar_reporte_nivel2.
Utilizaremos el evento TOP-OF-PAGE DURING LINE-SELECTION para imprimir por pantalla la cabecera de cada nivel de listados de detalle.
TOP-OF-PAGE DURING LINE-SELECTION.
WRITE:/ 'Detalle de los Usuarios', v_dni.
Finalmente ejecutamos el reporte, hacemos clic en la línea correspondiente al DNI 23547312 y veremos el siguiente detalle.
Otra posibilidad, es mostrar la pantalla del nivel de detalle como una ventana de dialogo o subscreen.
Para esto usamos la sentencia WINDOWS STARTING AT tal como mostramos a continuación.
WINDOWS STARTING AT 1 15
ENDING AT 79 23.
Se pueden crear tantos niveles de listados como se requiera.
El nivel del listado donde estamos lo tenemos en la variable SY-LSIND.
 
 
 
Sobre el autor
Publicación académica de Alex Francisco Lemos Collazos, en su ámbito de estudios para la Carrera Consultor ABAP.
Alex Francisco Lemos Collazos
Profesión: Ingeniero en Sistemas - Colombia - Legajo: QS36A
✒️Autor de: 174 Publicaciones Académicas
🎓Cursando Actualmente: Master S/4HANA Material Management
🎓Egresado de los módulos:
- Máster Material Management en SAP S/4HANA LOGISTIC
- Carrera Consultor ABAP Nivel Avanzado
- Carrera Consultor ABAP Nivel Inicial
- Carrera Consultor en SAP SD Nivel Inicial