SAP NetWeaver AS ABAP Release 750, ©Copyright 2016 SAP AG. Alle Rechte vorbehalten.
ABAP - Schlüsselwortdokumentation →
ABAP - Referenz →
Externe Daten verarbeiten →
ABAP-Datenbankzugriffe →
Open SQL →
Open SQL - Lesende Zugriffe →
SELECT →
SELECT - WHERE
Kurzreferenz
Syntax
... [FOR ALL ENTRIES IN itab] WHERE
sql_cond ...
Wirkung
Der Zusatz WHERE schränkt die Anzahl der Zeilen, die durch die Anweisung
SELECT in die Ergebnismenge gestellt werden, durch einen logischen Ausdruck
sql_cond ein. Der logische Ausdruck vergleicht den Inhalt von Spalten in der Datenbank mit dem Inhalt von
Hostvariablen, Literalen oder mit dem Inhalt
anderer Spalten. Über den optionalen Zusatz
FOR ALL ENTRIES kann der Inhalt einer Spalte auf der Datenbank mit einer Komponente sämtlicher Zeilen einer strukturierten internen Tabelle itab verglichen werden.
Der logische Ausdruck sql_cond ist entweder wahr, falsch oder unbekannt. Der Ausdruck ist unbekannt, wenn eine beteiligte Spalte in der Datenbank den
Null-Wert enthält
und mit einem anderen Vergleich als IS
NULL ausgewertet wird. Eine Zeile wird genau dann in die Ergebnismenge gestellt, wenn der logische Ausdruck wahr ist.
Bis auf Spalten vom Typ STRING oder RAWSTRING sowie LCHR, LRAW können in der WHERE-Bedingung
alle Spalten der hinter FROM aufgeführten
Datenquellen ausgewertet werden. Die Spalten müssen nicht notwendigerweise Teil der Ergebnismenge sein.
Hinweise
-
Die Mandantenkennung darf in der WHERE-Bedingung nicht abgefragt werden, wenn nicht die automatische
Mandantenbehandlung
mit dem Zusatz CLIENT SPECIFIED
hinter FROM abgeschaltet ist.
Dies wird in aller Regel von der Syntaxprüfung sichergestellt. Wenn die Mandantenkennung in der
WHERE-Bedingung abgefragt wird, ohne dass CLIENT SPECIFIED
angegeben ist (was bei der Verwendung von alternativen Tabellennamen, bei Joins und bei dynamischen
Angaben passieren kann), ist die automatische Mandantenbehandlung nicht abgeschaltet. In diesem Fall
gibt es zwei Bedingungen für die Mandantenspalte, nämlich die implizite Bedingung der
automatischen Mandantenbehandlung für den aktuellen Mandanten und die explizit angegebene Bedingung. Wenn in der explizit angegebenen Bedingung nicht der aktuelle Mandant angegeben ist, ist die Ergebnismenge leer.
-
Die hier beschriebene WHERE-Bedingung von SELECT
umfasst die WHERE-Bedingungen der Open-SQL-Anweisungen
DELETE,
OPEN CURSOR und UPDATE.
-
Die logischen Ausdrücke der WHERE-Bedingung können alle auch
hinter dem Zusatz HAVING
und teilweise in der ON-Bedingung
eines Join-Ausdrucks hinter dem Zusatz FROM verwendet werden.
-
Wenn auf Datenquellen mit generischer SAP-Pufferung
zugegriffen wird, muss der gepufferte Bereich vollständig in der WHERE-Bedingung spezifiziert sein, ansonsten wird die Pufferung umgangen.
-
Wenn auf Datenquellen mit Einzelsatzpufferung zugegriffen wird, müssen in der WHERE-Bedingung
mit AND verknüpfte Gleichheitsbedingungen für alle Schlüsselfelder
des Primärschlüssels aufgeführt sein, ansonsten wird die Pufferung umgangen.
Weiterlesen
WHERE - sql_cond
WHERE - FOR ALL ENTRIES