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.

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

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.

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 ).

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.

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 ) ).

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

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.