SapClient Bean
Properties Methods Events Configuration Settings Errors
The SapClient makes communication between a client application and a SAP R/3 (NetWeaver) server extremely easy. This component is used to make remote function calls to the SAP system, and provides a simple interface for sending and receiving parameters and tables to and from those remote functions.
Syntax
InERP.Sapclient
Remarks
The purpose of this bean is to make executing remote functions on a SAP server extremely simple.
There are just a few steps you need to make before you can begin making transactions: First set the connection credentials and connect to the SAP system (see Setting Up a Connection with a SAP System for details).
Next set the FunctionName of the remote function you wish to call, and use GetFunctionInfo to retrieve the RequestParameters, ResponseParameters, and tables that the remote function uses. Then you set the values of any RequestParameters you want to send and call CallFunction. The ResponseParameters will contain the results from the function call, and the TableIndex, RowIndex, and Columns properties can be used to access any table data received.
The following example shows how to search for all of the RFC functions available on the SAP system. First we provide
login credentials and connect.
SapClient1.SapConnection.ConnectionType = ConnectionTypes.ctNetWeaver; SapClient1.SapConnection.Client = "000"; SapClient1.SapConnection.Destination = ""; SapClient1.SapConnection.Host = "localhost"; SapClient1.SapConnection.User = "BCUSER"; SapClient1.SapConnection.Password = "minisap"; SapClient1.SapConnection.SystemNumber = 0; SapClient1.OpenConnection();Note that the credentials above are for connecting to a trial NetWeaver installation. You will need to provide your own credentials when connecting to your own SAP installation.
Since we want to retrieve a list of RFC functions, we're now going to set the FunctionName to "RFC_FUNCTION_SEARCH",
which should be available on all SAP installations.
SapClient1.FunctionName = "RFC_FUNCTION_SEARCH"; SapClient1.GetFunctionInfo();After calling GetFunctionInfo the RequestParameters will contain three entries. "FUNCNAME", "GROUPNAME", and "LANGUAGE", which are used as search criteria. There aren't any ResponseParameters used by this remote function, but there is an empty table named "FUNCTIONS" at TableIndex 0. To retrieve a list of all RFC functions, set the "FUNCNAME" parameter to "RFC*" (If we set the parameter to "*" several thousand irrelevant functions may be returned).
SapClient1.SetRequestParam("FUNCNAME", "RFC*"); SapClient1.CallFunction(); SapClient1.CloseConnection();The results of the "RFC_FUNCTION_SEARCH" remote call are now contained in the table at TableIndex 0, and may be accessed like this:
for (int row = 0; row < SapClient1.RowCount; row++) { SapClient1.RowIndex = row; for (int col = 0; col < SapClient1.Columns.Count(); col++) { SapColumn curr = (SapColumn)SapClient1.Columns.ElementAt(col); Console.WriteLine(curr.Name + " = \"" + curr.Value.Trim() + "\" (" + curr.ColumnType + ")"); } Console.WriteLine(""); }The above code will output something very similar to this:
FUNCNAME = "RFCPING" (ctCharacters) GROUPNAME = "SYST" (ctCharacters) APPL = "" (ctCharacters) HOST = "" (ctCharacters) STEXT = "RFC Ping" (ctCharacters) FUNCNAME = "RFC_ABAP_INSTALL_AND_RUN" (ctCharacters) GROUPNAME = "SUTL" (ctCharacters) APPL = "S" (ctCharacters) HOST = "" (ctCharacters) STEXT = "" (ctCharacters) FUNCNAME = "RFC_CALL_TRANSACTION_USING" (ctCharacters) GROUPNAME = "MRFC" (ctCharacters) APPL = "S" (ctCharacters) HOST = "" (ctCharacters) STEXT = "Verification Program for Execution of RFCs via CALL TRANSACTION USING" (ctCharacters) ...
Dependency Notes
If the bean is not configured to use the SOAP interface, it will use the sapnwrfc.dll, librfc32.dll, librfc32u.dll, or the Java Connector (JCo) to connect to the SAP system. Although the Java Connector is only available when programming in Java on Windows.
The NetWeaver RFC SDK (sapnwrfc.dll) offers both a 32 bit and 64 bit version. Likewise, the SAP RFC SDK offers as 32 bit and 64 bit version of both a unicode (librfc32u.dll) and non-unicode (librfc32.dll) library.
The NetWeaver RFC SDK will be used if the ConnectionType is set to ctNetWeaver (0). The following libraries from the NetWeaver RFC SDK must be available at runtime:
- sapnwrfc.dll
- icudt30.dll
- icuin30.dll
- icuuc30.dll
- libicudecnumber.dll
- libsapucum.dll
The non-unicode library will be used if the ConnectionType is set to ctClassic (1). This simply requires that the librfc32.dll be placed in a location that is accessible at runtime. (0).
The unicode library will be used if the ConnectionType is set to ctClassicUnicode (2). The following libraries from the SAP RFC SDK must be available at runtime:
- librfc32u.dll
- icudt30.dll
- icuin30.dll
- icuuc30.dll
The Java Connector (JCo) will be used if the ConnectionType is set to ctJavaConnector (4). In order to use this, you must first add the sapjco3.jar file to your project.
The 32 bit and 64 bit versions do not require any special settings within the beans. The only requirement is that your application target the same platform as the DLL.
Property List
The following is the full list of the properties of the bean with short descriptions. Click on the links for further details.
Columns | Contains a list of the columns that make up each row. |
Connected | Indicates whether or not the component is connected to the SAP system. |
FunctionName | The name of the remote function you wish to call. |
RequestParameters | Parameters sent to SAP via the CallFunction method. |
ResponseParameters | Parameters received from SAP after a call to the CallFunction method. |
RowCount | The total number of rows in the table. |
RowData | The raw binary data that makes up a row. |
RowIndex | The index of the current row. When a table is returned Name will be populated with the name of the column and Value will be populated with the data for the column that correspond to the row specified here. In the event the table contains no data, set this to -1 to retrieve information about the fields. When set to -1, Name , Length , and ColumnType will be populated with the field information for each column. |
SapAttributes | Describes the SAP R/3 system you're connected to. |
SapConnection | These properties are used to connect to the SAP system. |
SSLAcceptServerCert | Instructs the component to unconditionally accept the server certificate that matches the supplied certificate. |
SSLCert | The certificate to be used during SSL negotiation. |
SSLServerCert | The server certificate for the last established connection. |
TableCount | Total number of tables used by the remote function call. |
TableIndex | The index of the current table. |
TableName | The name of the current table. |
TableRowLength | Length of each row in the current table. |
TableType | The type of the current table. |
Timeout | Length of time in seconds the component waits for a response from the SAP system. |
TransactionId | A transaction Id used to ensure remote functions are not called multiple times. |
TransactionMode | Determines whether remote functions can be called multiple times without affecting the state of the SAP database, or if the transaction must only be executed once. |
Method List
The following is the full list of the methods of the bean with short descriptions. Click on the links for further details.
abortConnection | Used to terminate a connection to the SAP system. |
callFunction | Calls a remote function located on the SAP system. |
closeConnection | Closes a connection to the SAP system. |
config | Sets or retrieves a configuration setting . |
createId | Creates a transaction Id which is used to ensure that a transaction is executed only once. |
doEvents | Processes events from the internal message queue. |
getAttributes | Retrieves attributes about the SAP system you're currently connected to. |
getFunctionInfo | Retrieves the parameters and tables used by a remote function. |
getTableInfo | Retrieves the current table's structure definition used by the remote function. |
interrupt | Interrupt the current method. |
openConnection | Opens a connection to the SAP system. |
reset | Resets the component to its initial state. |
setRequestParam | Shortcut to easily set a request parameter's value. |
Event List
The following is the full list of the events fired by the bean with short descriptions. Click on the links for further details.
Error | Information about errors during data delivery. |
SSLServerAuthentication | Fired after the server presents its certificate to the client. |
SSLStatus | Shows the progress of the secure connection. |
Status | Detailed status messages for debugging purposes. |
TableRow | This event fires for each row received in a table. |
Configuration Settings
The following is a list of configuration settings for the bean with short descriptions. Click on the links for further details.
LogPerformanceData | Logs the performance information when a function is called. |
LogRawData | Logs the raw data being sent and received. |
ParseTables | Indicates whether to parse tables into rows and columns. |
ResponseParamText[i] | The value of the PARAMTEXT for the specified reponse parameter. |
RequestParamText[i] | The value of the PARAMTEXT for the specified request parameter. |
Group | The logon group. |
MessageServer | Service name of load balancer service. |
SncLibPath | The external security product's library. |
SncMode | The SNC activation indicator. |
SncName | The Initiator's SNC name. |
SncPartnerName | The communication partner's SNC name. |
SncQop | The quality of protection level. |
SystemID | The system ID of the SAP system. |
LocalHost | The IP address of the local interface. |
ProxyAutoDetect | Whether or not to automatically detect and use proxy system settings, if available. |
ProxyAuthorization | The authorization string to be sent to the proxy server. |
ProxyAuthScheme | The authorization scheme to be used for the proxy. |
ProxyPassword | A password if authentication is to be used for the proxy. |
ProxyPort | Port for the proxy server (default 80). |
ProxyServer | Name or IP address of a proxy server (optional). |
ProxyUser | A user name if authentication is to be used for the proxy. |
FirewallAutoDetect | Tells the component whether or not to automatically detect and use firewall system settings, if available. |
FirewallHost | Name or IP address of firewall (optional). |
FirewallPassword | Password to be used if authentication is to be used when connecting through the firewall. |
FirewallPort | The TCP port for the FirewallHost;. |
FirewallUser | A user name if authentication is to be used connecting through a firewall. |
FirewallType | Determines the type of firewall to connect through. |
CodePage | The system code page used for Unicode to Multibyte translations. |