ABENDECLARATION_DTYPES_CONST_GUIDL - DECLARATION DTYPES CONST GUIDL

ABENDECLARATION_DTYPES_CONST_GUIDL - DECLARATION DTYPES CONST GUIDL

PERFORM Short Reference   ABAP Short Reference  
Diese Dokumentation steht unter dem Copyright der SAP AG.
SAP E-Book

Deklaration von Datentypen und Konstanten

Datentypen und Konstanten können in folgenden Kontexten deklariert werden:

  • Programmübergreifend
  • im ABAP Dictionary

  • in globalen Klassen und Interfaces

  • in Type-Pools

  • Programmlokal
  • im globalen Deklarationsteil eines Programms

  • in globalen Klassen und Interfaces

Type-Pools sowie globale Klassen und Interfaces sind technisch gesehen auch ABAP-Programme, in denen Datentypen und Konstanten mit den Anweisungen TYPES und CONSTANTS angelegt werden. Anders als in anderen ABAP-Programmen sind die Deklarationen je nach Sichtbarkeitsbereich aber auch in anderen Programmen statisch sichtbar. Dynamisch kann mithilfe absoluter Typnamen sogar auf die Typen aller Programme zugegriffen werden.

Datentypen und Konstanten im richtigen Kontext deklarieren

Deklarieren Sie Datentypen und Konstanten in dem Kontext, der die bestmögliche Kapselung gewährleistet.

Datentypen und Konstanten sollen in dem Kontext deklariert werden, in dem sie für alle potenziellen Verwender sichtbar sind, aber nicht darüber hinaus:

  • Programmlokale Datentypen und Konstanten
  • Datentypen, die nur von lokalen Datenobjekten (in der Regel Hilfsvariablen), bzw. Konstanten, die nur in einer Prozedur (Methode) benötigt werden, sollen in Form von lokalen Datentypen bzw. Konstanten deklariert werden.

  • Datentypen und Konstanten, die nur innerhalb lokaler Klassen benötigt werden, sollen im passenden Sichtbarkeitsbereich der Klassen deklariert oder über ein Interface eingebunden werden.

  • Werden Datentypen in mehreren lokalen Klassen und Interfaces eines Programms benötigt, sollen diese in einem geeigneten Sichtbarkeitsbereich einer lokalen Klasse oder eines Interface angelegt werden. Dies können auch lokale Klassen oder Interfaces sein, die nichts anderes als solche Typen oder Konstanten enthalten. Im globalen Deklarationsteil von Programmen sind weder aus technischen noch aus semantischen Gründen Deklarationen von Datentypen oder Konstanten notwendig.

  • Programmübergreifende Datentypen und Konstanten
  • Datentypen und Konstanten, die vom Verwender zum Gebrauch der Klasse bzw. des Interface benötigt werden, sollen im öffentlichen Sichtbarkeitsbereich der globalen Klassen bzw. im globalen Interface deklariert werden. Beispiele sind Datentypen, die zur Typisierung der Schnittstellenparameter von Methoden verwendet werden, oder Konstanten, die von Methoden als Aktualparameter erwartet werden, wie zum Beispiel die Kennungen der Ausnahmetexte von Ausnahmeklassen.

  • Datentypen, die von unterschiedlichen Programmen, Klassen oder Interfaces benötigt werden, werden als echte Typen des ABAP Dictionarys deklariert (nicht in Type-Pools). Dabei handelt es sich in der Regel um semantisch eigenständige Typen, für die das ABAP Dictionary zusätzliche Dienste wie beschreibende Texte und die Möglichkeit der Dokumentation bereitstellt. Dabei muss die Trennung der Belange berücksichtigt werden.

Beispielsweise sollte eine Struktur des ABAP Dictionarys nie gleichzeitig zur Typisierung von (Web-)Dynpro-Feldern und zur Definition einer Datenbanktabelle verwendet werden. Idealerweise findet die Deklaration von Datentypen in gekapselten Paketen statt, welche die gegenseitige Verwendung ihrer Repository-Objekte regeln und nur die tatsächlich von außerhalb des Paketes benötigten Typen in ihren Paketschnittstellen exponieren.
Prinzipiell ist davon abzusehen, rein technische Typen ohne semantische Bedeutung innerhalb von Paketen der Anwendungsentwicklung im ABAP Dictionary zu deklarieren oder gar zu exponieren. Die Deklaration solcher Typen, wie zum Beispiel INT2 oder CHAR10, sollte fundamentalen Basispaketen vorbehalten sein.
  • Es sollen keine neuen Type-Pools mehr angelegt werden. Datentypen sollen je nach Bedarf entweder in globalen Klassen oder Interfaces oder als echte Typen des ABAP Dictionarys deklariert werden. Konstanten sollen nur noch in globalen Klassen oder Interfaces angelegt werden. Die Verwendung bestehender Type-Pools ist hingegen weiterhin erlaubt. Type-Pools müssen nicht mehr explizit mit der Anweisung TYPE-POOLS geladen werden. In einem Kontext müssen aber nur dann neue Typen oder Konstanten deklariert werden, wenn nicht bereits semantisch passende globalere Typen oder Konstanten existieren. Gibt es beispielsweise einen passenden Datentyp des ABAP Dictionarys, muss für die Typisierung eines Schnittstellenparameters einer Methode einer globalen Klasse kein lokaler Datentyp in der Klasse angelegt werden. In diesem Fall muss der Datentyp im ABAP Dictionary gegebenenfalls in derselben Paketschnittstelle wie die Klasse publiziert werden. Das wäre aber auch dann der Fall, wenn ein Schnittstellenparameter mit einem Datentyp der Klasse typisiert wird, der sich auf einen Datentyp des Dictionarys bezieht.

Hinweis

Der Missbrauch von Include-Programmen zur Deklaration von programmübergreifend wiederverwendbaren Datentypen und Datenobjekten ist verboten.

Folgender Quelltext zeigt die Deklaration programmübergreifend benötigter Konstanten in einem Type-Pool, wobei den Namen der Konstanten der Name des Type-Pools als Präfix vorangestellt sein muss. Es sollen keine neuen Type-Pools mehr angelegt werden. Für programmübergreifend benötigte Konstanten empfiehlt sich nach obiger Regel eine Deklaration in globalen Klassen oder Interfaces.

TYPE-POOL zicon.
  TYPES zicon_icon TYPE ...
  CONSTANTS:
    zicon_cancel      TYPE zicon_icon VALUE icon_cancel,
    zicon_check       TYPE zicon_icon VALUE icon_check,
    zicon_check_words TYPE zicon_icon VALUE icon_intensify,
    zicon_document    TYPE zicon_icon VALUE icon_hlp,
    zicon_download    TYPE zicon_icon VALUE icon_export,
    ...

Folgender Quelltext zeigt die Deklaration der Konstanten aus obigem Beispiel in einer globalen Klasse, wobei deren Sichtbarkeit auf das aktuelle Paket eingeschränkt ist. Die Konstanten werden in anderen Programmen über cl_..._icons=> angesprochen.

CLASS cl_..._icons DEFINITION PUBLIC FINAL.
  PUBLIC SECTION.
    TYPES  icon TYPE ...
    CONSTANTS cancel      TYPE icon VALUE icon_cancel.
    CONSTANTS check       TYPE icon VALUE icon_check.
    CONSTANTS check_words TYPE icon VALUE icon_intensify.
    CONSTANTS document    TYPE icon VALUE icon_hlp.
    CONSTANTS download    TYPE icon VALUE icon_export.
    ...
ENDCLASS.






Vendor Master (General Section)   BAL_S_LOG - Application Log: Log header data  
Diese Dokumentation steht unter dem Copyright der SAP AG.

Length: 9118 Date: 20240921 Time: 001926     sap01-206 ( 130 ms )