martes, 19 de noviembre de 2013

Asignar valores iniciales al filtrado de SELECT-OPTIONS en la pantalla de selección

Si se desea que los campos de SELECT-OPTIONS tengan por defecto un valor, será necesario modificar los

Por ejemplo, si se desean seleccionar los datos de la tabla SFLIGHT con las compañías AA y DL, tendremos que recurrir al evento INITIALIZATION para asignarle los valores de la búsqueda. De este modo, el usuario no tendrá que dar al botón de búsqueda avanzada, ya que los parámetros ya habrán sido introducidos.


REPORT  z_sflight.

* Cargar la tabla SFLIGHT de la base de datos
TABLES: sflight.

* Definición de variables
DATA: g_it_sflight TYPE TABLE OF sflight,
      g_st_sflight TYPE sflight.

* Pantalla de selección
SELECTION-SCREEN: BEGIN OF BLOCK b01 WITH FRAME.

SELECT-OPTIONS: p01 FOR sflight-carrid,
                p02 FOR sflight-connid,
                p03 FOR sflight-fldate.

SELECTION-SCREEN SKIP 1.

SELECT-OPTIONS: p04 FOR sflight-price.

SELECTION-SCREEN:  END OF BLOCK b01.

INITIALIZATION.
  p01-sign = 'I'. "Incluir
  p01-option = 'EQ'. "=
  p01-low = 'AA'.
  APPEND p01.

  p01-sign = 'I'.
  p01-option = 'EQ'.
  p01-low = 'DL'.
  APPEND p01.

START-OF-SELECTION.
* Copiado de los datos a la tabla con los filtros
  SELECT * FROM sflight INTO TABLE g_it_sflight
           WHERE carrid IN p01
           AND   connid IN p02
           AND   fldate IN p03
           AND   price  IN p04.

* Ver en el Debugging los valores de la tabla g_it_sflight
  BREAK-POINT.

En este ejemplo, la variable p01 es una tabla interna cuyos campos son:

  1. p01-SIGN: Para incluir ('I') o excluir un dato ('E').
  2. p01-OPTION: Operación lógica ('EQ', 'BT', 'NE', etc).
  3. p01-LOW: Límite inferior.
  4. p01-HIGH: Límite superior.
Por tanto, se han añadido los datos a la tabla interna en el evento INITIALIZATION.

0 comentarios :

Publicar un comentario