SAP NetWeaver AS ABAP Release 752, ©Copyright 2017 SAP AG. Alle Rechte vorbehalten.
ABAP - Schlüsselwortdokumentation → ABAP - Referenz → Programmablaufsteuerung → Ausdrücke und Funktionen für Bedingungen → Logische Funktionen →
boolc, boolx, xsdbool - Boolesche Funktionen
Varianten:
1. ... boolc( log_exp ) ...
2. ... boolx( bool = log_exp bit = bit ) ...
3. ... xsdbool( log_exp ) ...
Wirkung
Die 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.
... 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
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.
Beispiel
Aufruf einer Methode, wobei der Eingabeparameter no_dialog mit der zeichenartigen Darstellung des Ergebnisses eines Prädikatausdrucks versorgt wird.
PARAMETERS word TYPE c length 30.
DATA result_tab TYPE cl_abap_docu=>search_results.
cl_abap_docu=>start(
EXPORTING word = word
no_dialog = boolc( sy-batch IS NOT INITIAL )
IMPORTING search_results = result_tab ).
... 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.
Beispiel
Das Ergebnis des folgenden Bit-Ausdrucks ist hexadezimal 55, was der berechneten Bit-Folge 01010101 entspricht.
DATA(result) = boolx( bool = 2 > 1 bit = 8 )
BIT-OR boolx( bool = 2 < 1 bit = 7 )
BIT-OR boolx( bool = 2 > 1 bit = 6 )
BIT-OR boolx( bool = 2 < 1 bit = 5 )
BIT-OR boolx( bool = 2 > 1 bit = 4 )
BIT-OR boolx( bool = 2 < 1 bit = 3 )
BIT-OR boolx( bool = 2 > 1 bit = 2 )
BIT-OR boolx( bool = 2 < 1 bit = 1 ).
Der obige Bit-Ausdruck lässt sich auch durch folgende Iteration mit dem Operator REDUCE ausdrücken.
DATA(result) =
REDUCE xstring( INIT x TYPE xstring
FOR j = 4 THEN j - 1 UNTIL j < 1
LET b1 = 2 * j b2 = 2 * j - 2 IN
NEXT x = x BIT-OR boolx( bool = 2 > 1 bit = b1 )
BIT-OR boolx( bool = 2 < 1 bit = b2 ) ).
... 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
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.
DATA(gui_flag) = xsdbool( cl_demo_sap_gui=>check( ) ).
CALL TRANSFORMATION id SOURCE gui_flag = gui_flag
RESULT XML DATA(xml).
DATA(writer) =
cl_sxml_string_writer=>create( type = if_sxml=>co_xt_json ).
CALL TRANSFORMATION id SOURCE gui_flag = gui_flag
RESULT XML writer.
DATA(json) = writer->get_output( ).
cl_demo_output=>write_xml( xml ).
cl_demo_output=>write_json( json ).
IF gui_flag = abap_false.
cl_demo_output=>get( ).
ELSE.
cl_demo_output=>display( ).
ENDIF.