ABAP Keyword Documentation → ABAP − Reference → Data Interfaces and Communication Interfaces → RFC - Remote Function Call → Examples for Remote Function Call
Parameter Passing in sRFC and aRFC
This example demonstrates parameter passing in two RFC variants.
Other versions:
7.31 | 7.40 | 7.54
Source Code
REPORT demo_rfc_parameters.
CLASS demo_rfc DEFINITION.
PUBLIC SECTION.
CLASS-METHODS:
main,
callback IMPORTING p_task TYPE clike.
PRIVATE SECTION.
CLASS-DATA:
val_in TYPE string,
val_out TYPE string,
val_in_out TYPE string,
msg TYPE c LENGTH 80,
out TYPE REF TO if_demo_output.
ENDCLASS.
CLASS demo_rfc IMPLEMENTATION.
METHOD main.
out = cl_demo_output=>new( ).
"Synchronous RFC
val_in = `val_in`.
val_out = ``.
val_in_out = `val_in_out`.
CALL FUNCTION 'DEMO_RFM_PARAMETERS'
DESTINATION 'NONE'
EXPORTING
p_in = val_in
IMPORTING
p_out = val_out
CHANGING
p_in_out = val_in_out
EXCEPTIONS
system_failure = 2 MESSAGE msg
communication_failure = 4 MESSAGE msg.
IF sy-subrc <> 0.
out->display( |Error when calling sRFC.\n{ msg }| ).
RETURN.
ENDIF.
out->next_section( 'sRFC'
)->write( |{ val_out }\n{ val_in_out }| ).
"Asynchronous RFC
val_in = `val_in`.
val_out = ``.
val_in_out = `val_in_out`.
CALL FUNCTION 'DEMO_RFM_PARAMETERS'
DESTINATION 'NONE'
STARTING NEW TASK 'DEMO'
CALLING demo_rfc=>callback ON END OF TASK
EXPORTING
p_in = val_in
CHANGING
p_in_out = val_in_out
EXCEPTIONS
system_failure = 2 MESSAGE msg
communication_failure = 4 MESSAGE msg.
IF sy-subrc <> 0.
out->display( |Error when calling aRFC.\n{ msg }| ).
RETURN.
ENDIF.
WAIT FOR ASYNCHRONOUS TASKS UNTIL val_out IS NOT INITIAL
UP TO 10 SECONDS.
out->next_section( 'aRFC'
)->write( |{ val_out }\n{ val_in_out }| ).
out->display( ).
ENDMETHOD.
METHOD callback.
val_out = ``.
val_in_out = ``.
RECEIVE RESULTS FROM FUNCTION 'DEMO_RFM_PARAMETERS'
IMPORTING
p_out = val_out
CHANGING
p_in_out = val_in_out
EXCEPTIONS
system_failure = 2 MESSAGE msg
communication_failure = 4 MESSAGE msg.
IF sy-subrc <> 0.
out->display( '|Error when receiving aRFC.\n{ msg }|' ).
RETURN.
ENDIF.
ENDMETHOD.
ENDCLASS.
START-OF-SELECTION.
demo_rfc=>main( ).
Description
The function module DEMO_RFM_PARAMETERS is called using synchronous and asynchronous RFC.
- In synchronous calls, parameters are passed and applied directly in the statement
CALL FUNCTION
.
- In asynchronous calls, parameters can only be passed in the statement
CALL FUNCTION
. Parameters are applied using the statementRECEIVE
in a callback routine. The statementWAIT FOR ASYNCHRONOUS TASKS
is used to wait for this routine.