Ansicht
Dokumentation

ABAPCALL_METHOD_METH_IDENT_DYNA - CALL METHOD METH IDENT DYNA

ABAPCALL_METHOD_METH_IDENT_DYNA - CALL METHOD METH IDENT DYNA

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

CALL METHOD, dynamic_meth

Kurzreferenz



... (meth_name)
  $| oref->(meth_name)
  $| class=>(meth_name)
  $| (class_name)=>(meth_name)
  $| (class_name)=>meth ...



Zusätze:

1. ... (meth_name) ...

2. ... (class_name) ...



Alternativen:

1. ... (meth_name) ...

2. ... oref->(meth_name) ...

3. ... class=>(meth_name) ...

4. ... (class_name)=>(meth_name) ...

5. ... (class_name)=>meth ...



Wirkung

Mit diesen Bezeichnern werden Methoden dynamisch angegeben



Zusatz 1

... (meth_name) ...

Wirkung

Für meth_name ist ein zeichenartiges Feld anzugeben, das während der Ausführung der Anweisung den Namen einer Methode enthalten muss.

Zusatz 2

... (class_name) ...

Wirkung

Für class_name ist ein zeichenartiges Feld anzugeben das während der Ausführung der Anweisung den Namen einer Klasse in Großbuchstaben enthalten muss. Es kann insbesondere auch ein absoluter Typname angegeben werden. Es können folgende Angaben für class_name unterschieden werden:

  • Literal oder Konstante
Wenn das Datenobjekt class_name als Zeichenliteral oder als Konstante angegeben ist, kann es statisch ausgewertet werden und die angegebene Klasse wird als verwendetes Objekt erkannt.
  • Variable
Wenn das Datenobjekt class_name als Variable angegeben ist, ist dies eine rein dynamische Angabe und es findet keine statische Auswertung des Inhalts statt.

Bei Ausführung der Anweisung wird class_name in beiden Fällen erst zur Laufzeit ausgewertet.



Alternative 1

... (meth_name) ...


Wirkung

Diese Variante ist nur für Methoden der eigenen Klasse möglich. Sie arbeitet wie me->(meth_name) (siehe Alternative 2).

Alternative 2

... oref->(meth_name) ...


Wirkung

Diese Form ist für alle sichtbaren Methoden von Objekten möglich. oref kann eine beliebige Klassenreferenzvariable oder Interfacereferenzvariable sein, die auf ein Objekt zeigt, das die in meth_name angegebene Methode bzw. Interfacemethode enthält. Es wird zuerst im statischen Typ und danach im dynamischen Typ von oref for the method.

Hinweise

  • Sowohl beim dynamischen als auch beim statischen Zugriff dürfen mit Interfacereferenzvariablen nicht auf alle Komponenten sondern nur auf Interfacekomponenten zugegriffen werden.
  • Die Pseudoreferenz super darf in dynamischen Methodenaufrufen nicht verwendet werden.

Alternative 3

... class=>(meth_name) ...


Alternative 4

... (class_name)=>(meth_name) ...


Alternative 5

... (class_name)=>meth ...


Wirkung

Diese Formen sind für alle sichtbaren statischen Methoden möglich. Es können sowohl Klasse als auch Methode dynamisch angegeben werden. Die Methode meth und die Klasse class können aber auch jeweils direkt angegeben werden.

Bei Alternativen mit dynamische Klassenangabe (class_name) durchsucht das System erst die Klasse und dann die Methode. Bei der statischen Angabe class wird die Methode in der vorhandenen Klasse gesucht.

Hinweise

  • Der externe Aufruf von Methoden lokaler Klassen insbesondere von ausführbaren Programmen, Modul-Pools und Subroutinen-Pools ist kritisch, da in der Regel nicht statisch festgelegt werden kann, welcher Programmgruppe solche Programme zugeordnet sind.
  • Ein externer Aufruf von Methoden lokaler Klassen ist nur über die Angabe der Kompilationseinheit möglich. Bei einer in einem Include-Programm definierten Klasse kann nicht der Name des Include-Programms verwendet werden.

Beispiel

Das Beispiel demonstriert verschiedene Formen dynamischer Methodenaufrufe.






General Material Data   ROGBILLS - Synchronize billing plans  
Diese Dokumentation steht unter dem Copyright der SAP AG.

Length: 7423 Date: 20240427 Time: 055340     sap01-206 ( 92 ms )