“Boolsche” Variabeln invertieren
Geschrieben am Donnerstag, 28. Januar 2010 um 14:45
In ABAP gibt es nach wie vor keinen echten boolschen Datentyp. Stattdessen wird ein Charactertyp mit einer Länge von 1 verwendet. Bindet man die Typen-Gruppe ABAP ein, erhält man nebst einem Typ abap_bool auch zwei Konstanten abap_true und abap_false für “boolsche” Vergleiche. Da es sich hierbei jedoch eben nicht um einen boolschen Typ handelt, kann der Werte auch nicht mittels NOT oder ähnlichem invertiert werden. Da mal oftmals auf einen invertierten Wert angewiesen ist, habe ich bis anhin einfach die folgende einfach Abfrage gemacht.
data: lf_bool type abap_bool . *... if lf_bool = abap_true. lf_bool = abap_false. else. lf_bool = abap_true. endif.
Mittlerweile habe ich aber eine etwas einfachere Möglichkeit gefunden, die sich zu nutzen macht, dass es sich um ein Charactertyp handelt und somit mit dem Befehl Translate eine einfache Zeichenersetzung möglich ist. Daraus ergibt sich der nachfolgende 1-Zeiler, welcher “true” in “false” und umgekehrt invertiert.
data: lf_bool type abap_bool . *... translate lf_bool using ' XX '.