Ansicht
Dokumentation

ABAPCREATE_OBJECT - CREATE OBJECT

ABAPCREATE_OBJECT - CREATE OBJECT

CPI1466 during Backup   General Data in Customer Master  
Diese Dokumentation steht unter dem Copyright der SAP AG.
SAP E-Book

CREATE OBJECT

Kurzreferenz



Klasse implizit festlegen

1. CREATE OBJECT oref $[area_handle$] $[ parameter_list$].

Klasse explizit festlegen

2. CREATE OBJECT oref $[area_handle$]
                     TYPE ${ class $[parameter_list$] $}
                        $| ${ (name) $[ parameter_list$|parameter_tables$] $}.


Wirkung

Die Anweisung CREATE OBJECT erzeugt eine Instanz einer Klasse bzw. ein Objekt und weist die Referenz auf das Objekt der Referenzvariablen oref zu. Direkt nach der Erzeugung des Objekts wird der Instanzkonstruktor der Klasse aufgerufen.

Standardmäßig wird das Objekt in der internen Sitzung (Heap) des aktuellen Programms angelegt und lebt dort so lange, wie es benötigt wird. Wenn keine Heap-Referenz mehr auf das Objekt zeigt, d.h.,

  • keine Objektreferenz zeigt mehr auf das Objekt,
  • keine Datenreferenz und kein Feldsymbol zeigen mehr auf ein Instanzattribut oder einen Teil eines Instanzattributs,

und wenn keine Methode des Objekts mehr als Ereignisbehandler registriert ist, wird es vom Garbage Collector gelöscht. Mit dem Zusatz area_handle kann das Objekt als Shared Object angelegt werden.

Die Referenzvariable oref muss als Objektreferenzvariable deklariert sein. Auf die Instanzkomponenten eines mit CREATE OBJECT erzeugten Objekts kann nur über Objektreferenzvariablen zugegriffen werden (siehe Datenobjekte in Operandenpositionen).

Die Klasse des erzeugten Objekts kann mit dem Zusatz TYPE festgelegt werden. Der statische Typ der Objektreferenzvariablen muss nach den Regeln für Zuweisungen zwischen Objektreferenzvariablen allgemeiner als die Klasse des erzeugten Objekts oder identisch mit dieser sein.

Die Erzeugung einer Instanz einer Klasse ist nur dort erlaubt, wo dies der Zusatz CREATE der Anweisung CLASS DEFINITION zulässt. Es kann sich um eine lokale Klasse des gleichen ABAP-Programms oder um eine von der Paketprüfung erlaubte globale Klasse der Klassenbibliothek handeln.

Mit den Zusätzen parameter_list bzw. parameter_tables müssen die nicht-optionalen Eingabeparameter des ersten explizit implementierten Instanzkonstruktors versorgt werden, der auf dem Pfad des Vererbungsbaums von der instanzierten Klasse zur Wurzelklasse object liegt. Weiterhin können den nicht-klassenbasierten Ausnahmen des Instanzkonstruktors über diese Zusätze Rückgabewerte zugeordnet werden.

Wenn bei der Erzeugung des Objekts eine behandelbare Ausnahme im Laufzeit-Framework auftritt, wird das Objekt nicht erzeugt und die Objektreferenzvariable oref wird initialisiert. Wird nach der Erzeugung des Objekts im Instanzkonstruktor der Klasse eine behandelbare Ausnahme ausgelöst, wird das erzeugte Objekt wieder gelöscht und die Objektreferenzvariable oref initialisiert.

Rückgabewert

Die Anweisung CREATE OBJECT setzt bei erfolgreicher Ausführung sy-subrc auf 0. Werte ungleich 0 können bei der Behandlung nicht-klassenbasierter Ausnahmen des Instanzkonstruktors über die Angabevon EXCEPTIONS in parameter_spec auftreten.

Hinweise

  • Wenn die hinter CREATE OBJECT angegebene Referenzvariable oref gleichzeitig dem Instanzkonstruktor übergeben wird, zeigt sie bei dessen Ausführung bereits auf das neu erzeugte Objekt. Um dem Instanzkonstruktor eine Referenz auf ein bestehendes Objekt zu übergeben, muss eine andere Referenzvariable verwendet werden.
  • Die Anweisung CREATE OBJECT erzeugt eine Heap-Referenz. Alle Referenzen, die auf das Objekt oder seine Teile zeigen sind ebenfalls Heap-Referenzen und halten das Objekt am Leben. Das gleiche gilt für Feldsymbole die auf Instanzattribute oder deren Teile zeigen.
  • Das Setzen des Rückgabewerts sy-subrc auf 0 bei erfolgreicher Ausführung kann auf den Aufruf des Instanzkonstruktors zurückgeführt werden, da sy-subrc bei jedem Methodenaufruf gesetzt wird.

Ausnahmen

Behandelbare Ausnahmen

CX_SY_CREATE_OBJECT_ERROR

  • Ursache: Es wird versucht ein abstrakte Klasse zu instanzieren
    Laufzeitfehler: CREATE_OBJECT_CLASS_ABSTRACT
  • Ursache: Die im Zusatz TYPE angegebene Klasse ist nicht vorhanden
    Laufzeitfehler: CREATE_OBJECT_CLASS_NOT_FOUND
  • Ursache: Die im Zusatz TYPE dynamisch angegebene Klasse passt nicht zum Typ der Referenzvariable.
    Laufzeitfehler: MOVE_OREF_NOT_CONVERTIBLE
  • Ursache: Es wird versucht eine private Klasse von außen zu instanzieren
    Laufzeitfehler: CREATE_OBJECT_CREATE_PRIVATE
  • Ursache: Es wird versucht eine geschützte Klasse von außen zu instanzieren
    Laufzeitfehler: CREATE_OBJECT_CREATE_PROTECTED

Unbehandelbare Ausnahmen

  • Ursache: Es muss eine Referenz als Zielvariable angegeben werden.
    Laufzeitfehler: CREATE_OBJECT_NO_REFTYPE:






TXBHW - Original Tax Base Amount in Local Currency   BAL_S_LOG - Application Log: Log header data  
Diese Dokumentation steht unter dem Copyright der SAP AG.

Length: 8798 Date: 20240420 Time: 011454     sap01-206 ( 103 ms )