The routine RfcDispatch receives a single RFC request and causes it to be executed. The calling syntax is:
RFC_RC SAP_API RfcDispatch(RFC_HANDLE handle);
Use RfcDispatch after callingRfcAccept, or after receiving an RFC_CALL return code from RfcReceive or RfcCallReceive. In order to dispatch RFC requests, you must also have registered the remote function with RfcInstallFunction (or RfcWinInstallFunction).
This function internally calls the registered function corresponding the the RFC call. The return code of the registered function is again returned by RfcDispatch.
The sample programs provide examples of how to use RfcDispatch. (In particular, the program rfcexec.c which is included in the RFC SDK) implements an RFC server.)
This function is defined in SAPRFC.H.
handle to the RFC connection
There are some function modules which are always offered automatically when using RfcDispatch. These are:
Get a list of the installed function modules.
Do nothing (used for connection test).
Deliver some information to the RFC library used.
A typical RFC server:
int main(int argv, char** argv)
handle = RfcAccept(argv);
if(handle == RFC_HANDLE_NULL)
... error processing
rc = RfcInstallFunction(...);
if(rc != RFC_OK)
rc = RfcDispatch(handle);
while(rc == RFC_OK);
When RfcDispatch(handle) calls a C-function, it passes the function a different handle than the handle passed RfcDispatch(). Trying to do an RfcGetData() on the original handle passed to RfcDispatch() malfunctions. This is due to the internal structure of the transactional RFC: Since the function call is done indirectly, and not directly, from librfc, it internally passes RFC handles of its own in order to carry out the RFC calls.