✒️ABAP Los reportes interactivos
ABAP Los reportes interactivos
REPORTES INTERACTIVOS
QUÉ ES UN REPORTE INTERACTIVO?
NOTA: 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
NOTA: 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.
Ej 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. En este caso, bastaría con crear un reporte interactivo para cumplir con este requerimiento.
AUDIO: Dado que los reportes interactivos requieren de la interacción del usuario con el reporte, entonces no se pueden utilizar reportes interactivos en procesos que se ejecutan DE FONDO o BATCH. Este punto es importante tenerlo en cuenta al momento de realizar la especificación o diseño técnico del reporte, que es el momento donde se piensan todos los aspectos y alcances del programa a crear.
______________________________________________
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 útil. Ellas son:
SY-LSIND: contiene el índice 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 (corresponde al título)
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
Programas para tener en cuenta
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 ej. punto 1. Para esto, vamos a agregar en nuestra tabla de usuarios ZTABLA_USUARIOS los campos: DIRECCIÓN 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)
NOTA: 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 STAR-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. Asi:
CLEAR ti_usuarios.
REFRESH ti_usuarios.
SELECT *
FROM ZTABLA_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á de la manera:
Reporte de Usuarios
------------------------------
23547312 ERNESTO LYNCH
27865987 VICTOR MARTINEZ
28657367 JUAN MARTINEZ
AUDIO: Para obtener el resto de los campos debemos trabajar con los caracteres de la misma forma que hacemos con el campo DNI. Donde escribimos v_dni = SY_LISEL(10). Entonces si quisiéramos obtener por ejemplo el Nombre y Apellido que se encuentra a partir de la posición 10, 30 posiciones a la derecha realizaríamos lo siguiente: v_nombreApellido = SY_LISEL 10(30). Y de la misma forma realizaríamos para el resto de los campos que se encuentren a la derecha del Nombre y 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', sy-uline.
Finalmente ejecutamos el reporte , hacemos clic en la línea correspondiente al DNI 2354.. y veremos el siguiente detalle:
Otra posibilidad, es mostrar la pantalla del nivel de detalle como una ventana de diálogo o subscreen. Para esto usamos la sentencia WINDOWS STATING AT:
y se visualizará la ventana asi:
NOTA: Se pueden crear tantos niveles de listados como se requiera. El nivel del listado donde estamos lo tenemos en la variable SY-LSIND.
 
 
 
Agradecimiento:
Ha agradecido este aporte: Carlos Carreira
Sobre el autor
Publicación académica de Alexander Castellanos, en su ámbito de estudios para la Carrera Consultor ABAP.
Alexander Castellanos
Profesión: Ingeniero de Sistemas - Colombia - Legajo: JS42A
✒️Autor de: 67 Publicaciones Académicas
🎓Egresado del módulo:
Certificación Académica de Alexander Castellanos