Ir al contenido
Programación ABAP

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

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.

ConceptoEn el manualHoyEstado
Tipo de un parámetroPARAMETERS p LIKE tabla-campoPARAMETERS p TYPE tabla-campoSe escribe distinto
Origen de SELECT-OPTIONSFOR tabla-campo con TABLESFOR una variable declarada con DATASe escribe distinto
Usar los valores en un SELECTWHERE kunnr IN s_kunnrWHERE kunnr IN @s_kunnrSe escribe distinto
En una app Fiori—Barra de filtros definida con anotaciones CDSSe 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

Antes
PARAMETERS: p_vkorg LIKE vbak-vkorg,
            p_test  AS CHECKBOX DEFAULT 'X'.
Ahora
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.
  • 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

Antes
TABLES vbak.
SELECT-OPTIONS s_kunnr FOR vbak-kunnr.

SELECT * FROM vbak INTO TABLE lt_vbak
  WHERE kunnr IN s_kunnr.
Ahora
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.

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ónFiori 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ónVariantes 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.
Informe de pedidos▶ EjecutarDatos de selecciónClientea➜Fecha01.01.2026a➜Opciones✓Solo pedidos abiertosListaALVSELECT-OPTIONSintervalos y selección múltiplePARAMETERS … AS CHECKBOXcasilla de verificaciónRADIOBUTTON GROUPuna opción entre variasSELECTION-SCREEN BEGIN OF BLOCKagrupa con un marco y título
Cada elemento de la pantalla de selección sale de una sentencia: PARAMETERS para un valor, SELECT-OPTIONS para intervalos y SELECTION-SCREEN para organizar la pantalla.

Para seguir