Pantalla de selección
Cómo construir la pantalla de selección de un report: parámetros, criterios de selección y diseño.
- Manual ABAP
- 5 de 14
- Anterior
- Generación de listados
- Siguiente
- Sentencias SQL
Antes y ahora
La pantalla de selección es de las partes del manual que mejor ha resistido el paso del tiempo: casi todo sigue igual. Cambian la forma de declarar los tipos y la de usar los valores en las consultas.
| Concepto | En el manual | Hoy | Estado |
|---|---|---|---|
| Tipo de un parámetro | PARAMETERS p LIKE tabla-campo | PARAMETERS p TYPE tabla-campo | Se escribe distinto |
Origen de SELECT-OPTIONS | FOR tabla-campo con TABLES | FOR una variable declarada con DATA | Se escribe distinto |
| Usar los valores en un SELECT | WHERE kunnr IN s_kunnr | WHERE kunnr IN @s_kunnr | Se escribe distinto |
| En una app Fiori | — | Barra de filtros definida con anotaciones CDS | Se escribe distinto |
Sigue igual: OBLIGATORY, DEFAULT, AS CHECKBOX y RADIOBUTTON GROUP, los bloques con SELECTION-SCREEN BEGIN OF BLOCK, AT SELECTION-SCREEN, las variantes.
5.1. PARAMETERS
Se escribe distinto
Así se hace hoy
PARAMETERS: p_vkorg LIKE vbak-vkorg,
p_test AS CHECKBOX DEFAULT 'X'.PARAMETERS: p_vkorg TYPE vbak-vkorg OBLIGATORY,
p_test AS CHECKBOX DEFAULT abap_true.- PARAMETERS parámetro [ (longitud) ] [ TYPE tipo | LIKE var ] [ DECIMALS num ][ DEFAULT valor ] [ MEMORY ID parám ] [ MODIF ID clave] [ FOR TABLE tabla][ NO-DISPLAY ] [ AS CHECKBOX ] [ LOWER CASE ] [ OBLIGATORY ][ RADIOBUTTON GROUP grupo ] [ MATCHCODE OBJECT objeto ][ AS MATCHCODE STRUCTURE ] [ VALUE-REQUEST ] [ HELP-REQUEST ].
Con esta sentencia se declara un parámetro en la pantalla de selección (es aquella, al principio de un programa, en la cual el usuario elige los criterios y condiciones con las que se va a ejecutar el programa). Un PARAMETERS permite que el usuario dé un valor único y concreto a un campo o variable del programa. Parámetros de esta sentencia:
- TYPE tipo | LIKE var: Definición del tipo del parámetro (deben tener un tipo, como las variables) de forma estática (TYPE, dando un tipo) o dinámica (LIKE, toma el tipo de “var”).
- DECIMALS num: Nº de decimales a mostrar (sólo para PARAMETERS de tipo numérico).
- DEFAULT se utiliza para asignar un valor por defecto al parámetro, antes del evento INITIALIZATION. Dicho valor aparecerá en pantalla. El usuario puede cambiarlo si quiere.
- MEMORY ID parám: Permite iniciar un parámetro con el contenido de una var. de memoria.
MODIF ID clave: La clave (de 3 caracteres máximo) es un “grupo de modificación”. Esta opción asocia un PARAMETERS a un grupo de modificación que podrá ser utilizado por las sentencias de modificación de pantalla (como MODIFY SCREEN). Se da una clave a cada campo de la pantalla, y todos los campos que tengan igual clave (forman el grupo de modificación) se tratarán conjuntamente, usando el campo del sistema SCREEN-GROUP1 = clave. Esto es muy útil para module pool’s.
Ejemplo:ABAP PARAMETERS: test1(10) MODIF ID sc1, test2(10) MODIF ID sc2. AT SELECTION-SCREEN OUTPUT. "Evento PBO (por el OUTPUT) * Bucle que recorre todos los campos de la pantalla LOOP AT SCREEN. IF SCREEN-GROUP1 = 'SC1'. SCREEN-INTENSIFIED = '1'. MODIFY SCREEN. ENDIF. ENDLOOP.
- TYPE tipo | LIKE var: Definición del tipo del parámetro (deben tener un tipo, como las variables) de forma estática (TYPE, dando un tipo) o dinámica (LIKE, toma el tipo de “var”).
- NO-DISPLAY: Este PARAMETERS no será visible, pero existe. Puede dársele valor usando la opción DEFAULT, el evento INITIALIZATION, o al llamar al programa con SUBMIT (esta sentencia tiene opciones para dar valor a los parámetros del prog. llamado).
- AS CHECKBOX: Crea el parámetro con la apariencia y funcionalidad de un checkbox.
- LOWER CASE: Permite distinguir en el parámetro caracteres en mayúscula y minúscula. Si no se especifica esta opción, al pulsar ENTER se pasa el valor introducido a todo mayúsculas.
- OBLIGATORY: Este campo o parámetro será obligatorio (debe dársele algún valor).
- RADIOBUTTON GROUP grupo: Crea el parámetro como un botón de selección. Los botones van agrupados, de forma que en el mismo grupo de ellos sólo se puede seleccionar 1.
- MATCHCODE OBJECT objeto. Asigna un objeto de matchcode a un parámetro, para que aparezca un matchcode que, al desplegarlo, nos muestre valores posibles para el campo. (mediante tabla de valores asociada). Como valor para el campo, se puede incluir como comodín el asterisco. Con F4 el efecto es el mismo.
5.2. SELECT-OPTIONS
Se escribe distinto
Así se hace hoy
TABLES vbak.
SELECT-OPTIONS s_kunnr FOR vbak-kunnr.
SELECT * FROM vbak INTO TABLE lt_vbak
WHERE kunnr IN s_kunnr.DATA gv_kunnr TYPE vbak-kunnr.
SELECT-OPTIONS s_kunnr FOR gv_kunnr.
SELECT FROM vbak
FIELDS vbeln, kunnr, netwr
WHERE kunnr IN @s_kunnr
INTO TABLE @DATA(lt_vbak).Un SELECT-OPTIONS vacío no filtra nada: IN @s_kunnr devuelve todos los registros. Es lo esperado, pero tenlo en cuenta en tablas grandes.
- SELECT-OPTIONS criterio FOR campo [ DEFAULT v1 [ TO v2 ] [ OPTION o SIGN s] ][ MEMORY ID parám ] [ MODIF ID clave] [ NO-DISPLAY ] [ LOWER CASE ][ OBLIGATORY ] [ NO-EXTENSION ] [ NO INTERVALS ] [ NO DATABASE SELECTION ] [ MATCHCODE OBJECT objeto] [ VALUE-REQUEST [ FOR LOW| HIGH ] ] [ HELP-REQUEST [ FOR LOW | HIGH ] ].
Con esta sentencia se declara un criterio de selección en la pantalla de selección. El nombre de dicho criterio debe tener 8 caracteres como máximo. Un SELECT-OPTIONS permite que el usuario dé un rango de valores para un campo o variable, o bien varios intervalos, o bien uno o más valores individuales, todo ello entremezclado como se desee. En las condiciones (en IF, opciones WHERE, CHECK, …) que involucren SELECT-OPTIONS se usa el operador IN, ya que chequea si un valor dado está o no en el(los) rango(s) del criterio de selección. La sentencia CHECK SELECT-OPTIONS equivale a CHECK var IN rango (para el SELECT-OPTIONS correspondiente).
Parámetros de esta sentencia:- DEFAULT v1 [ TO v2 ] [ OPTION o SIGN s ]: Para indicar valores por defecto. v1 es el valor LOW, v2 es el valor HIGH. Para valores de selección simples, las OPTION s válidas son: EQ, NE, GE, GT, LE, LT, CP o NP (la opción por defecto es EQ). Para intervalos de selección, las OPTION s válidas son BT (between) y NB (la opción por defecto es BT). Los valores válidos para SIGN son I (inclusive), E (exclusive). El valor por defecto es I.
- MEMORY ID parámetro, MODIF ID clave, NO-DISPLAY, LOWER CASE, OBLIGATORY y MATCHCODE OBJECT objeto: Igual que en PARAMETERS.
- NO-EXTENSION: Limita el criterio de selección a una única entrada en la tabla (o bien 1 valor individual, o 1 rango). Para ello elimina el icono que posibilita las entradas múltiples.
- NO INTERVALS: Limita el criterio de selección a valores simples, es decir, no admite rangos, aunque se pueden poner varios valores individuales.
- NO DATABASE SELECTION: El criterio de selec. no es utilizado en la base datos lógica.
- DEFAULT v1 [ TO v2 ] [ OPTION o SIGN s ]: Para indicar valores por defecto. v1 es el valor LOW, v2 es el valor HIGH. Para valores de selección simples, las OPTION s válidas son: EQ, NE, GE, GT, LE, LT, CP o NP (la opción por defecto es EQ). Para intervalos de selección, las OPTION s válidas son BT (between) y NB (la opción por defecto es BT). Los valores válidos para SIGN son I (inclusive), E (exclusive). El valor por defecto es I.
5.3. Selection-screen
Sigue igual
Así se hace hoy
La pantalla de selección sigue siendo la forma habitual de pedir datos a un report en SAP GUI. En una app Fiori, su equivalente es la barra de filtros:
| Pantalla de selección | Fiori elements |
|---|---|
SELECT-OPTIONS | @UI.selectionField en el campo |
OBLIGATORY | @Consumption.filter.mandatory: true |
| Valor por defecto | @Consumption.filter.defaultValue |
| Ayuda F4 propia | @Consumption.valueHelpDefinition |
| Variantes de selección | Variantes de la barra de filtros, guardadas por cada usuario |
- SELECTION-SCREEN [ POSITION pos ] [ FUNCTION KEY i] [ SKIP [ n ]][ BEGIN OF BLOCK bloque [WITH FRAME [ TITLE título ] ] [NO INTERVALS ] ][ END OF BLOCK bloque] [ BEGIN OF LINE ] [ END OF LINE][ PUSHBUTTON [/] pos (long) nombre USER-COMMAND code [ MODIF ID clave ] ][ COMMENT [ / ] pos (long) nombre [ FOR FIELD f ] [ MODIF ID clave ]][ ULINE [ [ / ] pos (long) ] [ MODIF ID clave ] ].
Esta sentencia se usa para cambiar la apariencia de la pantalla de selección. Permite colocar marcos, bloques, reorganizar los distintos elementos, ... No es el evento AT SELECTION-SCREEN. Sólo se puede usar uno de sus parámetros a la vez, es decir, que para cada nuevo cambio hay que escribir una sentencia SELECTION-SCREEN nueva. Sólo se puede usar en reports (programas tipo 1).
Parámetros:- POSITION pos: Sirve para colocar el cursor en una posición determinada. Sólo se puede usar anidado entre sentencias SELECTION-SCREEN BEGIN OF LINE y END OF LINE.
- FUNCTION KEY i se usa para crear iconos en el menú o barra de herramientas. Se pueden activar hasta 5 de ellos. Se decide cuál ha pulsado el usuario chequeando el campo del sistema SY-UCOMM en el evento AT SELECTION-SCREEN.
- SKIP [ n ]: Produce n líneas en blanco (una por defecto).
- BEGIN OF BLOCK bloque …: Sirve para crear bloques de elementos de pantalla (para agruparlos), los cuales se pueden anidar. La opción WITH FRAME se usa para crear un marco visible que engloba el bloque. Con TITLE se añade un título identificativo en el marco creado. Con NO INTERVALS no se permite al usuario introducir intervalos en ningún campo de entrada del bloque (así no hace falta indicarlo por separado en cada uno de ellos). El bloque se cierra con END OF BLOCK, poniendo el mismo nombre para el bloque.
- BEGIN OF LINE y END OF LINE: Estas dos opciones engloban un bloque de sentencias declarativas (PARAMETERS, SELECT-OPTIONS y/o SELECTION-SCREEN) que aparecerán en la misma línea de la pantalla de selección, en lugar de en columna.
- PUSHBUTTON …: Sirve para crear iconos en la propia pantalla de selección. Con la opción USER-COMMAND se le asocia un código de función. Para asociar texto a un icono debe usarse una sentencia TABLES sscrfields. (tabla que contiene los campos de la pantalla). Para poner texto a los botones de FUNCTION KEY n se rellena el campo sscrfields-functxt_0n (por ejemplo, sscrfields-functxt_01) en el evento INITIALIZATION.
- COMMENT …: Permite incluir comentarios en la pantalla de selección (textos, labels).
- ULINE …: Permite dibujar líneas horizontales (con subrayados). Se puede asociar la línea a un grupo de modificación (como el resto de elementos de la pantalla de selección.
- POSITION pos: Sirve para colocar el cursor en una posición determinada. Sólo se puede usar anidado entre sentencias SELECTION-SCREEN BEGIN OF LINE y END OF LINE.
Para seguir
- Ayudas F4 propias con funciones como F4_DATE o DYNP_VALUES_READ.
- Barras de filtros en Fiori: Fiori y CDS.