Ansicht
Dokumentation

ABENDATAOBJECTS_TRUE_VALUE_GUIDL - DATAOBJECTS TRUE VALUE GUIDL

ABENDATAOBJECTS_TRUE_VALUE_GUIDL - DATAOBJECTS TRUE VALUE GUIDL

Fill RESBD Structure from EBP Component Structure   Fill RESBD Structure from EBP Component Structure  
Diese Dokumentation steht unter dem Copyright der SAP AG.
SAP E-Book

Datentyp für Wahrheitswerte

Wahrheitswerte sind Ergebnisse logischer Ausdrücke. Ein Wahrheitswert ist entweder wahr oder falsch. ABAP unterstützt noch keine Booleschen Datentypen und damit keine Datenobjekte für Wahrheitswerte. Das Resultat eines logischen Ausdrucks kann deshalb nicht direkt einem Datenobjekt zugewiesen werden.

Es hat sich als Konvention eingebürgert, den Wahrheitswert "wahr" als Wert "X" und den Wahrheitswert "falsch" als Leerzeichen (" ") auszudrücken. Es gibt auch Boolesche Funktionen, die einen logischen Ausdruck als Argument haben und je nach Ergebnis den Wert "X" oder ein Leerzeichen zurückgeben.

Um den Umgang mit nach dieser Konvention ausgedrückten Wahrheitswerten zu erleichtern, gibt es das vordefinierte Datenelement ABAP_BOOLEAN vom Datentyp CHAR und mit Länge 1 und der Type-Pool abap enthält die Konstanten abap_true vom Wert "X" und abap_false vom Wert " " als Ersatz für einen echten Booleschen Datentyp. Darüber hinaus gibt es noch eine Konstante abap_undefined vom Wert "-".

Für Wahrheitswerte den Datentyp ABAP_BOOLEAN verwenden

Verwenden Sie für den expliziten Umgang mit Wahrheitswerten das Datenelement ABAP_BOOLEAN als Ersatz für einen echten Booleschen Datentyp. Ein solcherart deklariertes Datenobjekt soll keine anderen Werte als die der vordefinierten Konstanten abap_true und abap_false (sowie abap_undefined) aus dem Type-Pool ABAP enthalten.

Durch Verwendung des Typs ABAP_BOOLEAN und der Konstanten abap_true und abap_false kommt klar zum Ausdruck, dass hier mit Wahrheitswerten gearbeitet wird.

Nach der Regel, Literale an Operandenpositionen zu vermeiden, soll nicht einfach mit Literalen 'X' und ' ' gearbeitet werden. Auch Zustandsabfragen über die Prädikatoperatoren IS INITIAL und IS NOT INITIAL oder eine Verwendung der Konstante space sind ungünstig, da sie zum Verständnis das Wissen um die technischen Werte von abap_true und abap_false voraussetzen, die aber im Sinne echter Boolescher Datenobjekte keine Rolle spielen.

Der Type-Pool abap enthält noch eine dritte Konstante für den Typ ABAP_BOOLEAN, nämlich abap_undefined. Die Implementierung einer dreiwertigen Logik ist jedoch nur in Ausnahmenfällen sinnvoll und sollte daher auch nur in Ausnahmefällen erfolgen. In diesem Fall ist dann zu beachten, dass abap_undefined nicht den Initialwert für eine Variable vom Typ ABAP_BOOLEAN enthält. Der Initialwert ist stets der Wert von abap_false. Der Wert von abap_undefined kann, falls benötigt, aber über den Zusatz VALUE bei der Deklaration eines Wahrheitswertes als Startwert angegeben werden.

Hinweis

Der Type-Pool abap enthält auch einen Datentyp abap_bool als Vorgänger des Datenelements ABAP_BOOLEAN. Wegen seiner Vielseitigkeit ist die Verwendung des Datenelements ABAP_BOOLEAN in neuen Programmen empfohlen. Als Datenelement darf es auch in ABAP-Dictionary-Objekten oder in ABAP CDS verwendet werden. Ein Datentyp aus dem Type-Pool ABAP darf nur in ABAP-Programmen verwendet werden.

Folgender Quelltext zeigt eine ungeeignete Emulation der in ABAP nicht vorhandenen Booleschen Datenobjekte.

DATA is_found TYPE c LENGTH 1.
...
is_found = 'X'.
...
IF is_found IS NOT INITIAL.
   ...
ENDIF.

Folgender Quelltext zeigt die empfohlene Emulation der in ABAP nicht vorhandenen Booleschen Datenobjekte.

DATA is_found TYPE abap_boolean.
...
is_found = abap_true.
...
IF is_found = abap_true.
   ...
ENDIF.






PERFORM Short Reference   RFUMSV00 - Advance Return for Tax on Sales/Purchases  
Diese Dokumentation steht unter dem Copyright der SAP AG.

Length: 4364 Date: 20240523 Time: 171046     sap01-206 ( 104 ms )