Ansicht
Dokumentation
ABAPCALL_METHOD_METH_IDENT_DYNA - CALL METHOD METH IDENT DYNA
PERFORM Short Reference CL_GUI_FRONTEND_SERVICES - Frontend ServicesDiese Dokumentation steht unter dem Copyright der SAP AG.
CALL METHOD, dynamic_meth
... (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
- Wenn in class_name über einen absoluten Typnamen ein Typ eines anderen Programms angegeben wird, wird dieses je nach Programmtyp in eine neue Zusatzprogrammgruppe oder in die aktuelle Programmgruppe hinzugeladen, falls es noch nicht geladen war. Dabei wird gegebenenfalls der Programmkonstruktor ausgeführt.
- 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 )