SAP CALL METHOD DYNAMIC ABAP Statements

Get Example source ABAP code based on a different SAP table
  


Standard SAP Help for CALL_METHOD

CALL METHOD

Short Reference
• CALL METHOD ABAP Statement


ABAP Syntax CALL METHOD
dynamic_meth { parameter_list
| parameter_tables }.

What does it do? This statement calls the method dynamically specified in dynamic_meth(Dynamic Invoke). Actual parameters are assigned to formal parameters of the method, either statically using parameter_list or dynamically using parameter_tables. The syntax of parameter_list is the same as that in the explicit parameter specification for the static method call.

Latest notes:In the dynamic method call, the parameters are not passed in parentheses. The syntax of the dynamic method call is like that of a function module call. The CALL_METHOD statement should now only be used for the dynamic method call. It is unnecessary, and therefore obsolete, for the static method call. Specifying a method dynamically is one of the dynamic programming techniques.
ABAP Code Snippet

Security Note

ABAP Code Snippet If used wrongly, dynamic calls of program units can present a serious security risk. Names of program units that are passed to a program from the outside must be checked thoroughly before being used in dynamic calls. The system class CL_ABAP_DYN_PRG , for example, can be used to do this.
ABAP Code Snippet
ABAP Code Snippet See Dynamic Calls.

System Fields The system field sy-subrc is set to 0 when a method is called. If a non-class-based exception is raised that was handled by the assignment of a value, then sy-subrc is set to this value.



Example ABAP Coding
Dynamic call of the static method gui_download of
global class cl_gui_frontend_services for storing the content of an internal table in a file on the current presentation server. The names of the class and method are specified in the strings class and meth. The interface parameters are passed in the internal table ptab and return values are assigned to the exceptions of the method are assigned using table etab. Exceptions that occur at the method call itself are handled in a TRY control structure with statement CATCH. 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: emp ext.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.
ABAP Code Snippet



Runtime Exceptions

Catchable Exceptions


CX_SY_DYN_CALL_EXCP_NOT_FOUND
Reason for error:
Exception does not exist
Runtime error:
DYN_CALL_METH_EXCP_NOT_FOUND

CX_SY_DYN_CALL_ILLEGAL_CLASS
Reason for error:
Angegebene Klasse ist abstrakt
Runtime error:
DYN_CALL_METH_CLASS_ABSTRACT
Reason for error:
Specified class does not exist
Runtime error:
DYN_CALL_METH_CLASS_NOT_FOUND

CX_SY_DYN_CALL_ILLEGAL_METHOD
Reason for error:
Method cannot be accessed.
Runtime error:
CALL_METHOD_NOT_ACCESSIBLE
Reason for error:
The called method is not implemented.
Runtime error:
CALL_METHOD_NOT_IMPLEMENTED
Reason for error:
Calls the static constructor
Runtime error:
DYN_CALL_METH_CLASSCONSTRUCTOR
Reason for error:
Calls the instance constructor
Runtime error:
DYN_CALL_METH_CONSTRUCTOR
Reason for error:
Method does not exist
Runtime error:
DYN_CALL_METH_NOT_FOUND
Reason for error:
Method is not static
Runtime error:
DYN_CALL_METH_NO_CLASS_METHOD
Reason for error:
Calls a non-visible method
Runtime error:
DYN_CALL_METH_PRIVATE
Reason for error:
Calls a non-visible method
Runtime error:
DYN_CALL_METH_PROTECTED

CX_SY_DYN_CALL_ILLEGAL_TYPE
Reason for error:
Type conflict during method call.
Runtime error:
CALL_METHOD_CONFLICT_GEN_TYPE
Reason for error:
Type conflict during method call.
Runtime error:
CALL_METHOD_CONFLICT_TAB_TYPE
Reason for error:
Type conflict during method call.
Runtime error:
CALL_METHOD_CONFLICT_TYPE
Reason for error:
Incorrect parameter type
Runtime error:
DYN_CALL_METH_PARAM_KIND
Reason for error:
Actual parameter cannot be filled
Runtime error:
DYN_CALL_METH_PARAM_LITL_MOVE
Reason for error:
Incorrect table type for a parameter
Runtime error:
DYN_CALL_METH_PARAM_TAB_TYPE
Reason for error:
Incorrect parameter type
Runtime error:
DYN_CALL_METH_PARAM_TYPE

CX_SY_DYN_CALL_PARAM_MISSING
Reason for error:
Missing actual parameter
Runtime error:
DYN_CALL_METH_PARAM_MISSING
Reason for error:
Parameter reference is empty
Runtime error:
DYN_CALL_METH_PARREF_INITIAL

CX_SY_DYN_CALL_PARAM_NOT_FOUND
Reason for error:
Incorrect parameter name
Runtime error:
DYN_CALL_METH_PARAM_NOT_FOUND

CX_SY_REF_IS_INITIAL
Reason for error:
Reference variable is empty
Runtime error:
DYN_CALL_METH_REF_IS_INITIAL


Non-catchable Exceptions
Reason for error:
Invalid parameters for dynamic method call. Relevant for instance constructors when instantiated dynamically.
Runtime error:
CALL_METHOD_PARMS_ILLEGAL
ABAP Code Snippet

Return to menu