Grundform von Selektionskriterien 

Mit der Anweisung SELECT-OPTIONS werden Selektionstabellen deklariert und auf dem zugehörigen Selektionsbild entsprechende Eingabefelder angelegt. Der zugehörige Text kann als Selektionstext geändert werden. Die vom Benutzer in den Eingabefeldern eingegebenen Werte werden bei der Verarbeitung des Selektionsbilds der Kopfzeile der Selektionstabelle zugewiesen und an die Tabelle angehängt. Die Stellung der Anweisung im Deklarationsteil bestimmt, zu welchem Selektionsbild die Eingabefelder gehören.

Die Grundform der SELECT-OPTIONS-Anweisung ist:

SELECT-OPTIONS <seltab> FOR <f>.

Es wird eine Selektionskriterium <seltab> definiert, das mit einem programmlokalen Feld <f> verbunden ist. Zur Zeit sind Namen von Selektionskriterien auf acht Stellen beschränkt. Als Datentyp von <f> kommen alle elementaren ABAP-Typen bis auf den Datentyp F in Frage. Der Datentyp F, Referenzen und aggregierte Typen können nicht verwendet werden. Wenn das Selektionskriterium zur Einschränkung von Datenbankzugriffen verwendet werden soll, bietet es sich an, das Feld <f> mit Bezug auf eine Spalte der entsprechenden Datenbanktabelle zu typisieren. Dann übernimmt das Selektionskriterium alle Attribute des Datentyps aus dem Dictionary. Dem Benutzer stehen insbesondere deren im Dictionary definierte Feldhilfe (F1) und die Eingabehilfe (F4) auf dem Selektionsbild zur Verfügung.

Die gleichnamige Selektionstabelle <seltab> wird normalerweise vom Benutzer auf dem Selektionsbild oder von aufrufenden Programmen gefüllt. Die Selektionstabelle kann aber auch wie jede andere interne Tabelle im Programm bearbeitet werden.

REPORT demo_sel_screen_select_options.

DATA wa_carrid TYPE spfli-carrid.

SELECT-OPTIONS airline FOR wa_carrid.

LOOP AT airline.
  WRITE: / 'SIGN:',   airline-sign,
           'OPTION:', airline-option,
           'LOW:',    airline-low,
           'HIGH:',   airline-high.
ENDLOOP.

Nach dem Starten des ausführbaren Programms DEMO erscheint folgendes Standardselektionsbild:

Es werden zwei Eingabefelder und eine Drucktaste für weitere Eingaben für das Selektionskriterium angezeigt. Der Wert, den der Benutzer in das erste Eingabefeld eingibt, wird in die Komponente AIRLINE-LOW der Selektionstabelle geschrieben; der Wert für das zweite Feld wird in die Komponente AIRLINE-HIGH geschrieben.

Bei folgender Benutzereingabe:

ist die Ausgabeliste:

SIGN: I OPTION: EQ LOW: AA HIGH:

Läßt der Benutzer das hintere Feld leer (Einzelfeldvergleich), dann lauten die Standardeinstellungen für SIGN und OPTION I und EQ.

Trägt der Benutzer folgende Werte ein:

ist die Ausgabeliste:

SIGN: I OPTION: BT LOW: AA  HIGH: LH

Trägt der Benutzer in das hintere Feld einen Wert ein (Intervallselektion), lauten die Standardeinstellungen für SIGN und OPTION I und BT.

Um noch komplexere Abgrenzungen anzugeben, kann der Benutzer mit der Drucktaste auf der rechten Seite des Selektionsbilds das Fenster Mehrfachselektion anzeigen und beispielsweise mit folgenden Werten füllen:

und:

Übernimmt der Benutzer die Mehrfachselektion, färbt sich der Pfeil auf dem Selektionsbild grün, um dem anzuzeigen, daß Mehrfachselektionen eingegeben sind.

Die Listenausgabe ist:

SIGN: I OPTION: EQ LOW: AA HIGH:
SIGN: I OPTION: EQ LOW: AF HIGH:
SIGN: I OPTION: BT LOW: DL HIGH: LH
SIGN: I OPTION: BT LOW: SA HIGH: UA

Mehrfachselektion bedeutet also das Anhängen mehrerer Zeilen an die Selektionstabelle.

Als Mehrfachselektionen können auch Ausschlußkriterien angegeben werden:

und:

Die Listenausgabe ist:

SIGN: E OPTION: EQ LOW: FC HIGH:
SIGN: E OPTION: BT LOW: SQ HIGH: SR

Die Komponente SIGN der Selektionstabelle enthält bei Ausschlußkriterien den Wert E.

Um die Werte für SIGN und OPTION explizit zu setzen, muß der Benutzer die Eingabefelder auf dem Selektionsbild oder auf dem Bild Mehrfachselektion mit der Taste F2 oder Doppelklick auswählen:

Auf dem Bild Selektionsoptionen pflegen an, das hier für den Einzelfeldvergleich gezeigt ist, kann der Benutzer einen Operator für das Feld OPTION auswählen und in der untersten Zeile zwischen I und E für das Feld SIGN hin- und herschalten. Die Auswahl wird auf dem Selektionsbild durch Symbole vor dem Eingabefeld angezeigt:

Die grüne Farbe zeigt an, daß das SIGN-Feld den Wert I hat. Enthält das SIGN-Feld den Wert E, ist das Symbol rot.

Die Listenausgabe ist in diesem Fall:

SIGN: E OPTION: GE LOW: AA HIGH: