Better use the call RfcOpenEx.

The following function opens an RFC connection. All parameters are passed as single fields:

RFC_HANDLE  SAP_API   RfcOpenExt(char* destination,
  RFC_MODE  mode,
  char*  hostname,
  int sysnr,
  char*  gateway_host,
  char*  gateway_service,
  char*  client,
  char*  user,
  char*  password,
  char*  language,
  int trace);

RFC opens the connection using the given options, and returns a handle for the connection established.

The input parameters to this function carry the same information as that sent to RfcOpen, but not packed in structures. Instead, individual fields are sent. At any given time, some of these fields are empty, depending on the value of mode:

·        RFC_MODE_R3ONLY

The fields hostname, sysnr, gateway_host, and gateway_service have valid information in them.

·        RFC_MODE_CPIC

Only the fields gateway_host, and gateway_service have valid information in them.

This function is defined in SAPRFC.H.

Return Values:

·        Returns a handle to the RFC connection (RFC_HANDLE) or

·        Returns RFC_HANDLE_NULL

Function Parameters:

·        destination

name of destination

·        mode

connection mode (RFC_MODE)

·        hostname

hostname of target system

·        sysnr

system number (0-99)

·        gateway_host

gateway hostname or NULL

·        gateway_service

gateway service or NULL

·        client

signon data: client

·        user

signon data: user

·        password

signon data: password

·        language

signon data: language

·        trace

If the field trace contains a non-zero value, the outgoing and incoming RFC data are written to a trace file dev_rfc in the current directory. A trace file is also written on the target system. On SAP systems, you can view this file using the utility program RSRFCTRC.

See also RfcOpen, RfcOpenExtV3 and RFC_OPTIONS for further description of these fields. In general, the input parameters allow the system to avoid accessing the sideinfo table. If you send the relevant parameters as null fields (hostname for SAP system, the gateway fields for R/2), the sideinfo table will be accessed to get the needed information.

If you call RfcOpenExt with an invalid password, the function does not immediately fail. However, the subsequent call to RfcCallExt (or RfcCallReceiveExt) will fail.