SAP NetWeaver AS ABAP Release 751, ©Copyright 2017 SAP AG. Alle Rechte vorbehalten.
ABAP - Schlüsselwortdokumentation → ABAP - Referenz → Programmeinheiten aufrufen und verlassen → Verarbeitungsblöcke aufrufen → Prozeduren aufrufen → Methodenaufrufe → Dynamischer Methodenaufruf →
CALL METHOD
Syntax
CALL METHOD dynamic_meth {
parameter_list
| parameter_tables }.
Wirkung
Diese Anweisung ruft die in dynamic_meth dynamisch angegebene Methode auf (Dynamic Invoke). Die Zuordnung von Aktualparametern zu Formalparametern der Methode erfolgt entweder statisch über parameter_list oder dynamisch über parameter_tables. Die Syntax von parameter_list ist dieselbe wie bei der expliziten Parameterangabe beim statischen Methodenaufruf.
Hinweise
Sicherheitshinweis
Wenn beim Aufruf einer Programmeinheit deren Namen dynamisch angegeben und dieser von außen
in ein Programm übernommen wird, stellt dies ein ernsthaftes Sicherheitsrisiko dar. Ein Name,
der von außen in ein Programm übernommen wird, muss vor seiner Verwendung in einem Aufruf
gründlich überprüft werden. Hierfür dient unter anderem die Systemklasse CL_ABAP_DYN_PRG. Siehe
Dynamische Aufrufe.
Systemfelder
Das Systemfeld sy-subrc wird beim Aufruf einer Methode auf 0 gesetzt. Falls eine
nicht-klassenbasierte Ausnahme auftritt und durch Zuweisung eines Werts behandelt wird, wird sy-subrc auf diesen Wert gesetzt.
Beispiel
Dynamischer Aufruf der statischen Methode GUI_DOWNLOAD der globalen Klasse CL_GUI_FRONTEND_SERVICES zum Speichern des Inhalts einer internen Tabelle in einer Datei auf dem aktuellen Präsentationsserver. Die Namen von Klasse und Methode sind in den Strings class und meth angegeben. Die Schnittstellenparameter werden über die interne Tabelle ptab übergeben und den Ausnahmen der Methode werden über die Tabelle etab Rückgabewerte zugeordnet. Ausnahmen, die beim Methodenaufruf selbst auftreten können, werden in einer TRY-Kontrollstruktur mit der Anweisung CATCH behandelt.
DATA: line TYPE c LENGTH 80,
text_tab LIKE STANDARD TABLE OF line,
filename TYPE string,
filetype TYPE c LENGTH 10,
fleng TYPE i.
DATA: meth TYPE string,
class TYPE string,
ptab TYPE abap_parmbind_tab,
etab TYPE abap_excpbind_tab.
DATA: exc_ref TYPE REF TO cx_sy_dyn_call_error.
class = 'CL_GUI_FRONTEND_SERVICES'.
meth = 'GUI_DOWNLOAD'.
filename = 'c:\temp\text.txt'.
filetype = 'ASC'.
ptab = VALUE #( ( name = 'FILENAME'
kind = cl_abap_objectdescr=>exporting
value = REF #( filename ) )
( name = 'FILETYPE'
kind = cl_abap_objectdescr=>exporting
value = REF #( filetype ) )
( name = 'DATA_TAB'
kind = cl_abap_objectdescr=>changing
value = REF #( text_tab ) )
( name = 'FILELENGTH'
kind = cl_abap_objectdescr=>importing
value = REF #( fleng ) ) ).
etab = VALUE #( ( name = 'OTHERS' value = 4 ) ).
TRY.
CALL METHOD (class)=>(meth)
PARAMETER-TABLE
ptab
EXCEPTION-TABLE
etab.
CASE sy-subrc.
WHEN 1.
...
...
ENDCASE.
CATCH cx_sy_dyn_call_error INTO exc_ref.
MESSAGE exc_ref->get_text( ) TYPE 'I'.
ENDTRY.
Behandelbare Ausnahmen
CX_SY_NO_HANDLER
CX_SY_DYN_CALL_EXCP_NOT_FOUND
CX_SY_DYN_CALL_ILLEGAL_CLASS
CX_SY_DYN_CALL_ILLEGAL_METHOD
CX_SY_DYN_CALL_ILLEGAL_TYPE
CX_SY_DYN_CALL_PARAM_MISSING
CX_SY_DYN_CALL_PARAM_NOT_FOUND
CX_SY_REF_IS_INITIAL
Unbehandelbare Ausnahmen