✒️ABAP Los reportes interactivos
ABAP Los reportes interactivos
2.4. EVENTOS PARA REPORTS INTERACTIVOS:
Los listados interactivos se muestran igual por pantalla que los normales (la lista básica. Se puede usar un modelo estándar de listado, y adaptarlo a cada report concreto), salvo que en ellos el usuario puede lanzar una(s) lista(s) secundaria(s) en función del (los) evento(s) que active. La lista secundaria machaca en pantalla la lista primera. Pueden generarse como mucho 20 nuevos listados, salvo que se use la sentencia WINDOW para crear una ventana nueva para el nuevo listado. Sentencias o eventos propias de estos listados:
- AT LINE-SELECTION.
- Para reports interactivos: el usuario puede seleccionar elementos de la lista mostrada. Se activa si el usuario selecciona (pick-up: doble clic) una línea del informe (generada por WRITE, ULINE, SKIP, ... Pueden incluso seleccionarse líneas en blanco o no válidas: el programa debe discriminarlas), y sólo tras mostrar el informe básico, o bien pulsando F2 o por menú Edit – Choose. Se usa para ver información asociada al elemento seleccionado.
- AT PFn.
- Se activa al ser pulsada la tecla de función Fn especificada (n va de 0 a 99), y sólo tras mostrar el informe básico. Sin crear un status específico, se pueden usar las funciones Fn que no estén ya predefinidas (como son F1 para la ayuda o F3 para back); el código de la tecla Fn pulsada se guarda en SY-UCOMM. Pero este evento debería usarse sólo para probar el programa; para su versión final usar AT USER-COMMAND.
- AT USER-COMMAND.
Se procesa si el usuario activa un comando, asociado a un icono, botón o elemento de menú, en un status específico, y sólo tras mostrar el informe básico. Una vez disparado el evento es cuando se puede decidir qué comando se ha pulsado, consultando el campo del sistema SY-UCOMM.
Para que el evento TOP-OF-PAGE se active en un listado secundario (así como las cabeceras estándar), debe tener el parámetro DURING LINE-SELECTION. En cambio sí funciona el END-OF-PAGE. Dentro de uno de estos 3 eventos propios de los listados interactivos, usar IF o CASE para decidir las acciones a realizar, en lugar de intentar activar otros eventos. Los siguientes campos del sistema (tabla SYST) pueden servir para controlar el flujo de programa:
- SY-LSIND: Número del listado (el básico es el nº 0), aunque esté en una ventana diferente.
- SY-LISTI: Nº de la lista en la que se activó el evento.
- SY-LILLI: Nº de línea de la lista en la que se activó el evento.
- SY-LISEL: Contenido de la línea en la que se activó el evento.
- SY-CUROW: Posición de la línea en la que se activó el evento.
- SY-UCOMM: Código de función que activó el evento.
- SY-PFKEY: Status de la lista.
Dentro de ellos NO se pueden codificar sentencias / eventos GET para acceder a bases de datos lógicas (deberá hacerse con SELECT’s), ni hacer SUBMIT’s (llamadas a otros programas).
Se puede volver a la lista anterior con el botón BACK (ç) o bien F3. También se puede fijar un valor para el campo SY-LSIND, y darle el número de lista a la que se debe ir (la básica es la 0). El sistema borra los datos de las listas con número mayor al especificado (con lo que con este método sólo se puede retroceder), las anteriores no. Debe actualizarse SY-LSIND como última sentencia del evento o bloque, para evitar que otras sentencias interfieran y aparezcan problemas.
Pueden asignarse distintos status a las listas secundarias, para crearles botones, menús, … Para ello usar la sentencia SET PF-STATUS nombre [ EXCLUDING f | tabla ]. Con el parámetro EXCLUDING se desactiva en el status dado uno (f) o más (los de la tabla) códigos de función. Así los status pueden hacerse más reutilizables.
 
 
 
Sobre el autor
Publicación académica de Cesar Ismael Rodriguez Zorrilla, en su ámbito de estudios para la Carrera Consultor ABAP.
Cesar Ismael Rodriguez Zorrilla
Republica Dominicana - Legajo: MW21J
✒️Autor de: 120 Publicaciones Académicas
🎓Egresado de los módulos:
Certificación Académica de Cesar Rodriguez