✒️ABAP / Los reportes interactivos Por Mayra Pino Rodriguez
ABAP Los reportes interactivos

REPORTES INTERACTIVOS
Es un tipo de reporte ABAP, dde se muestra un primer listado por pantalla, con cierta información y luego haciendo doble click 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.
El reporte interactivo es ejecutado solo en forma ONLINE, ya q requiere de la interacción con el usuario.
Dado q los reporte interactivo requiere de la interacción del usuario con el reporte, entonces no se puede utilizar reporte interactivo en procesos q se ejecutarán de fondo, este punto es importante tenerlo en cuenta al momento de realizar la especificación o diseño técnico del reporte q es el momento dde se piensa todos los aspectos y alcance del programa a crear.
2. EVENTOS Y VARIABLES DE UN REPORTE INTERACTIVO.
Cdo hacemos click en alguna posición de la lista ppal q se muestra por pantalla, se ejecutará el evento
AT LINE-SELECTION. Este evento debemos ubicarlo luego del evento START-OF-SELECTION.
Variables del sistema:
- SY-LSIND: contiene el índice de la lista de detalle, es decir contendrá el nro de fila clickeada.
- SY-LISEL: tiene el contenido de la línea seleccionada.
- SY-LILLI: contiene la línea seleccionada de la lista, comenzando desde la primera línea q 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.
Programa de prueba estándar ABAP q nos pueden servir para practicar, ellos son:
- DEMO_LIST_INTERACTIVE_1
- DEMO_LIST_INTERACTIVE_2
- DEMO_LIST_INTERACTIVE_3
- DEMO_LIST_INTERACTIVE_4
3. MI PRIMER REPORTE INTERACTIVO
Vamos a agregar en nuestra tabla de usuarios ZTABLA_USUARIOS los campos: DIRECCION CHAR 30,
CODIGO_POSTAL CHAR 4, F_NACIMIENTO DATS 8 y ESTADO_CIVIL q tendrá un dominio, q será CHAR 1 y admitirá los valores S(Soltero) y C (Casado).
MODIFICACION DE UNA TABLA BASE DE DATOS.
Debido a q realizamos cambios en la estructura de la tabla, tendremos q adaptar la tabla BD, utilizando la opción del menú:
Utilidades --> Objeto BD --> Utilidad BD --> Activar y adaptar BD
Después debemos volver a generar la superficie de actualización, q 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.
Ej:
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.
Para obtener el resto de los campos debemos trabajar con los caracteres de la misma forma q hacemos con el campo DNI dde escribimos v_dni = SY-LISEL(10) entonces si quisiéramos obtener el nombre y apellido q 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 q se encentren a la derecha del nombre apellido.
Ahora vamos a agregar el evento AT LINE_SELECTION. El código q este dentro de este evento se ejecutará cdo hagamos doble click en algún lugar de la pantalla, dde 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 click.
Luego crearemos la subrutina GENERAR_REPORTE_NIVEL2, la cual seleccionará de la tabla ZTABLA_USUARIOS los datos de detalle correspondiente al usuario, cuyo DNI fue capturado anteriormente y los imprimirá por pantalla.
Ej: Declaramos la subrutina q crea el reporte de nivel 2
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.
Ej:
TOP-OF-PAGE DURING LINE-SELECTION.
WRITE:/ 'Detalle de los Usuarios', sy-uline.
Finalmente ejecutamos el reporte, hacemos click en la línea correspondiente al DNI y veremos el listado de nivel 2.
Otra posibilidad, es mostrar la pantalla del nivel de detalle como una ventana de dialogo o subscreen. Para ello usamos la sentencia WINDOWS STARTING AT.
Ej:
* Determino posición en la pantalla y ancho y alto de la Subscreen
WINDOW 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 Mayra Maria Pino Rodriguez, en su ámbito de estudios para la Carrera Consultor ABAP Nivel Inicial.
Mayra Maria Pino Rodriguez
Profesión: Licenciada Cibernética Matemática - Republica Dominicana - Legajo: RA62Z
✒️Autor de: 56 Publicaciones Académicas
🎓Egresado del módulo:
Certificación Académica de Mayra Pino






Disponibilidad Laboral: FullTime


















