Ansicht
Dokumentation

ABENBOOLE_FUNCTIONS - BOOLE FUNCTIONS

ABENBOOLE_FUNCTIONS - BOOLE FUNCTIONS

BAL Application Log Documentation   BAL Application Log Documentation  
Diese Dokumentation steht unter dem Copyright der SAP AG.
SAP E-Book

boolc, boolx, xsdbool, Boolesche Funktionen

Varianten:

1. ... boolc( log_exp ) ...

2. ... boolx( bool = log_exp bit = bit ) ...

3. ... xsdbool( log_exp ) ...

Wirkung

Die eingebauten booleschen Funktionen bestimmen den Wahrheitswert eines als Argument angegebenen logischen Ausdrucks log_exp. Für log_exp kann ein beliebiger logischer Ausdruck nach den dort gültigen Regeln angegeben werden. Der Rückgabewert einer Booleschen Funktion hat einen von der Funktion abhängigen Datentyp und drückt den Wahrheitswert des logischen Ausdrucks durch einen Wert diese Typs aus.

Hinweis

Die Funktionen können teilweise als Ersatz für den in ABAP nicht vorhandenen Booleschen Datentyp für Wahrheitswerte angesehen werden. Insbesondere können xsdbool und eingeschränkt auch boolc an vielen Operandenpositionen verwendet werden, an denen Werte vom Typ abap_bool der Typgruppe ABAP erwartet werden.

Variante 1

... boolc( log_exp ) ...


Wirkung

Die Funktion boolc gibt eine einstellige Zeichenkette vom Typ string zurück. Wenn der logische Ausdruck wahr ist, wird "X" zurückgegeben. Wenn der logische Ausdruck falsch ist, wird ein Leerzeichen zurückgegeben. boolc gehört prinzipiell zu den Verarbeitungsfunktionen mit zeichenartigem Ergebnis und kann an allgemeinen und zeichenartigen Ausdruckspositionen angegeben werden.

Hinweise

  • Wenn für boolc andere Rückgabewerte als "X" oder " " gewünscht sind (z.B. "Y" und "N" oder "1" und "0"), kann das Ergebnis von boolc mit der Funktion translate oder einer anderen geeigneten Verarbeitungsfunktion direkt bearbeitet werden.
  • Das Ergebnis von boolc sollte nicht in relationalen Ausdrücken mit den Konstanten abap_true und abap_false verglichen werden, da letztere dabei von c nach string konvertiert und Leerzeichen dabei nicht berücksichtigt werden. Ein solcher Vergleich ist in der Regel aber auch nicht notwendig. Falls ein solcher Vergleich dennoch ausgeführt werden soll, kann statt boolc die Funktion xsdbool verwendet werden, deren Ergebnis den gleichen ABAP-Typ wie abap_bool hat.
  • Wenn der logische Ausdrucks falsch ist, erfüllt das Ergebnis von boolc nicht die Bedingung IS INITIAL, da ein Leerzeichen und kein leerer String zurück gegeben wird. Wenn dies gewünscht ist, kann statt boolc die Funktion xsdbool verwendet werden.
  • Die Verwendung von boolc an Stellen, die wegen der vorangehenden Punkte fragwürdig sind, führt zu einer durch ein Pragma ausblendbaren Warnung von der Syntaxprüfung.

Beispiel

Beispiel Der Variablen bool_value wird je nach Ergebnis der logischen Ausdrücke log_exp1 und log_exp2 der Wert 0, 1 oder 2 zugewiesen.

DATA bool_value TYPE i.

bool_value = strlen( condense( val = boolc( log_exp1 ) ) ) +
             strlen( condense( val = boolc( log_exp2 ) ) ).

Beispiel

Aufruf einer Methode, wobei der Eingabeparameter no_dialog mit der zeichenartigen Darstellung des Ergebnisses eines Prädikatausdrucks versorgt wird.

Variante 2

... boolx( bool = log_exp bit = bit ) ...


Wirkung

Die Funktion boolx gibt eine Bytekette vom Typ xstring zurück. Wenn der logische Ausdruck wahr ist, wird die Bytekette so versorgt, als würde die Funktion bit-set( bit ) ausgeführt. Wenn der logische Ausdruck falsch ist, wird die Bytekette so versorgt, als würde die Funktion bit-set( 0 ) ausgeführt. Für bit muss ein Datenobjekt vom Typ i angegeben werden. boolx gehört prinzipiell zu den Bit-Funktionen und kann an allen Stellen verwendet werden, an denen auch ein Bit-Ausdruck möglich ist.

Hinweis

Die Funktion boolx kann für die effiziente Speicherung von Sequenzen von Wahrheitswerten verwendet werden.

Das Ergebnis des folgenden Bit-Ausdrucks ist hexadezimal 55, was der berechneten Bit-Folge 01010101 entspricht.

Der obige Bit-Ausdruck lässt sich auch durch folgende Iteration mit dem Operator REDUCE ausdrücken.

Variante 3

... xsdbool( log_exp ) ...


Wirkung

Die Funktion xsdbool gibt wie boolc den Wert "X" für wahr und ein Leerzeichen für falsch zurück. Der Datentyp des Rückgabewerts ist hier aber vom Typ c der Länge 1.

Der Rückgabewert bezieht sich auf den Typ XSDBOOLEAN aus dem ABAP Dictionary. Dieser Typ, der sich auf die gleichnamige Domäne vom Typ CHAR der Länge 1 bezieht, wird bei Serialisierungen und Deserialisierungen mit CALL TRANSFORMATION nach bzw. von asXML und asJSON wie ein echter boolescher Typ behandelt: Den Werten "X" und " " dieses Typs sind die XML- bzw. JSON-Werte true und false zugeordnet.

xsdbool kann an allgemeinen und zeichenartigen Ausdruckspositionen angegeben werden.

Hinweise

  • Das Ergebnis von xsdbool kann wie ein Wert vom Typ abap_bool verwendet und problemlos mit den Konstanten abap_true und abap_false verglichen werden.
  • Wenn der logische Ausdrucks falsch ist, erfüllt das Ergebnis von boolc die Bedingung IS INITIAL, da das zurück gegebene Leerzeichen gleichzeitig der typabhängige Initialwert ist.
  • Das Ergebnis von xsdbool kann in der Regel nicht direkt mit einer Verarbeitungsfunktion wie translate umgesetzt werden, da dort die schließenden Leerzeichen in Textfeldern vom Typ c nicht berücksichtigt werden. Das Ergebnis für einen falschen logischen Ausdruck würde nicht berücksichtigt. Für solche Umsetzungen ist das Ergebnis der Funktion boolc vom Typ string besser geeignet.
  • Die Abkürzung xsd steht für XML-Schema-Datentypen.

Beispiel

Das Beispiel setzt den Typ und den Wert der inline deklarierten Variable gui_flag über die boolesche Funktion xsdbool, als deren Argument ein prädikativer Methodenaufruf aufgeführt ist. Danach wird die Variable mit der vordefinierten Identitäts-Transformation ID nach asXML und nach asJSON serialisiert, wobei der Wert true oder false entsteht. Nach einem Vergleich mit der typgleichen Konstante abap_false wird das aufbereitete Ergebnis der Serialisierungen entweder abgeholt oder ausgegeben.

Bei Verwendung von boolc statt xsdbool wäre das Ergebnis recht unterschiedlich. Zum einen hätten die Transformationen ein anderes Resultat, da die Werte "X" und " " nicht nach true oder false umgesetzt werden, zum anderen wäre der logische Ausdruck gui_flag = abap_false immer falsch, da abap_false beim Konvertieren in den Typ string sein Leerzeichen verliert.






Vendor Master (General Section)   SUBST_MERGE_LIST - merge external lists to one complete list with #if... logic for R3up  
Diese Dokumentation steht unter dem Copyright der SAP AG.

Length: 11357 Date: 20240523 Time: 161906     sap01-206 ( 167 ms )