“Boolsche” Variabeln invertieren
Written at Donnerstag, 28. Januar 2010 on 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 '.
Auf den ersten Blick habe ich hier nur Bahnhof verstanden, liest man die Doku zum Translate Befehl wird klar dass ‘ ‘ zu X und X zu ‘ ‘ konvertiert wird.
Bei ist der Parameter ‘abcd’ folgendermassen zu interpretieren.
‘a’ wird durch ‘b’ und ‘c’ wird durch ‘d’ ersetzt.
Das heisst für das erläuterte Beispiel: Ein leerer Wert wird zu ‘X’ und ein Wert ‘X’ wird zu ‘leer’ konvertiert. Raffiniert!
ja wer lesen kann, ist klar im vorteil… mach mal es gravatar.
tja, lesen allein nützt wenig, wenn das was man lesen muss, um es zu verstehen, nicht vorhanden ist…
Wissen ist wissen wo Wissen ist