Dieser Abschnitt gibt einen Überblick über das Arbeiten mit Methoden in ABAP Objects. Für genauere Informationen zu den Anweisungen lesen Sie bitte die entsprechende Schlüsselwortdokumentation. Das Beispiel zu Methoden in ABAP Objects zeigt die Deklaration, Implementierung und den Aufruf von Methoden im Zusammenhang. Show Methodendeklaration Methoden werden im Deklarationsteil einer Klasse oder in einem Interface deklariert. Zum Deklarieren von Instanzmethoden dient die Anweisung METHODS <meth> IMPORTING.. [VALUE(]<ii> i 2 ... [)] TYPE type [OPTIONAL].. EXPORTING.. [VALUE(]<ei> e 2 ... [)] TYPE type .. CHANGING.. [VALUE(]<ci> c 2 ... [)] TYPE type [OPTIONAL].. RETURNING VALUE(<r>) EXCEPTIONS.. <ei> exc 2 ... . mit ihren Zusätzen. Zum Deklarieren von statischen Methoden dient die Anweisung CLASS-METHODS meth... Beide Anweisungen haben die gleiche Syntax. Bei der Methodendeklaration wird die Parameterschnittstelle einer Methode deklariert. Hierzu dienen die Zusätze IMPORTING, EXPORTING, CHANGING und RETURNING. Mit diesen Zusätzen werden Eingabe-, Ausgabe-, Eingabe/Ausgabeparameter sowie ein Rückgabewert definiert. Gleichzeitig werden die Eigenschaften der Schnittstellenparameter festgelegt, also ob ein Schnittstellenparameter per Referenz oder Wert (VALUE) übergeben wird, wie ein Parameter typisiert ist (TYPE) und ob ein Eingabeparameter optional (OPTIONAL, DEFAULT) ist. Im Unterschied zu Funktionsbausteinen ist bei Methoden die Referenzübergabe die Voreinstellung. Um Parameter als Wert zu übergeben, muß dies durch die VALUE-Kennung festgelegt werden. Der Rückgabewert (RETURNING-Parameter) muß immer explizit als Wert übergeben werden. Er ist für Methoden geeignet, die genau einen Ausgabewert liefern sollen und schließt die gleichzeitige Verwendung von EXPORTING- und CHANGING-Parametern aus. Wie bei Funktionsbausteinen ermöglichen es Ausnahmeparameter (EXCEPTIONS) dem Verwender, auf Ausnahmesituationen während der Ausführung der Methode zu reagieren. Methodenimplementierung Alle Methoden einer Klasse müssen im Implementierungsteil der Klasse zwischen den Anweisungen METHOD <meth>. ... ENDMETHOD. implementiert werden. Bei der Implementierung einer ist keine Angabe von Schnittstellenparametern erforderlich, da diese ausschließlich bei der Deklaration der Methode festgelegt werden. Die Schnittstellenparameter einer Methoden werden innerhalb der Methodenimplementierung wie lokale Variablen behandelt. Zusätzlich zu den Schnittstellenparametern können in einer Methode weitere lokale Variablen mit der DATA-Anweisungdeklariert werden. Wie in Funktionsbausteinen können auch in Methoden die Anweisungen RAISE <exception> und MESSAGE RAISING verwendet werden, um Ausnahmesituationen zu behandeln. Bei der Implementierung einer statische Methode ist zu beachten, dass sie nur mit den statischen Attributen ihrer Klasse arbeiten kann, während eine Instanzmethode auch Instanzattribute adressieren kann. Statischer Methodenaufruf Der Aufruf einer Methode erfolgt mit der Anweisung: CALL METHOD <meth> EXPORTING i 1 = f 1 i 2 =f 2 ... IMPORTING e 1 = g 1 e 2 =g 2 ... CHANGING c 1 = f 1 c 2 =f 2 ... RECEIVING r = h EXCEPTIONS e 1 = rc 1 e 2 =rc 2 ... Die Art der Adressierung der Methode <method> richtet sich danach, von wo aus welche Methode aufgerufen wird. Innerhalb einer Klasse können im Implementierungsteil die Methoden der gleichne Klasse direkt über ihren Namen <meth> aufgerufen werden: Von außerhalb der Klasse richtet sich die Aufrufbarkeit der Methode nach ihrer Sichtbarkeit, also in welchem Sichtbarkeitsbereich der Klasse ihre Deklaration stattfindet. Sichtbare Instanzmethoden werden von außen über CALL METHOD <ref>-><meth>... Aufgerufen. Dabei ist ref eine Referenzvariable, deren Wert auf eine Instanz der Klasse zeigt. Sichtbare statische Methoden werden von außen über aufgerufen, wobei <class> der Name der jeweiligen Klasse ist. Beim Aufruf einer Methode müssen alle nicht optionalen Eingabeparameter mit dem EXPORTING- bzw. CHANGING-Zusatz der Anweisung CALL METHOD übergeben werden. Die Ausgabeparameter können, müssen aber nicht, mit dem IMPORTING- bzw. RECEIVINg-Zusatz übernommen werden. Ebenso entscheidet der Aufrufer, ob er in der Methode ausgelöste Ausnahmen mit dem EXCEPTIONS-Zusatz behandelt oder nicht. Die Behandlung der Ausnahmen ist empfohlen. Die Übergabe bzw: Übernahme von Werten erfolgt wie bei Funktionsbausteinen durch die Syntax ... <Formalparameter> = <Aktualparameter> hinter dem entsprechenden Zusatz. Die Schnittstellen- bzw. Formalparameter stehen immer links vom Gleichheitszeichen (=), die Aktualparameter stehen immer rechts. Das Gleichheitszeichen ist in diesem Zusammenhang also kein Zuweisungsoperator, sondern dient allein der Zuordnung zwischen Programmvariablen und der Methodenschnittstelle. Falls die Schnittstelle einer Methode aus nur einem einzigen IMPORTING-Parameter besteht, dann, und nur dann, kann folgende Kurzform für den Methodenaufruf verwendet werden: CALL METHOD <method>( f). Der Aktualparameter <f> wird an den Eingabeparameter der Methode übergeben. Falls die Schnittstelle einer Methode nur aus IMPORTING-Parametern besteht, dann, und nur dann, kann diese Kurzform für den Methodenaufruf verwendet werden: CALL METHOD <method>( i 1 = f 1 i 2 = f 2 ...). Die Aktualparameter <f i > werden an die Formalparameter <i i > übergeben. Dynamischer Methodenaufruf Methoden können mit der in ABAP üblichen Klammersemantik dynamisch aufgerufen werden:
Dabei sind <f> und <c> Felder, die den Namen der Methode <meth> oder der Klasse <class> enthalten. Anders als bei Unterprogrammen und Funktionsbausteinen ist es beim dynamischen Methodenaufrufen möglich, auch die Aktualparameter dynamisch zu übergeben. Hierzu dienen die Zusätze PARAMETER-TABLE und EXCEPTION-TABLE der Anweisung CALL METHOD: CALL METHOD ... PARAMETER-TABLE <ptab> EXCEPTION-TABLE <etab>. Die Parameter-Tabelle ptab muss eine Hash-Tabelle vom Tabellentyp ABAP_PARMBIND_TAB bzw. vom Zeilentyp ABAP_PARMBIND sein. Diese Typen sind im ABAP Dictionary definiert. Die Tabelle hat die drei Spalten:
Die Spalte NAME ist der eindeutige Tabellenschlüssel. Für jeden nichtoptionalen Parameter muss, für jeden optionalen Parameter kann genau eine Zeile der internen Tabelle gefüllt werden. Die Art der Parameterübergabe ist in der Deklaration der aufgerufenen Methode für jeden Formalparameter festgelegt. Der Inhalt der Spalte KIND kann daher initial sein. Falls die Art der Parameterübergabe zur Laufzeit überprüft werden soll, kann der Spalte KIND eine der folgenden Konstanten aus der globalen Klasse CL_ABAP_OBJECTDESCR zugewiesen werden:
Die Bezeichnungen richten sich nach der Sicht des Aufrufers. Falls angegebene und tatsächliche Parameterart nicht übereinstimmen, wird der abfangbare Laufzeitfehler DYN_CALL_METH_PARAM_KIND erzeugt. Weiterhin können die Einträge in der Spalte KIND als zusätzlicher Schlüssel dienen, beispielsweise zum Auslesen sämtlicher importierter Werte nach dem Methodenaufruf. Für den Wert des Aktualparameters muss die Referenz VALUE der Tabellenzeile auf ein Datenobjekt zeigen, das den gewünschten Wert enthält. Hierfür kann der Befehl GET REFERENCE verwendet werden. Die Ausnahme-Tabelle <etab> muss eine Hash-Tabelle vom Tabellentyp ABAP_EXCPBIND_TAB bzw. vom Zeilentyp ABAP_EXCPBIND sein. Diese Typen sind im ABAP Dictionary definiert. Die Tabelle hat die zwei Spalten
Die Spalte NAME ist der eindeutige Tabellenschlüssel. Für jede Ausnahme kann genau eine Zeile der internen Tabelle gefüllt werden. Dabei wird der Komponente VALUE der Zahlenwert zugewiesen, der nach Auslösen der Ausnahme in sy-subrc stehen soll. Funktionale Methoden Funktionale Methoden sind Methoden mit beliebig vielen IMPORTING-Parametern und einem RETURNING-Parameter. Funktionale Methoden können außer mit CALL METHOD durch folgende Ausdrücke an Operandenpositionen aufgerufen werden:
Diese Schreibweise ist zur Zeit möglich:
Die funktionale Methode wird anstelle eines Operanden eingetragen. Bei Ausführung der Anweisung wird die Methode aufgerufen und der zurückgegebene RETURNING-Parameterals Operand verwendet. Ereignisbehandlermethoden Ereignisbehandlermethoden sind spezielle Methoden, die nicht nur mit der Anweisung aufgerufen werden können, sondern auch über Ereignisse auslösbar sind. Ereignisbehandlermethoden werden mit dem Zusatz ... FOR EVENT evt OF cif ... der Anweisungen METHODS CLASS-METHODS bzw. deklariert. Für die Schnittstelle einer Ereignisbehandlermethode bestehen folgende Besonderheiten:
Mehr zu Ereignisbehandlermethoden und Ereignissen finden Sie unter Ereignisse auslösen und behandeln . Konstruktoren Konstruktoren sind spezielle Methoden, die nicht mit CALL METHOD aufgerufen werden können, sondern vom System automatisch ausgeführt werden, um einen definierten Anfangszustand für Objekte oder Klassen herzustellen. Wir unterscheiden zwischen Instanz- und statischen Konstruktoren. Konstruktoren sind Methoden mit vordefinierten Namen. Um sie zu verwenden, müssen sie explizit in der Klasse deklariert werden. Der Instanzkonstruktor eine Klasse ist die vordefinierte Instanzmethode CONSTRUCTOR und wird im öffentlichen Bereich über METHODS CONSTRUCTOR IMPORTING [VALUE(] i 1 i2 ...[)] TYPE type [OPTIONAL]... EXCEPTIONS exc 1 exc2 ... . deklariert und wie jede gewöhnliche Methode im Implementierungsteil implementiert. Das System ruft den Instanzkonstruktor für jede Instanz der Klasse genau einmal auf, und zwar direkt nach der vollständigen Erzeugung der Instanz mit der Anweisung CREATE OBJECT. Die Eingabeparameter und die Ausnahmen des Instanzkonstruktors werden bei der Erzeugung einer Instanz mit der Anweisung CREATE OBJECT mit deren Zusätzen EXPORTING und EXCEPTIONS übergeben bzw. behandelt. Der statische Konstruktor einer Klasse ist die vordefinierte statische Methode CLASS_CONSTRUCTOR und wird im öffentlichen Bereich über CLASS-METHODS CLASS_CONSTRUCTOR. deklariert und wie jede gewöhnliche Methode im Implementierungsteil implementiert. Der statische Konstruktor hat keine Parameter. Das System ruft den statischen Konstruktor für jede Klasse genau einmal auf, und zwar vor dem ersten Zugriff auf die Klasse. Innerhalb des statischen Konstruktors kann deshalb nicht auf seine eigene Klasse zugegriffen werden. Im Beispiel zu Methoden in ABAP Objects wird auch die Verwendung von Instanz- und statischen Konstruktoren gezeigt. Wie viele Parameter können einer Methode übergeben werden?Der Methode können beliebig viele Argumente vom Datentyp Object übergeben werden. Da der Object-Datentyp zu allen Referenz-Datentypen und auch primitiven Datentypen kompatibel ist, können der Methode bestimmeDatentyp somit beliebig viele Argumente von beliebigem Datentyp übergeben werden.
Was sind Parameter einer Methode?Ein Parameter in Java enthält Daten, die man über die runden Klammern beim Methodenaufruf an die Methode selbst übergeben kann. Dieses Vorgehen ist sehr wichtig, da sich Methoden außerhalb der main-Methode befinden und somit keinen Zugriff auf lokale Daten haben, welche innerhalb der main-Methode initialisiert sind.
Was ist ein Übergabe Parameter?Parameter – (deutsch) auch Übergabewerte genannt – sind in der Informatik Variablen, durch die ein Computerprogramm (oft ein Unterprogramm) auf die Verarbeitung bestimmter Werte „eingestellt“ werden kann.
Was ist eine Methode in der Informatik?Methoden (englisch method oder member function) sind in der objektorientierten Programmierung Unterprogramme in der Form von Funktionen oder Prozeduren, die das Verhalten von Objekten beschreiben und implementieren.
|