ABAP - Schlüsselwortdokumentation →  ABAP - Referenz →  Programmeinheiten aufrufen und verlassen →  Verarbeitungsblöcke aufrufen →  Prozeduren aufrufen →  Methodenaufrufe →  Dynamischer Methodenaufruf → 

CALL METHOD

Kurzreferenz

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.

Ausnahmen

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



Weiterlesen
CALL METHOD - dynamic_meth
CALL METHOD - parameter_tables