SAP NetWeaver AS ABAP Release 750, ©Copyright 2016 SAP AG. Alle Rechte vorbehalten.
ABAP - Schlüsselwortdokumentation →
ABAP - Referenz →
Benutzerdialoge →
Selektionsbilder →
Selektionsbilder erstellen →
SELECT-OPTIONS
Kurzreferenz
Syntax
SELECT-OPTIONS selcrit FOR {dobj|(name)}
[
screen_options]
[value_options]
[
NO DATABASE SELECTION]
[
ldb_options].
Wirkung
Deklaration eines Selektionskriteriums selcrit für ein Datenobjekt dobj oder einen in name angegebenen Typ. Selektionskriterien sind Komponenten eines
Selektionsbildes, denen im ABAP-Programm eine
Selektionstabelle sowie auf dem Selektionsbild zwei Eingabefelder und eine Drucktaste für Mehrfachselektion zugeordnet sind.
Der Name des Selektionskriteriums selcrit darf maximal acht Zeichen enthalten. Diese Anweisung ist im globalen Deklarationsteil von
ausführbaren Programmen,
Funktionsgruppen und
Modul-Pools erlaubt. In Funktionsgruppen und Modul-Pools ist sie nur innerhalb der Definition eines
eigenständigen Selektionsbilds erlaubt. In ausführbaren Programmen wird sie ansonsten automatisch dem
Standardselektionsbild zugeordnet.
Die Anweisung SELECT-OPTIONS hat folgende Wirkung:
-
Die Anweisung deklariert im Programm eine Selektionstabelle mit dem Namen selcrit. Eine Selektionstabelle ist eine interne
Standardtabelle mit
Kopfzeile und
Standardschlüssel.
In Selektionstabellen können mehrere Selektionsbedingungen abgespeichert werden. Der Inhalt von Selektionstabellen kann in einem
Vergleichsausdruck mit dem
Vergleichsoperator IN oder in einem
ebensolchen Ausdruck in einer WHERE-Bedingung in Open SQL ausgewertet werden. Selektionstabellen haben die vier folgenden Spalten:
- sign vom Typ c der Länge 1. Der Inhalt
von sign bestimmt für jede Zeile, ob das Ergebnis der in der Zeile
formulierten Bedingung in der Gesamtergebnismenge aller Zeilen ein- oder ob es ausgeschlossen wird.
Auswertbare Werte sind "I" für Einschluss und "E" für Ausschluss.
- option vom Typ c der Länge 2.
option enthält die Selektionsoption für die Bedingung der Zeile in Form von Vergleichsoperatoren.
Auswertbare Operatoren sind "EQ", "NE",
"GE", "GT", "LE",
"LT", "CP" und "NP",
falls die Spalte high initial ist, und "BT",
"NB", falls die Spalte high nicht initial ist.
Bei den Optionen "CP" und "NP" muss der
Datentyp der Spalten low und high vom Datentyp
c sein und für die Eingabe auf dem Selektionsbild gelten spezielle Regeln (siehe unten).
- low von dem Datentyp, der hinter
FOR definiert ist.
Diese Spalte ist für den Vergleichswert in Einzelvergleichen oder die untere Intervallgrenze bei Intervallabgrenzungen vorgesehen.
- high von dem Datentyp, der hinter
FOR definiert ist. Diese Spalte ist für die obere Intervallgrenze bei Intervallabgrenzungen vorgesehen.
-
Auf dem aktuellen Selektionsbild werden zwei Eingabefelder der Namen selcrit-low
und selcrit-high mit passendem externem Datentyp in einer neuen Zeile an
den Positionen 35 und 60 angelegt. Die Länge der Eingabefelder richtet sich nach der Länge
des Datentyps, der hinter FOR definiert ist. Die maximale Länge der
Eingabefelder ist 255. Die maximale sichtbare Länge der Eingabefelder liegt je nach der Schachtelungstiefe
in Blöcken mit Rahmen zwischen 10 und 18. Wenn die Länge größer als die maximale sichtbare Länge ist, wird der Inhalt verschiebbar dargestellt.
Vor dem ersten Eingabefeld wird in der erstmöglichen Position ein automatisch generiertes
Ausgabefeld als Bezeichner dargestellt, dessen Länge je nach der Schachtelungstiefe in Blöcken
mit Rahmen zwischen 20 und 30 liegt. Das Ausgabefeld enthält entweder den Namen des Selektionskriteriums
selcrit oder den Selektionstext, der dem Selektionskriterium in den Textelementen
des Programms zugeordnet ist. Wenn der Benutzer auf dem Ausgabefeld eine Feld- oder Eingabehilfe mit
den Funktionstasten F1 bzw. F4 anfordert, erscheint die gleiche Ausgabe wie bei der Auswahl eines der Eingabefelder.
Hinter dem zweiten Eingabefeld wird eine Drucktaste Mehrfachselektion angelegt. Bei Auswahl dieser Drucktaste erscheint ein Dialogfenster mit vier
Tabstrip-Seiten, auf denen die Eingabefelder nochmals tabellarisch in
Table Controls dargestellt
sind. Die Tabstrip-Seiten sind nach Einzelwertvergleichen, Intervallabgrenzungen und Einstellungen für die Spalte sign getrennt.
Durch die Auswahl eines Eingabefeldes mit Doppelklick auf dem Selektionsbild oder im Dialogfenster
für Mehrfachselektion kann der Benutzer die Selektionsoption auswählen. Auf dem Selektionsbild
kann hierbei auch der Wert der Spalte sign gewählt werden. Im Dialogfenster
für Mehrfachselektion geschieht dies durch Auswahl der entsprechenden Tabstrip-Seite. Falls die
Selektionsoption ungleich "EQ" oder "BT"
ist, wird sie direkt vor dem ersten Eingabefeld als Ikone angezeigt. Die Farbe der Ikone ist Grün,
wenn der Inhalt der Spalte sign "I" ist, und Rot für "E".
Die Selektionsoptionen "CP" und "NP"
können nur dann ausgewählt werden, wenn das erste Eingabefeld mindestens eines der Maskenzeichen
"*" oder "+" enthält. "+"
maskiert ein einzelnes Zeichen, "*" maskiert eine beliebige, auch leere,
Zeichenkette. Wenn eines dieser Zeichen eingegeben wird, wird die Selektionsoption bei einer Benutzeraktion
automatisch auf "CP" gesetzt. Wenn "CP"
gesetzt ist und alle Maskenzeichen entfernt werden, wird die Selektionsoption bei einer Benutzeraktion
automatisch auf "EQ" gesetzt. Innerhalb des Programms gilt diese Einschränkung
nicht. Bei Auswertung der Selektionstabelle, kann die Spalte low auch für
die Selektionsoptionen "CP" und "NP" eine Zeichenkette ohne Maskenzeichen enthalten.
Die Eigenschaften der Elemente auf dem Selektionsbild können in
screen_options und mit der Anweisung SELECTION-SCREEN beeinflusst werden.
-
Die erste Zeile der Selektionstabelle selcrit ist mit den Eingabefeldern
auf dem Selektionsbild verknüpft. Alle Zeilen werden im Dialogfenster für Mehrfachselektion dargestellt.
Vor jedem Senden des Selektionsbilds nach dem
Selektionsbildereignis
AT SELECTION-SCREEN OUTPUT wird der Inhalt der ersten Zeile der Selektionstabelle an das Selektionsbild transportiert, wobei eine eventuelle
Konvertierungsroutine
ausgeführt wird. Wenn die Länge der Spalten low und high
in der ersten Zeile der Selektionstabelle größer als 255 ist, wird der Inhalt rechts abgeschnitten.
Nur bei Auswahl der Drucktaste für Mehrfachselektion werden alle Zeilen transportiert, wobei
eine eventuelle Konvertierungsroutine ausgeführt und eventuell abgeschnitten wird. Einstellungen
bezüglich des Inhalts der Eingabefelder können in value_options gemacht werden.
Nach einer Benutzeraktion auf dem Selektionsbild werden der Inhalt der Eingabefelder und die gewählten
Einstellungen an die erste Zeile und die Kopfzeile der Selektionstabelle transportiert.
Nach
einer Benutzeraktion auf dem Dialogfenster für Mehrfachselektion werden der Inhalt aller Eingabefelder
und die gewählten Einstellungen in die Zeilen der Selektionstabelle transportiert. Bei den Transporten
wird der Inhalt zeichenartiger Felder standardmäßig in Großbuchstaben konvertiert und danach wird eine eventuelle Konvertierungsroutine durchlaufen. Nach den einzelnen Transporten werden verschiedene
Selektionsbildereignisse ausgelöst.
Wenn im Eingabefeld für die obere Intervallgrenze high eine Eingabe
gemacht wurde, wird nach jedem Transport und nach einer eventuellen Konvertierungsroutine automatisch
überprüft, ob der Wert größer als der der unteren Intervallgrenze low ist und gegebenenfalls eine
Fehlermeldung gesendet.
Diese Überprüfung kann vor dem Senden des Selektionsbilds mit dem Funktionsbaustein RS_SELOPT_NO_INTERVAL_CHECK ausgeschaltet werden.
-
Wenn Selektionskriterien im Selektions-Include einer logischen Datenbank definiert werden, sind weitere
Zusätze ldb_options nötig bzw. möglich.
-
Wenn in einem ausführbaren Programm ein Selektionskriterium für eine mit
TABLES oder NODES
deklarierte Komponente eines Knotens der verknüpften logischen Datenbank definiert wird und der betreffende Knoten in der logischen Datenbank für freie Abgrenzungen vorgesehen ist, wird die Selektionstabelle nach der
Selektionsbildverarbeitung
standardmäßig an die logische Datenbank übertragen und dort wie eine freie Abgrenzung
behandelt. Weiterhin werden in diesem Fall die Eingabefelder für die entsprechende freie Abgrenzung
direkt auf dem Selektionsbild angezeigt, ohne dass der Benutzer sie über die Funktion Freie
Abgrenzungen wählen muss. Diese Übertragung kann mit dem Zusatz
NO DATABASE SELECTION unterbunden werden.
Hinweise
-
Die Kopfzeile einer Selektionstabelle sollte keinesfalls im Programm verändert werden, um undefiniertes
Systemverhalten zu vermeiden. Auch lesende Zugriffe sind zu vermeiden. Statt dessen soll wie immer bei internen Tabellen mit eigenen Arbeitsbereichen, Feldsymbolen oder Datenreferenzen gearbeitet werden.
-
Wenn ein Selektionskriterium beim Aufruf eines ausführbaren Programms mit SUBMIT versorgt wird, wird eine eventuelle
Konvertierungsroutine
nur für die erste Zeile ausgeführt und nur für die erste Zeile wird der Wert der
Spalten low und high an Position 255 abgeschnitten.
Wenn das Selektionskriterium mit dem Zusatz
NO-DISPLAY deklariert ist, wird auch für die erste Zeile keine Konvertierungsroutine ausgeführt und es wird nicht abgeschnitten.
-
Wenn der Typ des Selektionskriteriums eine dezimale
Gleitpunktzahl ist, die sich nicht auf einen Datentyp im ABAP Dictionary bezieht, ist für
das Eingabefeld des Selektionsbilds der Ausgabestil Skalierungserhaltend
eingestellt, bei dem schließende Nullen in den Nachkommastellen erhalten bleiben. Bei Bezug auf einen Datentyp im ABAP Dictionary gilt der dort definierte Ausgabestil.
-
Wenn der Typ des Selektionskriteriums eine im ABAP Dictionary definierte
gepackte Zahl oder
dezimale Gleitpunktzahl ist,
muss bei den Typeigenschaften die Eigenschaft Vorzeichen gesetzt sein, damit negative Zahlen auf dem Selektionsbild dargestellt werden können. Diese Einstellung ist nur bei
Domänen aber nicht bei der direkten Angabe eines eingebauten Typs bei
Datenelementen oder Strukturkomponenten
möglich. Wenn eine negative Zahl auf dem Selektionsbild eingegeben wird, obwohl die Eigenschaft
nicht gesetzt ist, wird diese mit einer Fehlermeldung zurückgewiesen. Wenn die Spalten
low oder high beim Aufruf des Selektionsbilds eine negative Zahl enthalten, kommt es zu einer unbehandelbaren Ausnahme.
-
Wenn der Typ des Selektionskriteriums eine im ABAP Dictionary definierte
dezimale Gleitpunktzahl ist,
bei welcher der Ausgabegabestil "Währungsbetrag" angegeben ist, können
auf dem Selektionsbild nur Zahlen mit der entsprechenden Anzahl von Nachkommastellen eingegeben werden.
Wenn ein zugehöriges ABAP-Datenobjekt beim Aufruf des Selektionsbilds eine Zahl mit mehr Nachkommastellen
enthält, kommt es zu einer unbehandelbaren Ausnahme. Bei dem Ausgabestil "erweiterter Währungsbetrag" können auch mehr Nachkommastellen angezeigt werden.
-
Die Spalten sign und option einer mit SELECT-OPTIONS
deklarierten Selektionstabelle haben keinen Bezug auf Datentypen im ABAP Dictionary. Bei einer im ABAP Dictionary definierten
Ranges-Tabelle beziehen
sich diese auf die Datenelemente DDSIGN und DDOPTION.
Weiterlesen
SELECT-OPTIONS - FOR
SELECT-OPTIONS - screen_options
SELECT-OPTIONS - value_options