Mit einer WHERE-Bedingung können Tabelleneinträge gefiltert werden, siehe SAP ABAP Dokumentation: SELECT-WHERE.

Verwendung einer WHERE-Bedingung #

  1. Öffnen Sie eine Table(CDC) Extraktion.
  2. Navigieren Sie zum Tab WHERE Clause.
  3. Geben Sie die WHERE-Bedingung entweder über die manuelle Texteingabe oder über den WHERE Clause Editor ein.
  4. Um die Ergebnisse im Abschnitt Preview anzuzeigen, klicken Sie auf [Load live preview].

Hinweis: Wenn der Feldname nicht eindeutig ist, muss der Tabellenname dem Feldnamen vorangestellt werden, z.B. MAKT~MATNR. Dies kann z.B. bei der Extraktion mehrerer Tabellen der Fall sein.

Extraction-Settings-01

[Text mode]
Ermöglicht die direkte Eingabe einer WHERE-Bedingung. [Text mode] ist der Standart-Eingabemodus.

[Editor mode]
Öffnet den WHERE Clause Editor. Der WHERE Clause Editor bietet ein Toolkit, um WHERE-Bedingungen zu erstellen, siehe WHERE Clause Editor.

[Load live preview]
Ermöglicht eine Echtzeit-Vorschau der Extraktionsdaten ohne dafür die Extraktion auszuführen.
Daten mit Aggregatfunktionen lassen sich auch als Vorschau anzeigen.

[Count rows]
Gibt die Anzahl der Zeilen/Datensätze einer Extraktion aus unter Berücksichtigung der hinterlegten WHERE- und HAVING-Bedingungen.

[Refresh Metadata]
Durchführung eines erneuten Lookups auf die selektierte(n) Tabelle(n). Bestehende Mappings und Feldselektionen bleiben dabei erhalten, anders als beim erneuten Hinzufügen.
Die Refresh Metadata Funktionalität kann z.B. notwendig sein, wenn eine Tabelle SAP-seitig angepasst, ein anderes Quellsystem angebunden, oder ein Update des Quellsystems durchgeführt wurde. In solchen Fällen kann es zu Datenschiefständen kommen, die durch diese Funktion bereinigt werden.

Einschränkungen bei WHERE-Bedingungen #

Hinweis: Bei Verwendung von Table Joins können Felder der rechten Tabelle eines LEFT OUTER JOIN erst ab SAP-Release 7.40, SP05 eingeschränkt werden.

Wenn Ihr SAP-System älter als Release 7.40, SP05 ist, erscheint folgender Fehler: RFC_ERROR_SYSTEM_FAILURE - Illegal access to the right table of a LEFT OUTER JOIN
(Unzulässiger Zugriff auf die rechte Tabelle eines LEFT OUTER JOIN)

Weitere Informationen über die Änderungen in Release 7.40, SP05 erhalten Sie auf der SAP Helpseite.

Syntax der WHERE-Bedingung #

Warnung! Fehlschlagen der Extraktion wegen Syntaxfehler!
Die Extraktionen schlagen fehl, wenn in der WHERE-Bedingung eine falsche Syntax verwendet wird.
Stellen Sie sicher, dass Sie die korrekte SAP OpenSQL-Syntax verwenden. Einige wichtige Syntax-Regeln sind in diesem Hilfeabschnitt aufgeführt.

Tipp: Um die Syntax der WHERE-Bedingung zu überprüfen, klicken Sie auf [Load live preview]. Auf diese Weise ist es nicht notwendig, eine Extraktion durchzuführen, um zu sehen, ob die Syntax korrekt ist.

Syntaxregeln

  • Geben Sie ein Leerzeichen vor und nach dem Gleichheitszeichen ein:
    Korrekt: JAHR = ‘1999’
    Falsch: JAHR= ‘1999 ‘, JAHR =’1999’ oder JAHR=’1999’

  • Setzten Sie Fließkommazahlen in einfache Anführungszeichen:
    Korrekt: KMENG > ‘10.3’
    Falsch KMENG > 10.3

Hinweis: Die WHERE-Bedingung benötigt keinen Zeilenumbruch (Return-Taste).

  • Die Werte müssen der internen SAP-Darstellung entsprechen:
    • Das Datum 01.01.1999 hat die interne Darstellung 19990101 (JJJJMMTT)
    • Die Jahresperiode 001.1999 hat die interne Darstellung 1999001 (JJJJPPP)
    • Zahlen müssen führende Nullen enthalten, z.B. hat die Kundennummer 1000 die interne Darstellung 0000001000.
Operator Bedeutung
=, EQ Wahr, wenn der Inhalt von operand1 gleich dem Inhalt von operand2 ist
<>, NE Wahr, wenn der Inhalt von operand1 ungleich dem Inhalt von operand2 ist
<, LT Wahr, wenn der Inhalt von operand1 kleiner als der Inhalt von operand2 ist
>, GT Wahr, wenn der Inhalt von operand1 größer als der Inhalt von operand2 ist
<=, LE Wahr, wenn der Inhalt von operand1 kleiner oder gleich dem Inhalt von operand2 ist
>=, GE Wahr, wenn der Inhalt von operand1 größer oder gleich dem Inhalt von operand2 ist
(NOT) LIKE Wahr, wenn der Wert des Operanden operand1 mit dem Muster im Operanden operand2 übereinstimmt (nicht übereinstimmt).
(NOT) IN Wahr, wenn der Inhalt von operand1 (nicht) Teil des Inhalts von operand2 ist. Operand2 muss vom Typ LIST oder SQL sein.

Für mehr Informationen über die OpenSQL-Syntax, siehe SAP Help: Select WHERE.

Tipp: Um die Leistung beim Extrahieren zu erhöhen, stellen Sie sicher, dass Sie die indizierten Felder als erste Auswahlfilteroperation in der WHERE-Bedingung platzieren.

Skript-Ausdrücke #

Der [Text-Modus] der WHERE-Bedingung unterstützt die Verwendung von Skript-Ausdrücken. Sie werden normalerweise verwendet, um ein dynamisches Datum auf der Basis des aktuellen Datums zu bestimmen.
Um Skript-Ausdrücke in der WHERE-Bedingung zu verwenden, müssen sie in einfache Anführungszeichen gesetzt werden.

Für mehr Informationen zu Skript-Ausdrücken, siehe Skript-Ausdrücke.

Syntax:
[Field_name][Space][Operator][Space]'#[Script-Expression]#'
BUDAT >= '#{DateTime.Now.AddYears(-5).ToString("yyyyMMdd")}#'

Beispiele:

Eingabe Ausgabe Beschreibung
#{ DateTime.Now.ToString("yyyyMMdd") }# yyyyMMdd Aktuelles Datum im SAP-Format
#{ String.Concat(DateTime.Now.Year.ToString(), "0101") }# yyyy0101 Aktuelles Datum verkettet mit “0101”
#{ String.Concat(DateTime.Now.ToString("yyyy"), "0101") }# yyyy0101 Aktuelles Datum verkettet mit “0101”
#{ String.Concat(DateTime.Now.ToString("yyyyMMdd").Substring(0,4), "0101") }# yyyy0101 Aktuelles Datum verkettet mit “0101””

Verwendung von Subqueries #

Hinweis: Die Verwendung von Subqueries (Unterabfragen) ist ab SAP Release 7.40, SP05 oder höher möglich.

Eine Subquery ist eine SQL-Abfrage, die innerhalb einer größeren Abfrage verschachtelt ist. Subqueries sind verschachtelte Abfragen, die Daten an die umschließende Abfrage liefern. Subqueries müssen in Klammern gesetzt werden und können einzelne Werte oder eine Liste von Datensätzen zurückgeben. Weitere Informationen über die Subqueries erhalten Sie auf der SAP Helpseite - Bedingungen.)

Im folgenden Beispiel wird eine Subquery mit dem Operator IN verwendet. Die folgende Anweisung gibt alle aktiven Kunden (Zeilen in der Tabelle KNA1) zurück, die z.B. einen Verkaufsbeleg in der Tabelle VBAK für Verkaufsbelegkopfdaten haben.

WHERE Clause Subquery

WHERE Clause Editor #

Der WHERE Clause Editor stellt ein Toolkit zur Verfügung, mit dem WHERE-Bedingungen auch ohne nähere Kenntnisse über die Syntax erstellt werden können. Klicken Sie auf [Editor mode], um das Toolit zu öffnen.
WHERE-Clause-Builder-01

Es gibt 2 Optionen, um der WHERE-Bedingung neue Kriterien hinzuzufügen:

  • [Add Criteria] fügt ein einzelnes Kriterium hinzu.
    • Der Standardaufbau für ein Kriterium mit statischen Werten ist [Spalte][Operator][Wert], z.B. MARC~WERKS = 1000.
    • Der Standardaufbau für ein Kriterium mit Parametern ist [Spalte][Operator][Parameter], z.B. MARC~WERKS = [p_WERKS].
  • [Add Criteria Group] fügt eine Gruppe hinzu, die mehrere Kriterien beinhaltet.
    • Der Standardaufbau für eine Kriteriengruppe ist ([Spalte1][Operator1][Wert1][Logik][Spalte2][Operator2][Wert2]), z.B. (MARC~PSTAT = ‘L’ OR MARC~PSTAT = ‘LB’).

Tipp: Kombinieren Sie einzelne Kriterien mit Kriteriengruppen, um komplexe Filter zu erstellen.
Beispiel: MARC~WERKS = 1000 AND (MARC~PSTAT = ‘L’ OR MARC~PSTAT = ‘LB’) extrahiert nur Daten, bei denen die Spalte WERKS einen Wert von 1000 hat und die Spalte PSTAT entweder den Wert ‘L’ oder ‘LB’ hat.

Komponenten des WHERE Clause Editors

WHERE-Clause-Builder-Example

Folgende Komponenten stehen im Editor zur Verfügung:

Symbol Komponente Funktion
WHERE-Clause-Builder-Example Delete row löscht ein Kriterium.
WHERE-Clause-Builder-Example Move row up ändert die Reihenfolge der Kriterien. Das ausgewählte Kriterium wird um 1 nach oben verschoben.
Die Reihenfolge der Kriterien kann auch per Drag&Drop bearbeitet werden.
WHERE-Clause-Builder-Example Move row down ändert die Reihenfolge der Kriterien. Das ausgewählte Kriterium wird um 1 nach unten verschoben.
Die Reihenfolge der Kriterien kann auch per Drag&Drop bearbeitet werden.
WHERE-Clause-Builder-Example Column fügt die Spalte einer Tabelle hinzu. Klicken Sie auf die Komponente, um eine Spalte aus den verfügbaren Tabellen auszuwählen.
WHERE-Clause-Builder-Example SQL fügt eine Open SQL-Anweisung hinzu, siehe SAP Dokumentation: Open SQL.
WHERE-Clause-Builder-Example Operator fügt einen Operator hinzu, z.B. =, <, >, etc.
WHERE-Clause-Builder-Example Value fügt einen statischen Wert vom Typ String, Number, Flag oder List hinzu. List bietet einen separaten Editor, um Listen vom Typ String, Number oder Select zu erstellen. Select ermöglicht die Eingabe einer SELECT-Anweisung. Mehr Informationen zu Listen, finden Sie im Knowledge Base Artikel Working with Lists in the WHERE-Clause Editor.
WHERE-Clause-Builder-Example Criteria fügt der WHERE-Bedingung ein neues Kriterium hinzu.
WHERE-Clause-Builder-Example Group fügt der WHERE-Bedingung eine neue Gruppe hinzu.
WHERE-Clause-Builder-Example Parameter fügt einen zuvor definierten Laufzeitparameter hinzu, siehe Laufzeitparameter im WHERE Clause Editor.

Hinweis: Wenn neue Kriterien hinzugefügt oder bearbeitet werden, werden nur relevante Komponenten angezeigt. Beispiel: Operator ist nur verfügbar, wenn eine Spalte oder eine SQL-Anweisung existiert, auf die ein Operator angewendet werden kann.

Komponenten Bearbeiten und Löschen

  • Klicken Sie auf eine vorhandene Komponente, um sie zu bearbeiten. Alle grün markierten Flächen können bearbeitet werden.
  • Klicken Sie auf das (x) Icon über einer Komponente, um die Komponente zu löschen.

Verwendung von SAP Systemfeldern #

Hinweis: Systemfelder können nur mit SAP NW 7.4 SP5 oder höher und mit den Funktionsbausteinen Z_THEO_READ_TABLE oder /THEO/READ_TABLE verwendet werden.

Sie können SAP Systemfelder für Datum und Zeit verwenden.

Beispiel:

  1. Im WHERE-Clause-Editor wählen Sie eine Spalte vom Typ Datum aus hier: BUDAT. img-01
  2. Löschen Sie das Kriterium “Value” und verwenden Sie das Kriterium “SQL”. img-02
  3. Innerhalb des Kriteriums “SQL” verwenden Sie die unterstützten Systemfelder für Datum und Zeit mit einem vorangestellten “@”-Zeichen, hier: @sy-datum. img-03
  4. Klicken Sie auf [Load Live Preview], um das Ergebnis zu überprüfen.
  5. Führen Sie eine Extraktion aus.

Laufzeitparameter im WHERE Clause Editor #

Sie können Laufzeitparameter anlegen und zuweisen, wenn Sie eine WHERE-Bedingung verwenden.