Schlüsselbefehl Constants

Aus SAP-Wiki
Wechseln zu: Navigation, Suche

Konstanten sind eine kleine Feinheit, die man bewußt nutzen sollte.

Verwendung Variable als Konstante

Man könnte eine Variable definieren, wenn die Variable nur einmal einen Wert erhält und danach nicht mehr verändert wird.

Data: lv_de type kna1-land1 value 'DE'.

... (keine Neuzuweisung der Variablen lv_de)

Verwendung Schlüsselbefehl CONSTANTS

  • Eine Konstante wird mit dem Schlüsselbefehl CONSTANTS eingeleitet, normal wie eine Variable typisiert und mit einem Wert VALUE <wert> versehen.
  • Eine Konstante sollte auch durch den Namen kenntlich gemacht werden, z. B. GC_<name> (Globale Konstante) oder LC_<konstante> (Lokale Konstante).
  • Eine Konstante sollte man auch nutzen, wenn diese Konstante mehrfach im Coding verwendet wird. So kann einen Verwendungsnachweis alle verwendeten Stellen auflisten.
Constants: lc_de type kna1-land1 value 'DE'.

Vorteile von Konstanten

  • im Coding weiß man bei einer Konstanten sofort, dass die Konstante einen gleichbleibenden Wert hat. Bei einer Variable müsste man erst mal einen Verwendungsnachweis durchführen, um zu erkennen, dass die Variable stets den gleichen Wert hat.
  • Konstanten können am Anfang des Programms in einen Block zusammen geschrieben werden und geben so schon einen Hinweis auf konstante Zuweisungen bzw. Abfragen in dem Programm
  • Ändert sich bei der Programmierung der gewünschte Wert der Konstanten, dann muss lediglich an einer Stelle im Coding der Wert geändert werden. Hier sollte man jedoch auch beachten, dass der Konstantenname weiterhin sprechend ist. Ansonsten besser den Konstantennamen umbenennen. Mit der Syntaxprüfung werden dann schnell alle Verwendungen als Fehler angezeigt und können sehr schnell korrigiert werden. Auch mit der Suchen-Ersetzen-Funktion können sehr schnell Ersetzungen vorgenommen werden, wobei diese Funktion sorgfältig ausgeführt werden sollte, um unerwünschte Ersetzungen zu vermeiden.
  • Bei einer booleschen Variable mit möglichen Werten X und space kann es besser lesbar im Coding sein Konstanten zu definieren.
constants: true  type xfeld value 'X',
           false type xfeld value space.

Konstanten mit mehren Einzelwerten

Es ist auch möglich eine Konstante zu definieren, die aus mehreren Einzelwerten besteht, z. B. gibt es hier eine Struktur "LVC_S_COLOR", deren Felder man mit konstanten Werten füllen will.

 constants: begin of GCS_COLOR_CELL_GRUEN,
            col type lvc_s_colo-col value 5,
            int type lvc_s_colo-int value 0,
            inv type lvc_s_colo-inv value 0,
            end of GCS_COLOR_CELL_GRUEN.

Siehe hier den www.apentia-forum.de.

Konstanten in einer Klasse sammeln

Konstanten bei Zahlenwerten bei der erweiterten Syntaxprüfung

Führt man die erweiterte Syntaxprüfung aus (Transaktion SLIN), so wird von SAP auch der Hinweis aufgeführt, dass Zahlen ab 11 als Konstanten zu definieren sind.

Der Sinn ist mir schleierhaft, warum man z. B. Zahl "15" nicht als Zahl eingeben darf, sondern

constants: lc_15 type i value 15.
.. = lc_15

Aber man muss nicht alles verstehen.

Übertriebene Verwendung von Konstanten

Was ich für völlig übertrieben und nutzlos halte, bzw. der Übersichtlichkeit abträglich, ist für alle konstanten Abfragewerte, die nur einmal im Coding verwendet werden und auch eher eine untergeordnete Bedeutung haben, eine Konstante anzulegen.

Also nicht

Constants: lc_1 type i value 1.

Select 
 ...
 from ..
 where feld = lc_1.

Hier spricht nichts dagegen, den konstanten Wert direkt einzutragen.

Select
  ...
  from
  where feld = 1.

Web-Links