Die CONSTANTS
-Anweisung dient dazu, in ABAP Konstanten zu deklarieren. Eine Konstante ist ein benanntes
Datenobjekt, dessen Wert bei der Deklaration festgelegt wird und während der gesamten Programmlaufzeit nicht mehr
verändert werden kann.
Die Verwendung von Konstanten hat mehrere Vorteile:
- Lesbarkeit: Code wird verständlicher, wenn statt “magischer” Werte (z. B. Zahlen oder einzelne Buchstaben)
selbsterklärende Namen verwendet werden (z. B.
c_status_freigegeben
statt'F'
). - Wartbarkeit: Wenn sich ein fester Wert ändert (z. B. ein Grenzwert oder ein Steuersatz), muss er nur an einer
zentralen Stelle – in der
CONSTANTS
-Deklaration – angepasst werden, nicht an jeder Stelle im Code, wo er verwendet wird. - Sicherheit: Sie schützen davor, dass feste Werte versehentlich im Programmablauf geändert werden. Jeder Versuch, einer Konstante einen neuen Wert zuzuweisen, führt zu einem Syntaxfehler.
Syntax
Es gibt verschiedene Möglichkeiten, Konstanten zu deklarieren:
1. Deklaration einer einzelnen Konstante
CONSTANTS <konstantenname> TYPE <datentyp> [LENGTH <länge>] [DECIMALS <dezimalstellen>] VALUE <wert> | IS INITIAL.
<konstantenname>
: Der Name, den die Konstante erhalten soll (muss den ABAP-Namenskonventionen folgen).TYPE <datentyp>
: Der ABAP-Datentyp (z. B.I
,P
,C
,STRING
,D
,T
, ein Dictionary-Typ wieT001-BUTXT
oder ein selbst definierter Typ).LENGTH <länge>
: Optionale Längenangabe für Typen wieC
,N
,X
,P
.DECIMALS <dezimalstellen>
: Notwendig für gepackte Zahlen (TypP
), um die Anzahl der Nachkommastellen festzulegen.VALUE <wert>
: Obligatorisch (außer beiVALUE IS INITIAL
). Hier wird der feste, unveränderliche Wert zugewiesen. Der Wert muss zum Datentyp passen. Es kann ein Literal (z. B.100
,'Hallo'
,'19.99'
) oder eine andere, bereits definierte Konstante sein.VALUE IS INITIAL
: Weist der Konstante den typspezifischen Initialwert zu (z. B. 0 fürI
, Leerzeichen fürC
, leerer String fürSTRING
).
2. Deklaration mehrerer Konstanten (Kettenanweisung)
CONSTANTS: <konst1> TYPE <typ1> VALUE <wert1>, <konst2> TYPE <typ2> VALUE <wert2>, ... .
Mit einem Doppelpunkt nach CONSTANTS
können mehrere Konstanten durch Kommas getrennt deklariert werden. Die
Anweisung wird mit einem Punkt abgeschlossen.
3. Deklaration einer konstanten Struktur
CONSTANTS: BEGIN OF <struktur_name>, <komponente1> TYPE <typ1> VALUE <wert1>, <komponente2> TYPE <typ2> VALUE <wert2>, ... END OF <struktur_name>.
Hiermit kann eine Struktur definiert werden, deren Komponenten alle konstante Werte haben. Der Zugriff erfolgt dann
über <struktur_name>-<komponenteN>
.
Beispiele
1. Einfache Konstanten
CONSTANTS c_max_laenge TYPE i VALUE 255.CONSTANTS c_app_name TYPE string VALUE `Mein Super Report`.CONSTANTS c_leerzeichen TYPE c LENGTH 1 VALUE ' '. " oder VALUE IS INITIALCONSTANTS c_wahr TYPE abap_bool VALUE abap_true. " Verwenden von ABAP-Boolean-Konstanten
2. Konstante mit Nachkommastellen (Typ P)
CONSTANTS c_mwst_normal TYPE p LENGTH 8 DECIMALS 2 VALUE '0.19'. " 19% Mehrwertsteuer
3. Kettenanweisung für mehrere Konstanten
CONSTANTS: c_status_neu TYPE c LENGTH 1 VALUE 'N', c_status_in_arbeit TYPE c LENGTH 1 VALUE 'I', c_status_erledigt TYPE c LENGTH 1 VALUE 'E', c_euro TYPE waers VALUE 'EUR'.
4. Konstante Struktur
CONSTANTS: BEGIN OF c_farben, rot TYPE c LENGTH 1 VALUE '1', gruen TYPE c LENGTH 1 VALUE '2', blau TYPE c LENGTH 1 VALUE '3', END OF c_farben.
5. Verwendung von Konstanten im Code
DATA gv_aktueller_status TYPE c LENGTH 1.DATA gv_text_laenge TYPE i.DATA gv_betrag_netto TYPE p DECIMALS 2 VALUE '100.00'.DATA gv_betrag_brutto TYPE p DECIMALS 2.
gv_aktueller_status = c_status_in_arbeit.gv_text_laenge = strlen( c_app_name ).
IF gv_aktueller_status = c_status_in_arbeit. WRITE: / 'Der Report läuft unter dem Namen:', c_app_name. WRITE: / 'Maximale Länge ist:', c_max_laenge. WRITE: / 'Farbe Rot hat Code:', c_farben-rot.ENDIF.
" Berechnung mit Konstantegv_betrag_brutto = gv_betrag_netto * ( 1 + c_mwst_normal ).WRITE: / 'Bruttobetrag:', gv_betrag_brutto CURRENCY c_euro.
" ****** SYNTAXFEHLER ******" Der folgende Code würde zu einem Syntaxfehler führen," da Konstanten nicht geändert werden dürfen:" c_max_laenge = 500." c_farben-rot = 'X'." **************************
Zusammenfassend lässt sich sagen: Die CONSTANTS
-Anweisung ist ein wichtiges Werkzeug in ABAP, um fest definierte
Werte im Code benennbar, wartbar und sicher zu machen. Sie sollten immer dann verwendet werden, wenn ein Wert sich
während der Programmausführung garantiert nicht ändern soll.