Ansicht
Dokumentation

ABENLOGEXP_SELECT_OPTION - LOGEXP SELECT OPTION

ABENLOGEXP_SELECT_OPTION - LOGEXP SELECT OPTION

Fill RESBD Structure from EBP Component Structure   BAL Application Log Documentation  
Diese Dokumentation steht unter dem Copyright der SAP AG.
SAP E-Book

- Tabellarischer Vergleichsoperator IN

... operand $[NOT$] IN range_tab ...

Wirkung

In einem Vergleichsausdruck mit dem Vergleichsoperator IN werden die Bedingungen einer Ranges-Tabelle oder einer Tabelle dieses Aufbaus überprüft, d.h., ob ein Operand operand die Bedingungen in den Zeilen der Ranges-Tabelle erfüllt oder mit dem Zusatz NOT nicht erfüllt. Der tabellarische Vergleichsausdruck ist äquivalent zu einer Kombinierung von binären oder ternären Vergleichsausdrücken, deren Anzahl durch die Anzahl von Zeilen in der internen Tabelle bestimmt wird.

Als Tabelle range_tab kann jede interne Tabelle, deren Zeilentyp dem einer Ranges-Tabelle entspricht, oder eine funktionale Methode mit dem entsprechenden Typ des Rückgabewerts angegeben werden. Dazu gehören insbesondere auch Selektionstabellen. Die Tabellenart der Ranges-Tabelle ist beliebig. Zum Aufbau einer Ranges-Tabelle siehe TYPES RANGE OF. Die Auswertung einer Ranges-Tabelle setzt voraus, dass diese die dort aufgeführten gültigen Werte in den Spalten sign und option enthält. Wenn die Ranges-Tabelle ungültige Werte enthält, kommt es zu einer unbehandelbaren Ausnahme. Wenn die Ranges-Tabelle initial ist, ist der Vergleichsausdruck immer wahr.

Jede Zeile einer nicht initialen Ranges-Tabelle geht mit einem der folgenden Vergleichsausdrücke in die Kombinierung ein. Je nach Operator in der Spalte option handelt es sich um einen Vergleich zweier Operanden mit einem binären Vergleichsoperator oder um eine Intervallabgrenzung mit dem ternären Vergleichsoperator BETWEEN.

  • Die Operatoren "EQ", "NE", "GE", "GT", "LE", "LT" ergeben einen Größenvergleich:
... operand ${EQ$|NE$|GE$|GT$|LE$|LT$} range_tab-low ...
Der Vergleichsoperator wird aus dem Inhalt der Spalte range_tab-option abgeleitet und als rechter Operand wird der Inhalt der Spalte range_tab-low verwendet.
  • Die Operatoren "CP", "NP" ergeben einen Zeichenkettenvergleich:
... operand ${CP$|NP$} range_tab-low && range_tab-high
Der Vergleichsoperator wird aus dem Inhalt der Spalte range_tab-option abgeleitet und als rechter Operand werden die Inhalte der Spalten range_tab-low und range_tab-high verkettet.
  • Die Operatoren "BT", "NB" ergeben eine Intervallabgrenzung:
... operand $[NOT$] BETWEEN range_tab-low AND range_tab-high ...
Der Vergleich wird ohne den Zusatz NOT ausgeführt, wenn der Inhalt der Spalte range_tab-option "BT" ist, und mit NOT, wenn er "NB" ist. Für die Intervallgrenzen wird der Inhalt der Spalten range_tab-low und range_tab-high verwendet.

operand ist eine allgemeine Ausdrucksposition und für operand und die Spalten low und high der Ranges-Tabelle gelten die normalen Vergleichsregeln. Die Kombinierung der Vergleichsausdrücke der einzelnen Zeilen zu einem logischen Ausdruck erfolgt nach folgender Hierarchie:

  1. Die Ausdrücke aller Zeilen, die in der Spalte sign den Inhalt "I" haben, werden mit OR kombiniert. Falls es keine Zeilen gibt, die in der Spalte sign den Inhalt "E" haben, stellt dies den gesamten logischen Ausdruck dar.
  2. Die Ausdrücke aller Zeilen, die in der Spalte sign den Inhalt "E" haben, werden mit OR kombiniert und dann mit NOT negiert. Falls es keine Zeilen gibt, die in der Spalte sign den Inhalt "I" haben, stellt dies den gesamten logischen Ausdruck dar.
  3. Falls in der Spalte sign sowohl der Inhalt "I" als auch der Inhalt "E" vorkommt, wird der aus Schritt 1 resultierende logische Ausdruck über AND mit dem aus Schritt 2 resultierenden logischen Ausdruck kombiniert.

Hinweise

  • Obige Regeln können so interpretiert werden, dass die Zeilen, die in der Spalte sign den Inhalt "I" bzw. "E" haben, zwei Wertemengen beschreiben. Die Menge für "I" ist die Inklusiv-, die Menge für "E" ist die Exklusiv-Menge. Durch Abzug der Exklusiv- von der Inklusiv-Menge wird eine Ergebnismenge gebildet, die alle Werte enthält, für welche der gesamte logische Ausdruck wahr ist.
  • Die Überprüfung der Vergleichsregeln findet erst zur Laufzeit statt und nicht erlaubte Vergleiche führen zu Ausnahmen.
  • Der Operator IN ist wegen seiner Umsetzung durch binäre Vergleichsoperatoren nicht zur Selektion von natürlichsprachlichen textuellen Inhalten geeignet.

Beispiel

Füllen einer Ranges-Tabelle in einer SELECT-Anweisung und deren Verwendung in einem logischen Ausdruck im Konditionaloperator COND.

Ranges-Tabellen in Vergleichsausdrücken






BAL_S_LOG - Application Log: Log header data   General Data in Customer Master  
Diese Dokumentation steht unter dem Copyright der SAP AG.

Length: 8930 Date: 20240523 Time: 111847     sap01-206 ( 122 ms )