Classes | |
| struct | _RFC_ATTRIBUTES |
| Structure returned by RfcGetConnectionAttributes() giving some information about the partner system on the other side of this RFC connection. More... | |
| struct | _RFC_SECURITY_ATTRIBUTES |
| Structure passed to the RFC_SERVER_AUTHORIZATION_HANDLER giving some security related information about the calling ABAP partner of an incoming RFC call. More... | |
| struct | _RFC_SERVER_CONTEXT |
| Used in RfcGetServerContext() for obtaining more information about the current incoming function call. More... | |
| struct | _RFC_CONNECTION_HANDLE |
| Handle to an RFC connection (client connection or server connection). More... | |
| struct | _RFC_CONNECTION_PARAMETER |
| Structure used for connecting to a backend system via RfcOpenConnection() or RfcRegisterServer(). More... | |
Enumerations | |
| enum | _RFC_CALL_TYPE { RFC_SYNCHRONOUS, RFC_TRANSACTIONAL, RFC_QUEUED, RFC_BACKGROUND_UNIT } |
| Used in RfcGetServerContext() for inquiring the type of an incoming function call from the backend. More... | |
Functions | |
| DECL_EXP RFC_CONNECTION_HANDLE SAP_API | RfcOpenConnection (RFC_CONNECTION_PARAMETER const *connectionParams, unsigned paramCount, RFC_ERROR_INFO *errorInfo) |
| Opens an RFC client connection for invoking ABAP function modules in an R/3 backend. | |
| DECL_EXP RFC_CONNECTION_HANDLE SAP_API | RfcRegisterServer (RFC_CONNECTION_PARAMETER const *connectionParams, unsigned paramCount, RFC_ERROR_INFO *errorInfo) |
| Registers a server connection at an SAP gateway. | |
| DECL_EXP RFC_CONNECTION_HANDLE SAP_API | RfcStartServer (int argc, SAP_UC **argv, RFC_CONNECTION_PARAMETER const *connectionParams, unsigned paramCount, RFC_ERROR_INFO *errorInfo) |
| Allows a program to be used as an RFC server which is started by the backend on demand. | |
| DECL_EXP RFC_RC SAP_API | RfcCloseConnection (RFC_CONNECTION_HANDLE rfcHandle, RFC_ERROR_INFO *errorInfo) |
| Closes an RFC connection
Can be used to close client connections as well as server connections, when they are no longer needed. | |
| DECL_EXP RFC_RC SAP_API | RfcIsConnectionHandleValid (RFC_CONNECTION_HANDLE rfcHandle, int *isValid, RFC_ERROR_INFO *errorInfo) |
| Checks an RFC connection
Can be used to check whether a client/server connection has already been closed, or whether the NW RFC library still "considers" the connection to be open. | |
| DECL_EXP RFC_RC SAP_API | RfcResetServerContext (RFC_CONNECTION_HANDLE rfcHandle, RFC_ERROR_INFO *errorInfo) |
| RFC_RC SAP_API RfcResetServerContext
Resets the SAP server context ("user context / ABAP session context") associated with the given client connection, but does not close the connection. | |
| DECL_EXP RFC_RC SAP_API | RfcPing (RFC_CONNECTION_HANDLE rfcHandle, RFC_ERROR_INFO *errorInfo) |
| Ping the remote communication partner through the passed connection handle. | |
| DECL_EXP RFC_RC SAP_API | RfcGetConnectionAttributes (RFC_CONNECTION_HANDLE rfcHandle, RFC_ATTRIBUTES *attr, RFC_ERROR_INFO *errorInfo) |
| Returns details about the current client or server connection. | |
| DECL_EXP RFC_RC SAP_API | RfcGetServerContext (RFC_CONNECTION_HANDLE rfcHandle, RFC_SERVER_CONTEXT *context, RFC_ERROR_INFO *errorInfo) |
| Inside a server function, returns details about the current execution context. | |
| DECL_EXP RFC_RC SAP_API | RfcGetPartnerSSOTicket (RFC_CONNECTION_HANDLE rfcHandle, SAP_UC *ssoTicket, unsigned *length, RFC_ERROR_INFO *errorInfo) |
| Gets the partner's SSO2 ticket, if any. | |
| DECL_EXP RFC_RC SAP_API | RfcGetPartnerSNCName (RFC_CONNECTION_HANDLE rfcHandle, SAP_UC *sncName, unsigned length, RFC_ERROR_INFO *errorInfo) |
| Gets the partner's SNC name, if any. | |
| DECL_EXP RFC_RC SAP_API | RfcGetPartnerSNCKey (RFC_CONNECTION_HANDLE rfcHandle, SAP_RAW *sncKey, unsigned *length, RFC_ERROR_INFO *errorInfo) |
| Gets partner's SNC key, if any. | |
| DECL_EXP RFC_RC SAP_API | RfcSNCNameToKey (SAP_UC const *sncLib, SAP_UC const *sncName, SAP_RAW *sncKey, unsigned *keyLength, RFC_ERROR_INFO *errorInfo) |
| Converts SNC name to SNC key. | |
| DECL_EXP RFC_RC SAP_API | RfcSNCKeyToName (SAP_UC const *sncLib, SAP_RAW const *sncKey, unsigned keyLength, SAP_UC *sncName, unsigned nameLength, RFC_ERROR_INFO *errorInfo) |
| Converts SNC key to SNC name. | |
| DECL_EXP RFC_RC SAP_API | RfcListenAndDispatch (RFC_CONNECTION_HANDLE rfcHandle, int timeout, RFC_ERROR_INFO *errorInfo) |
| Listens on a server connection handle and waits for incoming RFC calls from the R/3 system. | |
| DECL_EXP RFC_RC SAP_API | RfcInvoke (RFC_CONNECTION_HANDLE rfcHandle, RFC_FUNCTION_HANDLE funcHandle, RFC_ERROR_INFO *errorInfo) |
| Executes a function module in the backend system. | |
| enum _RFC_CALL_TYPE |
Used in RfcGetServerContext() for inquiring the type of an incoming function call from the backend.
Definition at line 324 of file sapnwrfc.h.
| DECL_EXP RFC_RC SAP_API RfcCloseConnection | ( | RFC_CONNECTION_HANDLE | rfcHandle, | |
| RFC_ERROR_INFO * | errorInfo | |||
| ) |
Closes an RFC connection
Can be used to close client connections as well as server connections, when they are no longer needed.
| [in] | rfcHandle | Connection to be closed |
| [out] | *errorInfo | Error details in case closing the connection fails. (Can usually be ignored...) |
| DECL_EXP RFC_RC SAP_API RfcGetConnectionAttributes | ( | RFC_CONNECTION_HANDLE | rfcHandle, | |
| RFC_ATTRIBUTES * | attr, | |||
| RFC_ERROR_INFO * | errorInfo | |||
| ) |
Returns details about the current client or server connection.
See documentation of RFC_ATTRIBUTES.
| [in] | rfcHandle | RFC connection |
| [out] | *attr | Information about the current connection and the communication partner on the other side. |
| [out] | *errorInfo | Additional error information (e.g. connection already closed). |
| DECL_EXP RFC_RC SAP_API RfcGetPartnerSNCKey | ( | RFC_CONNECTION_HANDLE | rfcHandle, | |
| SAP_RAW * | sncKey, | |||
| unsigned * | length, | |||
| RFC_ERROR_INFO * | errorInfo | |||
| ) |
Gets partner's SNC key, if any.
| [in] | rfcHandle | RFC server connection. If this function is executed on a client connection, RFC_ILLEGAL_STATE will be returned. |
| [out] | *sncKey | Pre-allocated buffer, which will receive the backend user's SNC key. |
| [in,out] | *length | Needs to be filled with the buffer length of ssoTicket. The return value will be the byte length of the returned key (if buffer was large enough). Unfortunately in case of RFC_BUFFER_TOO_SMALL the required size is not returned by the GSS library. The maximum length of an SNC key is 1024. |
| [out] | *errorInfo | More error details in case SNC is not active. |
| DECL_EXP RFC_RC SAP_API RfcGetPartnerSNCName | ( | RFC_CONNECTION_HANDLE | rfcHandle, | |
| SAP_UC * | sncName, | |||
| unsigned | length, | |||
| RFC_ERROR_INFO * | errorInfo | |||
| ) |
Gets the partner's SNC name, if any.
| [in] | rfcHandle | RFC server connection. If this function is executed on a client connection, RFC_ILLEGAL_STATE will be returned. |
| [out] | *sncName | Pre-allocated buffer, which will receive the backend user's SNC name (null-terminated string). |
| [in] | length | Size of the pre-allocated buffer. This information is coming from the GSS library, therefore unfortunately the feature of assigning the used/required length to an output parameter is not possible in this case. The maximum length of an SNC name is 256. |
| [out] | *errorInfo | More error details in case SNC is not active. |
| DECL_EXP RFC_RC SAP_API RfcGetPartnerSSOTicket | ( | RFC_CONNECTION_HANDLE | rfcHandle, | |
| SAP_UC * | ssoTicket, | |||
| unsigned * | length, | |||
| RFC_ERROR_INFO * | errorInfo | |||
| ) |
Gets the partner's SSO2 ticket, if any.
Can be used only with a server connection inside the implementation of a server function.
| [in] | rfcHandle | RFC server connection |
| [out] | *ssoTicket | Pre-allocated buffer, which will receive the backend user's SSO2 ticket (signed user information in base64 format) |
| [in,out] | *length | Needs to be filled with the buffer length of ssoTicket. The return value will be the string length of the returned ticket (if buffer was large enough) or the required buffer size (if RFC_BUFFER_TOO_SMALL). |
| [out] | *errorInfo | More error details in case there is no ticket. |
| DECL_EXP RFC_RC SAP_API RfcGetServerContext | ( | RFC_CONNECTION_HANDLE | rfcHandle, | |
| RFC_SERVER_CONTEXT * | context, | |||
| RFC_ERROR_INFO * | errorInfo | |||
| ) |
Inside a server function, returns details about the current execution context.
See documentation of RFC_SERVER_CONTEXT.
| [in] | rfcHandle | RFC server connection |
| [out] | *context | Information about the current server execution context. |
| [out] | *errorInfo | Additional error information (e.g. connection is not a server connection). |
| DECL_EXP RFC_RC SAP_API RfcInvoke | ( | RFC_CONNECTION_HANDLE | rfcHandle, | |
| RFC_FUNCTION_HANDLE | funcHandle, | |||
| RFC_ERROR_INFO * | errorInfo | |||
| ) |
Executes a function module in the backend system.
The return codes have the following meaning:
In the above two cases "rfcHandle" is still open and can be used to execute further function call.
In these three cases the connection has been closed, so the "rfcHandle" needs to be refreshed via RfcOpenConnection.
| [in] | rfcHandle | Client connection over which to execute the function module. |
| [in,out] | funcHandle | Data container containing the input data for the function module. RfcInvoke() will write the FM's output data into this container. |
| [out] | *errorInfo | Additional error information. |
| DECL_EXP RFC_RC SAP_API RfcIsConnectionHandleValid | ( | RFC_CONNECTION_HANDLE | rfcHandle, | |
| int * | isValid, | |||
| RFC_ERROR_INFO * | errorInfo | |||
| ) |
Checks an RFC connection
Can be used to check whether a client/server connection has already been closed, or whether the NW RFC library still "considers" the connection to be open.
Note that this does not guarantee that the connection is indeed still alive: A firewall may silently have closed the connection without notifying the endpoints. If you want to find out, whether the connection is still alive, you'll have to use the more expensive RfcPing().
| [in] | rfcHandle | Connection to be checked |
| [out] | *isValid | 1, if the connection is still found in the internal connection management, 0 otherwise. |
| [out] | *errorInfo | Error details in case closing the connection fails. (Can usually be ignored...) |
| DECL_EXP RFC_RC SAP_API RfcListenAndDispatch | ( | RFC_CONNECTION_HANDLE | rfcHandle, | |
| int | timeout, | |||
| RFC_ERROR_INFO * | errorInfo | |||
| ) |
Listens on a server connection handle and waits for incoming RFC calls from the R/3 system.
The mechanism for dispatching incoming function calls works as follows: First RfcListenAndDispatch() checks, whether for the current combination of R/3 SystemID and function module name a callback function has been installed via RfcInstallServerFunction(). If not, it checks, whether a callback function for SystemID=NULL has been installed via RfcInstallServerFunction().If not, it checks, whether a global callback function has been installed via RfcInstallGenericServerFunction().
If a callback function has been found, the RFC call will be dispatched to that function for processing, and RfcListenAndDispatch() returns the return code of the callback function. Otherwise RfcListenAndDispatch() returns a SYSTEM_FAILURE to the R/3 backend and the return code RFC_NOT_FOUND to the caller.
In general the return codes of RfcListenAndDispatch() have the following meaning:
In the above three cases "rfcHandle" is still open and can be used to listen for the next request.
In these five cases the connection has been closed, so the "rfcHandle" needs to be refreshed via RfcRegisterServer.
| [in] | rfcHandle | Server connection on which to listen for incoming requests. |
| [in] | timeout | Number of seconds to wait for an incoming request. |
| [out] | *errorInfo | Additional error information. |
| DECL_EXP RFC_CONNECTION_HANDLE SAP_API RfcOpenConnection | ( | RFC_CONNECTION_PARAMETER const * | connectionParams, | |
| unsigned | paramCount, | |||
| RFC_ERROR_INFO * | errorInfo | |||
| ) |
Opens an RFC client connection for invoking ABAP function modules in an R/3 backend.
Opens a client connection to an SAP System. The connectionParams may contain the following name-value pairs:
and additionally one of
When logging on with SNC, user&passwd are to be replaced by
(If snc_lib is not specified, the RFC library uses the "global" GSS library defined via environment variable SNC_LIB.)
When logging on with SSO Ticket, you can use mysapsso2 instead of user&passwd. The old SSO format (mysapsso) is no longer supported.
Alternatively the connection parameters can be defined in the config file sapnwrfc.ini. In this case you just pass the parameter dest=... and all parameters that are missing in the sapnwrfc.ini entry into RfcOpenConnection().
For a complete list of logon parameters to be used in connectionParams as well as in the sapnwrfc.ini file, see the sample sapnwrfc.ini file in the SDK's demo folder.
If the logon was ok, RfcOpenConnection() returns a client connection handle, which can be used in RfcInvoke(). Otherwise the return value is NULL and errorInfo contains a detailed error description. errorInfo->code will be one of:
| [in] | *connectionParams | An array of RFC_CONNECTION_PARAMETERs with the names as described above and the values as necessary in your landscape. |
| [in] | paramCount | Number of parameters in the above array. |
| [out] | *errorInfo | Returns more error details, if the connect attempt fails. |
| DECL_EXP RFC_RC SAP_API RfcPing | ( | RFC_CONNECTION_HANDLE | rfcHandle, | |
| RFC_ERROR_INFO * | errorInfo | |||
| ) |
Ping the remote communication partner through the passed connection handle.
Sends a ping to the backend in order to check, whether the connection is still alive. Can be used on both, client connections as well as server connections.
| [in] | rfcHandle | The connection to check |
| [out] | *errorInfo | More error details in case the connection is broken. |
| DECL_EXP RFC_CONNECTION_HANDLE SAP_API RfcRegisterServer | ( | RFC_CONNECTION_PARAMETER const * | connectionParams, | |
| unsigned | paramCount, | |||
| RFC_ERROR_INFO * | errorInfo | |||
| ) |
Registers a server connection at an SAP gateway.
The connectionParams may contain the following name-value pairs:
Program_id corresponds to an RFC destination in SM59 of type "T" in registration mode.
For a complete list of logon parameters to be used in connectionParams as well as in the sapnwrfc.ini file, see the sample sapnwrfc.ini file in the SDK's demo folder.
If the connection registration was ok, RfcRegisterServer() returns a server connection handle, which can be used in RfcListenAndDispatch(). Otherwise the return value is NULL and errorInfo contains information similar to the RfcOpenConnection() case.
| [in] | *connectionParams | An array of RFC_CONNECTION_PARAMETERs with the names as described above and the values as necessary in your landscape. |
| [in] | paramCount | Number of parameters in the above array. |
| [out] | *errorInfo | Returns more error details, if the connect attempt fails. |
| DECL_EXP RFC_RC SAP_API RfcResetServerContext | ( | RFC_CONNECTION_HANDLE | rfcHandle, | |
| RFC_ERROR_INFO * | errorInfo | |||
| ) |
RFC_RC SAP_API RfcResetServerContext
Resets the SAP server context ("user context / ABAP session context") associated with the given client connection, but does not close the connection.
| [in] | rfcHandle | The client connection, whose server context is to be reset. |
| [out] | *errorInfo | Error details in case resetting the server context fails. (Better close the connection in that case.) |
| DECL_EXP RFC_RC SAP_API RfcSNCKeyToName | ( | SAP_UC const * | sncLib, | |
| SAP_RAW const * | sncKey, | |||
| unsigned | keyLength, | |||
| SAP_UC * | sncName, | |||
| unsigned | nameLength, | |||
| RFC_ERROR_INFO * | errorInfo | |||
| ) |
Converts SNC key to SNC name.
| [in] | *sncLib | Optional: file name of the GSS library to be used for the conversion. If not specified, the "global" GSS library (environment variable SNC_LIB) will be used. |
| [in] | *sncKey | SNC key to be converted. |
| [in] | keyLength | Byte length of the given SNC key |
| [out] | *sncName | Pre-allocated buffer, which will receive the corresponding (null-terminated) SNC name. |
| [in] | nameLength | Size of the given sncName buffer. (The maximum length of an SNC name is 256.) |
| [out] | *errorInfo | More error details in case something goes wrong. |
| DECL_EXP RFC_RC SAP_API RfcSNCNameToKey | ( | SAP_UC const * | sncLib, | |
| SAP_UC const * | sncName, | |||
| SAP_RAW * | sncKey, | |||
| unsigned * | keyLength, | |||
| RFC_ERROR_INFO * | errorInfo | |||
| ) |
Converts SNC name to SNC key.
| [in] | *sncLib | Optional: file name of the GSS library to be used for the conversion. If not specified, the "global" GSS library (environment variable SNC_LIB) will be used. |
| [in] | *sncName | Null-terminated SNC name to be converted. |
| [out] | *sncKey | Pre-allocated buffer, which will receive the corresponding SNC key. |
| [in,out] | *keyLength | Needs to be filled with the buffer length of sncKey. The return value will be byte length of the SNC key (if buffer was large enough). Unfortunately in case of RFC_BUFFER_TOO_SMALL the required size is not returned by the GSS library. The maximum length of an SNC key is 1024. |
| [out] | *errorInfo | More error details in case something goes wrong. |
| DECL_EXP RFC_CONNECTION_HANDLE SAP_API RfcStartServer | ( | int | argc, | |
| SAP_UC ** | argv, | |||
| RFC_CONNECTION_PARAMETER const * | connectionParams, | |||
| unsigned | paramCount, | |||
| RFC_ERROR_INFO * | errorInfo | |||
| ) |
Allows a program to be used as an RFC server which is started by the backend on demand.
This API needs to be called, if the server program is to be started by the R/3 application server. (RFC destination in SM59 of type "T" in startup mode.) argc and argv are the inputs of the mainU function. The R/3 application server passes the correct command line to the program, when starting it up, so you only need to forward these two parameters to RfcStartServer(). connectionParams is optional and is only needed, if you want to add additional logon parameters to the ones coming from the command line, e.g for activating trace.
Like RfcRegisterServer(), the function returns a server connection handle that can be used in RfcListenAndDispatch(). The mechanism of this kind of RFC destination thus works as follows:
The main differences of "startup mode" compared to the "registration mode" are:
| [in] | argc | From mainU() (command line supplied by backend) |
| [in] | **argv | From mainU() (command line supplied by backend) |
| [in] | *connectionParams | May optionally contain additional logon parameters |
| [in] | paramCount | Length of the connection parameter array above |
| [out] | *errorInfo | Returns more error details, if the connect attempt fails. |
1.5.5