Ansicht
Dokumentation

ABAPCLASS-METHODS_CONSTRUCTOR - CLASS-METHODS CONSTRUCTOR

ABAPCLASS-METHODS_CONSTRUCTOR - CLASS-METHODS CONSTRUCTOR

SUBST_MERGE_LIST - merge external lists to one complete list with #if... logic for R3up   ROGBILLS - Synchronize billing plans  
Diese Dokumentation steht unter dem Copyright der SAP AG.
SAP E-Book

CLASS-METHODS, class_constructor

Kurzreferenz



CLASS-METHODS class_constructor.

Wirkung

Diese Anweisung deklariert den statischen Konstruktor class_constructor einer Klasse. Sie ist nur im öffentlichen Sichtbarkeitsbereich des Deklarationsteils einer Klasse möglich.

Jede Klasse hat in ihrem öffentlichen Sichtbarkeitsbereich eine vordefinierte Methode namens class_constructor. Durch die explizite Deklaration kann ihre Funktionalität klassenspezifisch implementiert werden. Ohne explizite Deklaration ist der statische Konstruktor leer.

Der statische Konstruktor wird genau einmal pro Klasse und interner Sitzung vor dem ersten Zugriff auf die Klasse automatisch aufgerufen. Auf eine Klasse wird durch die Generierung einer Klasse oder einer statischen Komponente über den Klassenkomponentenselektor zugegriffen, außer bei der Adressierung eines Typs or einer Konstante der Klasse.

Beim ersten Zugriff auf eine Unterklasse wird im Vererbungsbaum nach der nächsthöheren Oberklasse gesucht, deren statischer Konstruktor noch nicht aufgerufen wurde. Im Anschluss daran wird der statische Konstruktor dieser Oberklasse aufgerufen und danach sukzessive der aller folgenden Unterklassen bis zur angesprochenen Unterklasse. Der statische Konstruktor muss vollständig ausgeführt werden, sonst kommt es zu einem Laufzeitfehler.

Wie alle statischen Methoden kann auch der statische Konstruktor nur auf die statischen Komponenten seiner Klasse zugreifen. Weiterhin darf der statische Konstruktor seine eigene Klasse nicht explizit ansprechen.

Hinweise

  • Wie Instanzkonstruktoren sind auch statische Konstruktoren eine Ausnahme von der Regel, dass alle öffentlichen Komponenten entlang eines Pfads im Vererbungsbaum in einem Namensraum liegen.
  • Der Zeitpunkt der Ausführung des statischen Konstruktors liegt nicht definitiv fest, er wird aber auf jeden Fall vor dem Zugriff auf die Klasse aufgerufen.
  • Ein statischer Konstruktor kann statische Methoden seiner Klasse aufrufen. Solche Methoden müssen entsprechend implementiert werden und dürfen nicht auf die vollständige Ausführung des statischen Konstruktors ausgeführt angewiesen sein.
  • Für den Zugriff auf einen Typ oder eine Konstante einer Klasse ist die Ausführung des statischen Konstruktors nicht notwendig. Ein solcher Zugriff führt deshalb nicht zu dessen Aufruf.
  • Die Ausführungsreihenfolge von statischen Konstruktoren ist abhängig vom Programmablauf. Statische Konstruktoren müssen so implementiert werden, dass sie in jeder beliebigen Reihenfolge ausgeführt werden können.
  • In statischen Konstruktoren können keine klassenbasierten Ausnahmen mit RAISING deklariert werden, da für einen Verwender einer Klasse in der Regel nicht feststeht, ob er der erste Verwender ist und ob er vom statischen Konstruktor propagierte Ausnahmen behandeln muss oder nicht.
  • Wenn eine statische Komponente einer Oberklasse über den Namen einer Unterklasse angesprochen wird, wird die Oberklasse adressiert und deren statischer Konstruktor ausgeführt, aber nicht der statische Konstruktor der Unterklasse.
  • Ein missglückter dynamischer Zugriff auf eine nicht vorhandene Komponente einer Klasse zählt nicht als Zugriff auf die Klasse und der statische Konstruktor wird in einem solchen Fall nicht ausgeführt.
  • Entsprechend ihrem Verwendungszweck sollte der statische Konstruktor nur verwendet werden, um globale Klassendaten zu initialisieren. Er sollte nicht zum Aufruf differenzierter Prozesse, vor allem Prozesse mit Benutzerinteraktionen, verwendet werden, in denen der Programmablauf durch den Aufrufer nicht steuerbar ist.

Beispiel

Der statische Konstruktor dieser Klasse setzt beim ersten Zugriff auf die Klasse das statische Attribut access_program mit Hilfe des Systemfeldes sy-repid auf den Namen des Programms eines internen Modus, das die Klasse als Erstes verwendet.








BAL_S_LOG - Application Log: Log header data   ROGBILLS - Synchronize billing plans  
Diese Dokumentation steht unter dem Copyright der SAP AG.

Length: 5118 Date: 20240425 Time: 122414     sap01-206 ( 92 ms )