Instanz Klasse erzeugen mit NEW im neuen ABAP

Aus SAP-Wiki
Zur Navigation springenZur Suche springen

Siehe Neues ABAP (ab Release 7.40).

Siehe Kategorie:Neues ABAP.

Ab ABAP-Release 7.40 SP2 gibt es die Möglichkeit eine Instanz einer Klasse anzulegen mit NEW <klassenname>.

Klassische Anlage Instanz einer Klasse mit CREATE OBJECT

Data: lo_class type ref to lcl_classe.

Create object lo_class.

Anlage Instanz einer Klasse mit NEW

Die Instanz der Klasse wird angelegt mit Verweis auf die (lokale) Klasse "LCL_CLASSE". Gegebenfalls würden die Parameter für die CONSTRUCTOR-Methode übergeben.

DATA(lo_class) = NEW lcl_classe( ).

Wenn die Referenzvariable bereits angelegt wurde, wird die Klassenreferenz durch "#" ersetzt.

Data: lo_class type ref to lcl_class.

DATA(lo_class) = NEW #( ).

Beispiel mit Klasse Z_CL_TEST_EBERSTEIN

In der Klasse Z_CL_TEST_EBERSTEIN werden die 2 Methoden CLASS_CONSTRUCTOR und CONSTRUCTOR angelegt.

Definition Methoden

NewKlasse1.JPG

Implementierung Methoden

Die statische Methode CLASS_CONSTRUCTOR gibt eine Message aus.

NewKlasse2.JPG


Die Instanzmethode CONSTRUCTOR gibt ebenfalls eine Message aus.

NewKlasse3.JPG

Instanzierung Objekt im Report

Führt man nun in einem Report die folgende Zeile aus, wird eine Instanz auf die Klasse Z_CL_TEST_EBERSTEIN erzeugt.

DATA(lo_test) = NEW Z_CL_TEST_EBERSTEIN( ).

Ausführung

die Methoden CLASS_CONSTRUCTOR und CONSTRUCTOR werden in dieser Reihenfolge ausgeführt.

NewKlasse4.JPG


NewKlasse5.JPG

Instanzkonstruktor mit Importparameter

Der Instanzkonstruktur CONSTRUCTOR bekommt nun einen Importparameter IV_NAME.

Da nur Importparameter erlaubt sind, muss dies nicht auch nicht noch extra mit einer Parameterart "Importing, "Exprting" etc. angegeben werden, bzw. diese Angabe ist auch nicht möglich. Man sollte trotzdem das Präfix "IV", "IS" oder "IT" vor dem Parameter schreiben.

NewKlasse6.JPG


Die Instanzmethode CONSTRUCTOR wird nun in der Implementierung um den Parameter IV_NAME erweitert.

NewKlasse7.JPG


Die Instanziierung der Klasse wird um die Übergabe vom Wert "Hugo" erweitert.

DATA(lo_klasse) = NEW Z_CL_TEST_EBERSTEIN( 'Hugo' ).

Wenn es nur einen Importparameter gibt, kann man den Namen des Parameters auch weglassen. Man kann den Parameternamen auch dazuschreiben. Bei mehreren Parametern muss man es auch.

DATA(lo_klasse) = NEW Z_CL_TEST_EBERSTEIN( IV_NAME = 'Hugo' ).

Entsprechend verändert sich die Ausgabe vom Messagefenster der Instanzmethode

NewKlasse8.JPG

Web-Links

Literatur