✒️ABAP Los reportes interactivos
ABAP Los reportes interactivos
QUE ES REPORTE INTERACTIVO?:
Es un tipo de reporte de abap, donde se muestra un primer listado por pantall con cierta información y luego haciendo doble click en la linea del primer listado accedemos a otros datos relativos de esa linea(mas detalle) y asi por cuantos nieveles tenga el listado.
A diferencia del Reporte clásico que puede ser ejecutado en batch u Online, el reporte interactivo solo se procesa ONLINE.
La gran ventaja del reporte Interactivo es que pocas lineas de código de programa se puede crear un reporte de interacción con el usuario.
Un ejemplo de cuando nos convendria crear un Reporte Interactivo:
Supongo que tengo un 1er listado que muestra los usuarios con sus nombres y luego cuando hacemos doble click sobre un usuario en particular, vemos datos detallados del usuario seleccionado, como puede ser Pais, Codigo postal, región,etc. en este caso bastaria con crear un reporte interactivo.
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.
Cuando hacemos click en alguna posición de la lista principal que se muestra por pantalla, se ejecutará el evento AT LINE-SELECTION. Este evento debemos ubicarlo despues del evento START-OF-SELCTION. En este momento ciertas variables del sistema se completan concierta información útil, ellas son:
SY-LSIND: contiene el indice de la lista del detalle.Es decir, sicliqueamos la primer linea el SY-LSNID será= 1
SY-LISEL: Tiene el contenido de la linea seleccionada, por ejemplo el dni usuario y nombre
SY-LILLI: Contiene la linea seleccionada de la lista . Es decir si seleccionamos la 1era linea del 1er listado el valor será 3 ,porqué 3 porque se suman las lineas de los titulos.
SY-CUROW: contiene la posición del cursos vertical de la pantalla.cliqueando la 1era linea el valor será "3"
Utilizaremos el vento TOP-OF-PAGE DURING LINE-SELECTION para imprimir la pantalla de los textos de las cabeceras de las listas de detalle.
Programas que podemos tener en cuenta para practicar:
DEMO_LIST_INTERACTIVE_1
DEMO_LIST_INTERACTIVE_2
DEMO_LIST_INTERACTIVE_3
DEMO_LIST_INTERACTIVE_4
2. MI PRIMER REPORTE INTERACTIVO:
Creamos un reporte interactivo para eso le agregamos a la tabla creada por cada uno de nosotros ZTABLA_USUARIOS_XXXX
le agregamos el campo Direccion de char 30 posiciones, Codigo Postal de 4posic., F.de nacimiento que será DATS de 8 y estado Civil que tendrá dominio (es un objeto que tiene asociado unambito de valroes) que será de char 1 y admitirá dos valores S y C (Soltero y casado).
Modificar la Tabla de la base de datos:
Debimos que realizamos cambios en la estructura de la tabla , tendremos que adaptar la tabla de base de datos, utilizando la opción del Menú:
> Utilidades
> Objeto de base de datos
>Utilidad base de datos
>activar y adaptar base de datos
DEBEMOS DESPUES VOLVER A GENERAR LA SUPERFICIE DE ACTUALIZACIÓN, VER uNIDAD 3 Y finalmente ingresamos los datos en la tabla por la Transacción SM30.
Luego creamos el programa ZREPORTE_INT_USUARIOS y Dentro del evento START-OF-SELECTION realizamos la seleccion del DNI y NOMbre y Apellido de los usuarios. Despues imprimimos por pantalla el resultado de la selección realizada
CLEAR ti_usuarios.
REFRESH ti_usuarios.
Select *
FROM ztablas_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
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 esté dentro de este evento se ejecutará cuando hagamos doble click en algun lugar de la pantalla, donde se visualiza el primer listado.
Utilizaremos la variable SY-LISEL para obtener el DNI correspondiente a la linea de la pantalla a la cual realizamos clic.Luego crearemos la subrutina GENERAR_REPORTE_NIVEL2, la cual seleccionará de la tabla ZTABLA_USUARIOS_XXXX los datos del detalle correspondiente al usuario, cuyo DNI fue capturado y lo imprimirá en pantalla.
Ejemplo
AT LINE-SELECTION.
v_dni = sy-lisel(10) .
PERFORM generar_reporte_nivel2.
Utilizaremos el vento TOP-OF-PAGE DURING LINE-SELCTION para imprimir por pantalla la cabecera de cada nivel de listados de detalle.
Ejemplo del evento:
TOP-OF-PAGE DURING LINE-SELECTION.
write:/ 'Detalle de los Usuarios', sy-uline.
Cuando ejecutemos el reporte la salida quedaria
DNI | 23547312 |
Nombre y Apellido | Ernesto Lynch |
Estado Usuario | A |
Dirección | Florida 543 |
Codigo Postal | 1408 |
fecha nacimiento | 06.06.1980 |
Otra posibilidad , es mostrar la pantalla del nivel de detalle como una ventana de dialogo o subscreen(pantalla independiente)
para eso usamos la sentencia WINDOWS STARTING AT , como veremos en el ejemplo
* Determino posicion de la pantalla y ancho y alto de la subscreen
WINDOW STARTING AT 1 15
ENDING AT 79 23.
x1=1, Y1=15 >>> columnas y lineas coordenadas que determinan desde la esquina superior izquierda
x2= 79 ,Y2=23 >>> columnas, lineas son coordenadas de la esquina inferior derecha
Se pueden crear tantos niveles de listados como se requiera.
El Nivel de listado donde estamos lo tenemos en la variable SY-LSIND
 
 
 
Sobre el autor
Publicación académica de Carlos Alberto Carreira, en su ámbito de estudios para la Carrera Consultor ABAP.
Carlos Alberto Carreira
Profesión: Consultor Técnico en Jde W.s. - Argentina - Legajo: KC15G
✒️Autor de: 92 Publicaciones Académicas
🎓Cursando Actualmente: Consultor ABAP Nivel Inicial
🎓Egresado de los módulos:
Certificación Académica de Carlos Carreira