✒️ABAP Los reportes interactivos
ABAP Los reportes interactivos
REPORTE INTERACTIVO
Los reportes interactivos son una forma de combinar las instrucciones de formato de listados, los eventos y las pantallas de selección, la unión de estas tres opciones permiten, por ejemplo, que un usuario introduzca un dato (a través de las ordenes de introducción de datos) seguidamente controlar si el usuario a pulsado alguna tecla (a través de los eventos) y por ultimo dependiendo de qué tecla ha pulsado, visualizar un tipo de listado u otro (a través de las ordenes de formateo de listados).
SENTENCIAS
HIDE f1 [, f2, … fn]. Almacena en memoria interna (“área hide”) el contenido de una línea de un listado interactivo (la línea actual, la del cursor), mientras ésta es mostrada. Se puede hacer incluso con líneas que no sean visualizadas en pantalla. Se usa en el evento AT LINE-SELECTION, que es el momento en el que el usuario hace doble clic sobre alguna línea del listado interactivo. Así, con esta sentencia se puede conocer (leer) la línea que el usuario ha elegido. Los f1 … fn son los campos que se están imprimiendo en pantalla, susceptibles de que el usuario los seleccione (los que deben “recordarse”).
HIDE debe codificarse justo después del WRITE que muestra el campo o variable a guardar en memoria, o bien el WRITE que muestra la línea correspondiente (si concretamente esa variable no se va a visualizar). El “área hide” es una tabla con tantas filas como líneas tiene el listado, y 2 campos o columnas por línea (y por campo a almacenar): variable - contenido. Aquí se guarda el valor de la variable dada, para cada línea del listado.
WINDOW STARTING AT x1 y1 ENDING AT x2 y2.
Muestra el listado secundario (detallado) en una ventana nueva aparte. (x1, y1) son las coordenadas (en (columnas, líneas), no en pixels) de la esquina superior izquierda de la ventana, y (x2, y2) son las coordenadas de la esquina inferior derecha. Se pueden crear status (menús, botones, etc.) específicos para las ventanas, pero entonces no aparecerá el menú estándar ni la barra de herramientas (esas funciones básicas quedarán desactivadas) salvo que se definan de nuevo. El status a crear para una ventana debe ser del tipo “ventana de diálogo”, no “lista”. Soporta todas las funciones de los listados secundarios.
SET PF-STATUS status EXCLUDING código | tabla [ INMEDIATELY ].
- Uso: Activa un nuevo status en pantalla. Un status es un conjunto de puntos de menú, botones, iconos o teclas de función, que se definen de forma específica para una(s) pantalla(s) de un programa o informe. Algunos de estos elementos existen siempre activos en todo status de forma predefinida, pero pueden desactivarse. Cada punto de menú, botón, ícono o teclas de función, debe tener definido su propio código, distintos todos entre sí, para que por programa se pueda saber cuál se ha pulsado (mediante eventos como AT PFn, AT USER-COMMAND). Se pueden incluir funciones estándar, iconos o botones. Para la barra de menú se pueden además “incorporar normas”.
- Creación de un status, por menú: Herramientas – Workbench Abap 4 – Menu Painter – Status (o bien haciendo doble clic sobre el nombre del status a crear, una vez escrita la sentencia SET PF-STATUS). Al finalizar el diseño del status, grabarlo y activarlo. En el programa, antes de mostrar el listado, poner la sentencia SET PF-STATUS name_status (8 caracteres máximo) para que éste aparezca en pantalla.
- Desactivación o exclusión de funciones (aparecerán en gris y no se podrán pulsar): para ello se usa la opción EXCLUDING. Tras EXCLUDING puede especificarse, o bien un código concreto o una tabla, en la cual por cada entrada se ha guardado uno de los códigos a desactivar (para el caso de que haya que excluir varios). Esto hace los status creados mucho más reutilizables. Con INMEDIATELY se activa el status sólo en la pantalla actual, y tras pasar a otra vuelve a activarse el status principal.
SET TITLEBAR número_de_título [ WITH g1 … g9].
Inserta un título de pantalla, para la barra de títulos de la ventana de Windows. Para crearlo, por menú: Herramientas – Workbench Abap 4 – Menu Painter – Lista Títulos. Dar el nombre del programa asociado, crear el título, escribir el título, grabar y activar (es un objeto SAP autónomo, no es un atributo interno del programa). Para que aparezca en pantalla, se debe escribir: SET TITLEBAR número_de_título. (es un código de 3 caracteres que se refiere a una línea de texto almacenado en la Lista de Títulos). Esta sentencia debe ir antes del primer WRITE que constituya el listado. Con WITH se pueden introducir hasta 9 parámetros actuales g1 ... g9, que sustituirán a los actuales &1 ... &9.
READ LINE linea [ INDEX índice ] [ FIELD VALUE f1 [ INTO g1 ] … fn [ INTO gn ] ][ OF CURRENT PAGE | OF PAGE p].
En su forma básica, lee el contenido de una línea del listado: por defecto es la actual (SY-LILLI), donde se activó el evento AT LINE-SELECTION (esta sentencia debe usarse tras seleccionar una línea); o la de número de línea indicado en el parámetro INDEX. Dicho contenido se almacena como string en el campo del sistema SY-LISEL. Además, pone ese valor en el leído en el campo f de un HIDE f, si hay. Devuelve un valor de retorno en SY-SUBRC (0 si la lectura fue correcta, 4 si hubo algún error, como que no haya línea para leer). Con FIELD-VALUE, en lugar de recorrer la línea como un string, la lee “partida” en las variables especificadas fi, o en las gi si se usa INTO. Con OF CURRENT PAGE se indica leer de la página actual, y con OF PAGE p se especifica la página donde está la línea a leer.
MODIFY LINE n [ INDEX índice | OF CURRENT PAGE | OF PAGE OF p ] [ modifics. ].
Modifica todo el contenido de la línea n del listado, colocando su contenido en el campo del sistema SY-LISEL (que también puede modificarse con asignaciones). Devuelve código de retorno 0 si la operación fue correcta, y distinto de cero en otro caso. En modificadores puede especificarse un nuevo color, nuevo formato.
SCROLL LIST [ parámetros ].
Realiza el scroll de parte o de todo un listado, mediante programa. Permite desplazarnos por la lista, mediante unas barras de desplazamiento. Devuelve código de retorno cero si el desplazamiento fue correcto, y distinto de cero en otro caso. Esta sentencia tiene muchas variantes, como: TO FIRST PAGE, TO LAST PAGE, TO PAGE pag, TO COLUMN col, FORWARD, BACKWARD, LEFT, RIGHT. También tiene muchos parámetros, como INDEX nº lista y LINE nº línea (todas las variantes de scroll los admiten).
DESCRIBE LIST NUMBER OF LINES líneas PAGES pags [ INDEX índice ].
Esta sentencia es útil para conocer el número total de páginas del listado, número de líneas. Con el parámetro INDEX se especifica de qué listado se leen esos datos.
DESCRIBE LIST [ LINE línea ] PAGE pag [ INDEX índice ] [ opciones ].
Devuelve el número de línea y de la página (actuales) del listado dado. Las opciones pueden ser: LINE-SIZE n cols, LINE-COUNT n filas.
SET CURSOR FIELD f [ OFFSET var ] [ LINE línea ] [ VALUE val ] [ LENGTH long ].
Posiciona el cursor sobre una línea dada del listado interactivo. Transfiere a la variable f el nombre (no el valor) de la variable donde se posicionó el cursor en el listado. Devuelve 0 en SY-SUBRC si la operación fue correcta, y distinto de cero en otro caso. Si el cursor no se posiciona en una variable, sino en una constante, variable local o literal, SY-SUBRCsigue valiendo cero, pero en la variable f se guarda SPACE (un blanco).
- Parámetros: Todos usan variables de salida (para recoger información). Con OFFSET se recoge la posición del cursor en un campo concreto. Con LINE se obtiene la línea donde se posicionó el cursor, con VALUE el valor de ese campo, y con LENGTH la longitud de salida del campo (la longitud del substring mostrado, no la longitud de la definición del mismo).
- Uso:Esta sentencia se usa si el cursor queda dentro del área visible del listado (normalmente éste será mayor que lo que cabe en pantalla). Si no, no tiene efecto (se debería usar antes SCROLL LIST para mover el área de visualización). El cursor puede posicionarse en líneas WRITE y SKIP, pero no sobre ULINE’s.
GET CURSOR LINE f [ OFFSET variable ] [ VALUE val ] [ LENGTH long ].
Devuelve la posición del cursor, en pantallas o listados. Se obtiene el número de línea en la que se posicionó el cursor, para prevenir la selección de líneas no válidas del listado. Los parámetros son como en la sentencia SET CURSOR FIELD.
SET USER-COMMAND código.
Sólo para listados interactivos. Se usa para forzar la ejecución de un comando, definido en un menú o status, sin que el usuario lo desencadene. Mueve dicho código al campo SY-UCOMM.
 
 
 
Sobre el autor
Publicación académica de Sergio Armando Beltran Castaneda, en su ámbito de estudios para la Carrera Consultor ABAP.
Sergio Armando Beltran Castaneda
Profesión: Ingeniero de Sistemas con Especialización en Gerencia de Proyectos - Colombia - Legajo: WK55K
✒️Autor de: 70 Publicaciones Académicas
🎓Cursando Actualmente: Consultor ABAP Nivel Avanzado
🎓Egresado del módulo:
Disponibilidad Laboral: FullTime
Presentación:
Soy ingeniero de sistemas desde hace mas de 10 años y quiero enfocarme en el mundo sap, iniciando en el lenguaje abap, con miras a ampliar mi conocimiento profesional y laboral.
Certificación Académica de Sergio Beltran