[ABAP] Parameter mit Auswahlbereich (SELECT-OPTIONS)

Variante 1 (DATA)

DATA: lv_matnr TYPE matnr.

* Parameterfeld von ... bis mit Dictionary-Type
SELECT-OPTIONS: so_matnr FOR lv_matnr DEFAULT '0000000001' TO '1000000000'.

START-OF-SELECTION.

* so_matnr ist eine itab mit Kopfzeile
  IF lines( so_matnr ) > 0.
* erstes Element der itab ausgeben
    WRITE: / so_matnr[ 1 ]-sign, so_matnr[ 1 ]-option, so_matnr[ 1 ]-low, so_matnr[ 1 ]-high.
  ENDIF.

Variante 2 (sy-datum)

* von 01.01.1999 bis Systemdatum
SELECT-OPTIONS: so_date FOR sy-datum DEFAULT '19990101' TO sy-datum.

START-OF-SELECTION.

* so_date ist eine itab mit Kopfzeile
  IF lines( so_date ) > 0.
* erstes Element der itab ausgeben
    WRITE: / so_date[ 1 ]-sign, so_date[ 1 ]-option, so_date[ 1 ]-low, so_date[ 1 ]-high.
  ENDIF.

Variante 3 (INITIALIZATION)

SELECT-OPTIONS: so_date FOR sy-datum.

INITIALIZATION.
* Initialwerte für so_date setzen
  so_date[] = VALUE #( ( sign   = 'I'
                         option = 'BT'
                         low    = sy-datum - 5
                         high   = sy-datum
                       )
                     ).

START-OF-SELECTION.
* so_date ist eine itab mit Kopfzeile
  IF lines( so_date ) > 0.
* erstes Element der itab ausgeben
    WRITE: / so_date[ 1 ]-sign, so_date[ 1 ]-option, so_date[ 1 ]-low, so_date[ 1 ]-high.
  ENDIF.

Variante 4 (TABLES)

* Zugriff Tabellenobjekt aus dem Dictionary deklarieren,
* automatische Verknüpfung der Suchilfe auch zu and. Objekten des Selektionsbildschirms
* obsolet (sollte nicht mehr verwendet werden)
TABLES: mara.

* Parameterfeld von ... bis mit Dictionary-Type
SELECT-OPTIONS: so_matnr FOR mara-matnr DEFAULT '0000000001' TO '1000000000'.

START-OF-SELECTION.

* so_matnr ist eine itab mit Kopfzeile
  IF lines( so_matnr ) > 0.
* erstes Element der itab ausgeben
    WRITE: / so_matnr[ 1 ]-sign, so_matnr[ 1 ]-option, so_matnr[ 1 ]-low, so_matnr[ 1 ]-high.
  ENDIF.