SAP Connector 5.9 Reference | MuleSoft Documentation
# SAP Connector 5.9 Reference
Anypoint Connector for SAP (SAP Connector) enables the integration of data to and from external systems based on SAP NetWeaver.
Starting with version 5.0, SAP Connector also supports connecting to an on-premises instance of SAP S/4HANA.   
---  
## Limitations
  * For SAP Connector versions 5.4.0 and earlier, multiple servers deployed on the same Mule runtime engine with the same PROGRAM_ID, GATEWAY_SERVICE, and GATEWAY_HOST cannot be created by the JCo library. If you attempt to create two servers with the same PROGRAM_ID, GATEWAY_SERVICE, and GATEWAY_HOST, only one server is created. To work around this, you can use two different Mule runtime engines or use the same PROGRAM_ID with two different GATEWAY_HOSTs.
  * SAP Connector does not support Bitronix Transaction Manager.
  * The **Document Listener** and **Function Listener** sources do not support Mule transactions. Although the **Transactional action** and **Transaction type** parameters (on the **Advanced tab**) are available for both sources, the transactional feature is not implemented.
  * The reconnection strategy on SAP Listeners (**Document Listener** and **Function Listener**) relies exclusively on the JCo library, which means that the Mule reconnection mechanism has no impact on reconnections.
  * The JCO Server that runs in the background manages the reconnection when there is a connection issue. The JCo RFC provider recognizes a communication error between the Java server and the ABAP gateway and attempts to reconnect. If the first reconnection fails, the next reconnection attempt occurs after waiting for one second. If the reconnection fails again, the reconnection wait time doubles from one second to two seconds, until eventually it reaches the default maximum waiting period of 3600 seconds, or one hour. Set the maximum reconnection timeout using the `-Djco.server.max_startup_delay=<reconnect delay in seconds>` JMV parameter.
  * The `XSTRING` data format in SAP is a binary blop format. To submit values in an `XSTRING` field, you must use the toHex function to base-32 encode the binary within the XML submitted to the RFC step.


## Configuration
Default Configuration for SAP Connector.
Name | Type | Description | Default Value | Required  
---|---|---|---|---  
Name for this configuration. Connectors reference the configuration with this name.  
**Connection** | 
  *   * Simple Connection Provider

|  Connection types for this configuration.  
**Expiration Policy** |  Expiration Policy |  Configures the minimum amount of time that a dynamic configuration instance can remain idle before Mule considers it eligible for expiration.  
Canonical name of the encoding. Refer to Oracle’s supported encodings.  
**Default Idocument Version** |  Default IDoc version.  
**Disable Jco Internal Cache** |  Flag that indicates whether to use the JCo internal cache. Set this flag to `true` to disable the SAP JCo internal cache. By default, JCo stores the metadata after the first call and populates that template in the following calls. This flag applies to both functions and sources.  
**Evaluate Response Flag** |  Flag that indicates if an error response throws an exception or enables the user to handle it as another result. This flag is an exception or logging mechanism used to specify whether a message throws an exception (E) or is treated as a result with a warning (W). If you set the flag to `true` and an exception (E) message is returned, an exception is thrown with that message. If you set the flag to `true` and a warning (W) message is returned, a warning message is logged.  
**Log Trace Flag** |  Flag that indicates whether to log the trace on the Mule server. Set this flag to `true` to log a trace.  
**Use SAP Format** |  Determines whether to support the Mule 3 format for returning SAP values. Used in the `JCoToBusinessObjectParser` class when parsing a `JCoField`. Use the SAP default format only when working with BAPIFunctions over sRFC.
  * `true` Values are returned as strings with the original SAP format.
  * `false` Original values are converted to the corresponding Java objects, serialized, and returned.

  
**Use SAP Format On Function Listener** |  Determines whether to support the Mule 3 format for returning SAP values. Used to parse a `JCoField`. Use the SAP default format only when working with the BAPI function listener.
  * `true` Values are returned as strings with the original SAP format.
  * `false` Original values are converted to the corresponding Java objects, serialized, and returned.

  
### Certificate Connection Type
Relies on an X509 certificate to authenticate the user.
Name | Type | Description | Default Value | Required  
---|---|---|---|---  
**SAP system number** |  Two-digit system number (sysnr) of the SAP system.  
**SAP client ID** |  Three-digit client number. Leading zeros are preserved if they appear in the number.  
**Destination Name** |  Identifier of the destination generated by this connector. If none is set, a random value is created.  
**Login language** |  Language code used by the connector. The language determines the code page used for communicating between the SAP adapter and the application server.  
**Extended Properties** |  Used to pass in all the database server-specific connection parameters.  
**X.509 Certificate** |  Path to the X.509 certificate. This is required when the connector is working as a client.  
**Application server host** |  Host of the SAP application server.  
**Message server configuration** |  Message Server |  Configuration for message server usage.  
**Enable RFC tracing on server** |  Enables or disables RFC trace on the server.  
**Enable CPIC tracing on server** |  Enumeration, one of:
  * INHERIT
  * NO_TRACING
  * LEVEL_1
  * LEVEL_2
  * LEVEL_3

|  Enables or disables CPIC trace on the server.  
**Reconnection** |  |  Configures a reconnection strategy to use when a connector operation fails to connect to an external server.  
### Kerberos Connection Type
Implements the Kerberos protocol to authenticate and authorize the user.
Name | Type | Description | Default Value | Required  
---|---|---|---|---  
**SAP system number** |  Two-digit system number (sysnr) of the SAP system.  
**SAP client ID** |  Three-digit client number. Leading zeros are preserved if they appear in the number.  
**Destination Name** |  Identifier of the destination generated by this connector. If none is set, a random value is created.  
**Login language** |  Language code used by the connector. The language determines the code page used for communicating between the SAP adapter and the application server.  
**Extended Properties** |  Used to pass in all the database server-specific connection parameters.  
**Application server host** |  Host of the SAP application server.  
**Message server configuration** |  Message Server |  Configuration for message server usage.  
**Enable RFC tracing on server** |  Enables or disables RFC trace on the server.  
**Enable CPIC tracing on server** |  Enumeration, one of:
  * INHERIT
  * NO_TRACING
  * LEVEL_1
  * LEVEL_2
  * LEVEL_3
|  Enables or disables CPIC trace on the server.  
**Reconnection** |  |  Configures a reconnection strategy to use when a connector operation fails to connect to an external server.  
### Kerberos Connection Type
Implements the Kerberos protocol to authenticate and authorize the user.
Name | Type | Description | Default Value | Required  
---|---|---|---|---  
**SAP system number** |  Two-digit system number (sysnr) of the SAP system.  
**SAP client ID** |  Three-digit client number. Leading zeros are preserved if they appear in the number.  
**Destination Name** |  Identifier of the destination generated by this connector. If none is set, a random value is created.  
**Login language** |  Language code used by the connector. The language determines the code page used for communicating between the SAP adapter and the application server.  
**Extended Properties** |  Used to pass in all the database server-specific connection parameters.  
**Application server host** |  Host of the SAP application server.  
**Message server configuration** |  Message Server |  Configuration for message server usage.  
**Enable RFC tracing on server** |  Enables or disables RFC trace on the server.  
**Enable CPIC tracing on server** |  Enumeration, one of:
  * INHERIT
  * NO_TRACING
  * LEVEL_1
  * LEVEL_2
  * LEVEL_3

|  Enables or disables CPIC trace on the server.  
**Kerberos Config File Path** |  Path to the krb5.conf file.  
**Keytab File Path** |  Path to the keytab file.  
**GSS Library Path** |  Path to the gss library.  
Principal that the connector uses to log in to SAP.  
**Client SNC Partner Name** |  The `jco.client.snc_partnername` property.  
**Client SNC My Name** |  The `jco.client.snc_myname` property.  
**Server SNC Partner Name** |  The `jco.server.snc_partnername` property.  
**Server SNC My Name** |  The `jco.server.snc_myname` property.  
**Reconnection** |  |  Configures a reconnection strategy to use when a connector operation fails to connect to an external server.  
### Simple Connection Provider Connection Type
Connects using a username and password.
Name | Type | Description | Default Value | Required  
---|---|---|---|---  
**SAP system number** |  Two-digit system number (sysnr) of the SAP system.  
**SAP client ID** |  Three-digit client number. Leading zeros are preserved if they appear in the number.  
**Destination Name** |  Identifier of the destination generated by this connector. If none is set, a random value is created.  
**Login language** |  Language code used by the connector. The language determines the code page used for communicating between the SAP adapter and the application server.  
**Extended Properties** |  Used to pass in all the database server-specific connection parameters.  
Username the connector uses to log in to SAP.  
Password associated with the login username.  
**Application server host** |  Host of the SAP application server.  
**Message server configuration** |  Message Server |  Configuration for message server usage.  
**Enable RFC tracing on server** |  Enables or disables RFC trace on the server.  
**Enable CPIC tracing on server** |  Enumeration, one of:
  * INHERIT
  * NO_TRACING
  * LEVEL_1
  * LEVEL_2
  * LEVEL_3

|  Enables or disables CPIC trace on the server.  
**Reconnection** |  |  When the application is deployed, a connectivity test is performed on all connectors. If set to `true`, deployment fails if the test doesn’t pass after exhausting the associated reconnection strategy.  
## Sources
  * Document Listener
  * Function Listener


### Document Listener
`<sap:document-listener>`
Listens for incoming IDocs.
Name | Type | Description | Default Value | Required  
---|---|---|---|---  
**Configuration** |  Name of the configuration to use.  
**Gateway Host** |  Name of the host running the gateway server. This is the name of the host running the gateway handler. SAP Gateway is a development framework used to connect non-SAP applications to SAP applications. You can configure the SAP Gateway host to be the trusted system using an RFC destination.  
**Gateway Service** |  Service port for the gateway service of the SAP system. To use the name instead of the port, you must map the gateway service name to the gateway service port.  
**Program ID** |  SAP system program ID that is registered on the gateway. Must be unique for the given gateway.  
**Connection Count** |  Number of connections to register on the gateway. If there is more than one connection, handler requests are processed in parallel. For example, if two connections are set, this creates two handler workers or threads that handle requests in parallel, almost like having two sources start together.  
**Idoc Type Filter Regex** |  Expression to filter all incoming IDocs by type.  
**Idoc Type Extension Filter Regex** |  Expression to filter all incoming IDocs by type extension.  
**Message server host** |  Host of the message server.  
**Message server port** |  Message server name or port number.  
System ID of the system the message server belongs to.  
Logon group defined in ABAP that identifies a set of application servers.  
**Update interval** |  How often the message server fetches the list of application servers.  
**IDoc Render Options** |  IDoc Render Parameter Group |  IDoc rendering options.  
Canonical name of the encoding. Refer to Oracle’s supported encodings.  
**Transactional Action** |  Enumeration, one of:
  * ALWAYS_BEGIN

|  Type of beginning action that sources take regarding transactions.  
**Transaction Type** |  Enumeration, one of: |  Type of transaction to create. Availability depends on Mule version.  
**Primary Node Only** |  Determines whether to execute this source on only the primary node when running Mule instances in a cluster.  
**Streaming Strategy** | 
  * Repeatable In Memory Stream
  * Repeatable File Store Stream
  * non-repeatable-stream

|  Configures how Mule processes streams. Repeatable streams are the default behavior.  
**Redelivery Policy** |  Redelivery Policy |  Defines a policy for processing the redelivery of the same message.  
**Reconnection Strategy** | 
  *   * Reconnect Forever

|  Retry strategy in case of connectivity errors.  
#### Output
Attributes Type |  SAP Attributes  
---|---  
#### Associated Configurations
  * Configuration


### Function Listener
`<sap:function-listener>`
Listens for incoming BAPI functions.
Name | Type | Description | Default Value | Required  
---|---|---|---|---  
**Configuration** |  Name of the configuration to use.  
**Gateway Host** |  Name of the host running the gateway server. This is the name of the host running the gateway handler. SAP Gateway is a development framework used to connect non-SAP applications to SAP applications. You can configure the SAP Gateway host to be the trusted system using an RFC destination.  
**Gateway Service** |  Service port for the gateway service of the SAP system. To use the name instead of the port, you must map the gateway service name to the gateway service port.  
**Program ID** |  SAP system program ID that is registered on the gateway. Must be unique for the given gateway.  
**Connection Count** |  Number of connections to register on the gateway. If there is more than one connection, handler requests are processed in parallel. For example, if two connections are set, this creates two handler workers or threads that handle requests in parallel, almost like having two sources start together.  
**Targeted Function** |  Name of the function to receive. Filters the incoming BAPI functions by their names.  
**Message server host** |  Host of the message server.  
**Message server port** |  Message server name or port number.  
System ID of the system the message server belongs to.  
Logon group defined in ABAP that identifies a set of application servers.  
**Update interval** |  How often the message server fetches the list of application servers.  
Canonical name of the encoding. Refer to Oracle’s supported encodings.  
**Transactional Action** |  Enumeration, one of:
  * ALWAYS_BEGIN

|  Type of beginning action that sources take regarding transactions.  
**Transaction Type** |  Enumeration, one of: |  Type of transaction to create. Availability depends on Mule version.  
**Primary Node Only** |  Determines whether to execute this source on only the primary node when running Mule instances in a cluster.  
**Streaming Strategy** | 
  * Repeatable In Memory Stream
  * Repeatable File Store Stream
  * non-repeatable-stream

|  Configures how Mule processes streams. Repeatable streams are the default behavior.  
**Redelivery Policy** |  Redelivery Policy |  Defines a policy for processing the redelivery of the same message.  
**Reconnection Strategy** | 
  *   * Reconnect Forever
|  Type of beginning action that sources take regarding transactions.  
**Transaction Type** |  Enumeration, one of: |  Type of transaction to create. Availability depends on Mule version.  
**Primary Node Only** |  Determines whether to execute this source on only the primary node when running Mule instances in a cluster.  
**Streaming Strategy** | 
  * Repeatable In Memory Stream
  * Repeatable File Store Stream
  * non-repeatable-stream

|  Configures how Mule processes streams. Repeatable streams are the default behavior.  
**Redelivery Policy** |  Redelivery Policy |  Defines a policy for processing the redelivery of the same message.  
**Reconnection Strategy** | 
  *   * Reconnect Forever

|  Retry strategy in case of connectivity errors.  
Source response. |  SAP 5.6 and later supports updating a specific row in a table when a response is sent back to SAP after **Function Listener** is triggered. To update a specific row, add the `INDEX_ROW_UPDATE` parameter to the payload with the index of the row you want to update.   
---  
#### Output
Attributes Type |  SAP Attributes  
---|---  
#### Associated Configurations
  * Configuration


## Operations
  * Asynchronous Remote Function Call (Deprecated)
  * Asynchronous Remote Function Call
  * Confirm Transaction
  *   *   *   * Start SAP Transaction
  * Synchronous Remote Function Call (Deprecated)
  * Synchronous Remote Function Call


### Asynchronous Remote Function Call (Deprecated)
`<sap:async-rfc>`
This operation is deprecated. Use the **Asynchronous Remote Function Call** operation instead.
This operation works only with JCo 3.0.x.
Executes a BAPIFunction over a queued Remote Function Call (qRFC).
A qRFC is an extension of a transactional RFC (tRFC) that ensures that individual steps are processed in sequence. This guarantees that multiple logical unit of work (LUW) transactions are processed in the order specified by the application.
tRFC can be serialized using inbound and outbound queues, hence the name queued RFC. qRFC is best used as an extension of tRFC to define a processing sequence. Use qRFC to guarantee that several transactions are processed in a predefined order.
Name | Type | Description | Default Value | Required  
---|---|---|---|---  
**Configuration** |  Name of the configuration to use.  
**Function Name** |  Name of the function to execute.  
BAPIFunction to execute.  
**Transaction Id** |  ID that identifies an RFC so that the RFC runs only once.  
**Queue Name** |  Name of the queue on which the RFC executes. This applies for qRFC since each tRFC call that is processed is given a queue name by the application. A queue name and version are required for each qRFC transaction.  
Canonical name of the encoding. Refer to Oracle’s supported encodings.  
**Transactional Action** |  Enumeration, one of:
  * ALWAYS_JOIN
  * JOIN_IF_POSSIBLE
  * NOT_SUPPORTED

|  Type of joining action that operations take regarding transactions. |  `JOIN_IF_POSSIBLE`  
**Reconnection Strategy** | 
  *   * Reconnect Forever

|  Retry strategy in case of connectivity errors.  
#### Associated Configurations
  * Configuration


#### Throws
  * SAP:CONNECTIVITY
  * SAP:INVALID_CACHE
  * SAP:INVALID_INPUT
  * SAP:METADATA_UNAVAILABLE
  * SAP:NOT_FOUND
  * SAP:NOT_SUPPORTED
  * SAP:PARSING
  * SAP:RETRY_EXHAUSTED
  * SAP:SYSTEM_BUSY
  * SAP:TIMEOUT


### Asynchronous Remote Function Call
`<sap:asynchronous-remote-function-call>`
This operation works only with JCo 3.1.x and expects valid XML content in the response.
Executes a BAPIFunction over a queued Remote Function Call (qRFC) and throws an `SAP:INVALID_INPUT` error when the provided payload is invalid according to JCo library checks.
A qRFC is an extension of a transactional RFC (tRFC) that ensures that individual steps are processed in sequence. This guarantees that multiple logical unit of work (LUW) transactions are processed in the order specified by the application.
tRFC can be serialized using inbound and outbound queues, hence the name queued RFC. qRFC is best used as an extension of tRFC to define a processing sequence. Use qRFC to guarantee that several transactions are processed in a predefined order.
Name | Type | Description | Default Value | Required  
---|---|---|---|---  
**Configuration** |  Name of the configuration to use.  
**Function Name** |  Name of the function to execute.  
BAPIFunction to execute.  
**Transaction Id** |  ID that identifies an RFC so that the RFC runs only once.  
**Queue Name** |  Name of the queue on which the RFC executes. This applies for qRFC since each tRFC call that is processed is given a queue name by the application. A queue name and version are required for each qRFC transaction.  
Canonical name of the encoding. Refer to Oracle’s supported encodings.  
**Transactional Action** |  Enumeration, one of:
  * ALWAYS_JOIN
  * JOIN_IF_POSSIBLE
  * NOT_SUPPORTED

|  Type of joining action that operations take regarding transactions. |  `JOIN_IF_POSSIBLE`  
**Reconnection Strategy** | 
  *   * Reconnect Forever

|  Retry strategy in case of connectivity errors.  
#### Associated Configurations
  * Configuration


#### Throws
  * SAP:CONNECTIVITY
  * SAP:INVALID_CACHE
  * SAP:INVALID_INPUT
  * SAP:METADATA_UNAVAILABLE
  * SAP:NOT_FOUND
  * SAP:NOT_SUPPORTED
  * SAP:PARSING
  * SAP:RETRY_EXHAUSTED
  * SAP:SYSTEM_BUSY
  * SAP:TIMEOUT


### Confirm Transaction
`<sap:confirm-transaction-id>`
Confirms to the server that a transaction is successful.
Name | Type | Description | Default Value | Required  
---|---|---|---|---  
**Configuration** |  Name of the configuration to use.  
**Transaction ID (TID)** |  ID of the transaction to confirm.  
**Transactional Action** |  Enumeration, one of:
  * ALWAYS_JOIN
  * JOIN_IF_POSSIBLE
  * NOT_SUPPORTED

|  Type of joining action that operations take regarding transactions. |  `JOIN_IF_POSSIBLE`  
**Reconnection Strategy** | 
  *   * Reconnect Forever

|  Retry strategy in case of connectivity errors.  
#### Associated Configurations
  * Configuration


#### Throws
  * SAP:CONNECTIVITY
  * SAP:RETRY_EXHAUSTED


### Get Function
`<sap:get-function>`
Retrieves a BAPIFunction based on its name.
Name | Type | Description | Default Value | Required  
---|---|---|---|---  
**Configuration** |  Name of the configuration to use.  
**Function Name** |  Name of the function to retrieve.  
Canonical name of the encoding. Refer to Oracle’s supported encodings.  
**Transactional Action** |  Enumeration, one of:
  * ALWAYS_JOIN
  * JOIN_IF_POSSIBLE
  * NOT_SUPPORTED

|  Type of joining action that operations take regarding transactions. |  `JOIN_IF_POSSIBLE`  
**Streaming Strategy** | 
  * Repeatable In Memory Stream
  * Repeatable File Store Stream
  * non-repeatable-stream

|  Configures how Mule processes streams. Repeatable streams are the default behavior.  
**Target Variable** |  Name of the variable that stores the operation’s output.  
**Target Value** |  Expression that evaluates the operation’s output. The outcome of the expression is stored in the **Target Variable** field.  
**Reconnection Strategy** | 
  *   * Reconnect Forever

|  Retry strategy in case of connectivity errors.  
#### Output
#### Associated Configurations
  * Configuration


#### Throws
  * SAP:CONNECTIVITY
  * SAP:INVALID_CACHE
  * SAP:INVALID_INPUT
  * SAP:METADATA_UNAVAILABLE
  * SAP:NOT_FOUND
  * SAP:NOT_SUPPORTED
  * SAP:PARSING
  * SAP:RETRY_EXHAUSTED
  * SAP:SYSTEM_BUSY
  * SAP:TIMEOUT


### Retrieve IDoc
`<sap:retrieve-idoc>`
Retrieves an IDoc structure based on its key.
Name | Type | Description | Default Value | Required  
---|---|---|---|---  
**Configuration** |  Name of the configuration to use.  
Key that contains the required information to retrieve the IDoc.  
Canonical name of the encoding. Refer to Oracle’s supported encodings.  
**Transactional Action** |  Enumeration, one of:
  * ALWAYS_JOIN
  * JOIN_IF_POSSIBLE
  * NOT_SUPPORTED

|  Type of joining action that operations take regarding transactions. |  `JOIN_IF_POSSIBLE`  
**Streaming Strategy** | 
  * Repeatable In Memory Stream
  * Repeatable File Store Stream
  * non-repeatable-stream

|  Configures how Mule processes streams. Repeatable streams are the default behavior.  
**Target Variable** |  Name of the variable that stores the operation’s output.  
**Target Value** |  Expression that evaluates the operation’s output. The outcome of the expression is stored in the **Target Variable** field.  
**Reconnection Strategy** | 
  *   * Reconnect Forever
### Retrieve IDoc
`<sap:retrieve-idoc>`
Retrieves an IDoc structure based on its key.
Name | Type | Description | Default Value | Required  
---|---|---|---|---  
**Configuration** |  Name of the configuration to use.  
Key that contains the required information to retrieve the IDoc.  
Canonical name of the encoding. Refer to Oracle’s supported encodings.  
**Transactional Action** |  Enumeration, one of:
  * ALWAYS_JOIN
  * JOIN_IF_POSSIBLE
  * NOT_SUPPORTED

|  Type of joining action that operations take regarding transactions. |  `JOIN_IF_POSSIBLE`  
**Streaming Strategy** | 
  * Repeatable In Memory Stream
  * Repeatable File Store Stream
  * non-repeatable-stream

|  Configures how Mule processes streams. Repeatable streams are the default behavior.  
**Target Variable** |  Name of the variable that stores the operation’s output.  
**Target Value** |  Expression that evaluates the operation’s output. The outcome of the expression is stored in the **Target Variable** field.  
**Reconnection Strategy** | 
  *   * Reconnect Forever

|  Retry strategy in case of connectivity errors.  
#### Output
#### Associated Configurations
  * Configuration


#### Throws
  * SAP:CONNECTIVITY
  * SAP:INVALID_CACHE
  * SAP:INVALID_INPUT
  * SAP:METADATA_UNAVAILABLE
  * SAP:NOT_FOUND
  * SAP:NOT_SUPPORTED
  * SAP:PARSING
  * SAP:RETRY_EXHAUSTED
  * SAP:SYSTEM_BUSY
  * SAP:TIMEOUT


### Send IDoc
`<sap:send>`
Sends an IDoc to SAP over an RFC. An RFC can be one of two types for IDocs:
  * Transactional (tRFC)
A special form of asynchronous Remote Function Call (aRFC). tRFC ensures transaction-like handling of processing steps that were originally handled autonomously. tRFC is an asynchronous communication method that executes the called function module in the RFC server only once, even if the data is sent multiple times due to a network issue. The remote system does not need to be available at the time the RFC client program is executing a tRFC. The tRFC component stores the called RFC function, along with the corresponding data, in the SAP database under a unique transaction ID (TID). tRFC is similar to aRFC since it does not wait at the target system (similar to a registered post). If the system is not available, the data is written into aRFC tables with a transaction ID (SM58) that is chosen by the scheduler RSARFCSE and runs every 60 seconds. tRFC is best used as an extension of asynchronous RFC secure communication between systems.
  * Queued (qRFC)
An extension of tRFC. qRFC ensures that individual steps are processed in sequence. Use qRFC to guarantee that multiple LUWs (Logical Unit of Work transactions) are processed in the order specified by the application. tRFC can be serialized using inbound and outbound queues, hence the name queued RFC (qRFC). qRFC is best used as an extension of tRFC to define a processing sequence. Implement qRFC if you want to guarantee that several transactions are processed in a predefined order.


Both tRFC and qRFC have a TID handler.
Name | Type | Description | Default Value | Required  
---|---|---|---|---  
**Configuration** |  Name of the configuration to use.  
Name of the IDoc to execute.  
IDoc to execute.  
Version on the IDoc.  
**Transaction Id** |  ID that identifies an RFC so that the RFC runs only once.  
**Queue Name** |  Name of the queue on which the RFC executes. This applies for qRFC since each tRFC call that is processed is given a queue name by the application. A queue name and version are required for each qRFC transaction.  
**IDoc Parsing Options** |  IDoc Parse Parameter Group |  IDoc parsing options.  
Canonical name of the encoding. Refer to Oracle’s supported encodings.  
**Transactional Action** |  Enumeration, one of:
  * ALWAYS_JOIN
  * JOIN_IF_POSSIBLE
  * NOT_SUPPORTED

|  Type of joining action that operations take regarding transactions. |  `JOIN_IF_POSSIBLE`  
**Reconnection Strategy** | 
  *   * Reconnect Forever

|  Retry strategy in case of connectivity errors.  
#### Associated Configurations
  * Configuration


#### Throws
  * SAP:CONNECTIVITY
  * SAP:INVALID_CACHE
  * SAP:INVALID_INPUT
  * SAP:METADATA_UNAVAILABLE
  * SAP:NOT_FOUND
  * SAP:NOT_SUPPORTED
  * SAP:PARSING
  * SAP:RETRY_EXHAUSTED
  * SAP:SYSTEM_BUSY
  * SAP:TIMEOUT


### Start SAP Transaction
`<sap:create-transaction-id>`
Creates a transaction ID to use as part of future calls.
Name | Type | Description | Default Value | Required  
---|---|---|---|---  
**Configuration** |  Name of the configuration to use.  
**Transactional Action** |  Enumeration, one of:
  * ALWAYS_JOIN
  * JOIN_IF_POSSIBLE
  * NOT_SUPPORTED

|  Type of joining action that operations take regarding transactions. |  `JOIN_IF_POSSIBLE`  
**Target Variable** |  Name of the variable that stores the operation’s output.  
**Target Value** |  Expression that evaluates the operation’s output. The outcome of the expression is stored in the **Target Variable** field.  
**Reconnection Strategy** | 
  *   * Reconnect Forever

|  Retry strategy in case of connectivity errors.  
#### Output
#### Associated Configurations
  * Configuration


#### Throws
  * SAP:CONNECTIVITY
  * SAP:INVALID_CACHE
  * SAP:INVALID_INPUT
  * SAP:METADATA_UNAVAILABLE
  * SAP:NOT_FOUND
  * SAP:NOT_SUPPORTED
  * SAP:PARSING
  * SAP:RETRY_EXHAUSTED
  * SAP:SYSTEM_BUSY
  * SAP:TIMEOUT


### Synchronous Remote Function Call (Deprecated)
`<sap:sync-rfc>`
This operation is deprecated. Use the **Synchronous Remote Function Call** operation instead.
This operation works only with JCo 3.0.x.
Executes a BAPIFunction over a synchronous Remote Function Call (sRFC). sRFC requires both the systems (client and server) to be available at the time of communication or data transfer. sRFC is the most common type and is used when a result is required immediately after the execution of sRFC. sRFC is a means of communication between systems where acknowledgments are required.
The resources of the source system wait at the target system and ensure that they deliver the message or data with ACKD. The data is consistent and reliable for communication. If the target system is not available, the source system resources wait until the target system is available. This can lead to the processes of the source system going into Sleep/RFC/CPIC mode at the target systems, which blocks these resources. Use sRFC for communication between systems, and communication between an SAP web application server and an SAP GUI.
Name | Type | Description | Default Value | Required  
---|---|---|---|---  
**Configuration** |  Name of the configuration to use.  
**Function Name** |  Name of the function to execute.  
BAPIFunction to execute.  
Canonical name of the encoding. Refer to Oracle’s supported encodings.  
**Transactional Action** |  Enumeration, one of:
  * ALWAYS_JOIN
  * JOIN_IF_POSSIBLE
  * NOT_SUPPORTED

|  Type of joining action that operations take regarding transactions. |  `JOIN_IF_POSSIBLE`  
**Streaming Strategy** | 
  * Repeatable In Memory Stream
  * Repeatable File Store Stream
  * non-repeatable-stream

|  Configures how Mule processes streams. Repeatable streams are the default behavior.  
**Target Variable** |  Name of the variable that stores the operation’s output.  
**Target Value** |  Expression that evaluates the operation’s output. The outcome of the expression is stored in the **Target Variable** field.  
**Reconnection Strategy** | 
  *   * Reconnect Forever

|  Retry strategy in case of connectivity errors.  
#### Output
#### Associated Configurations
  * Configuration


#### Throws
  * SAP:CONNECTIVITY
  * SAP:INVALID_CACHE
  * SAP:INVALID_INPUT
  * SAP:METADATA_UNAVAILABLE
  * SAP:NOT_FOUND
  * SAP:NOT_SUPPORTED
  * SAP:PARSING
  * SAP:RETRY_EXHAUSTED
  * SAP:SYSTEM_BUSY
  * SAP:TIMEOUT
|  Type of joining action that operations take regarding transactions. |  `JOIN_IF_POSSIBLE`  
**Streaming Strategy** | 
  * Repeatable In Memory Stream
  * Repeatable File Store Stream
  * non-repeatable-stream

|  Configures how Mule processes streams. Repeatable streams are the default behavior.  
**Target Variable** |  Name of the variable that stores the operation’s output.  
**Target Value** |  Expression that evaluates the operation’s output. The outcome of the expression is stored in the **Target Variable** field.  
**Reconnection Strategy** | 
  *   * Reconnect Forever

|  Retry strategy in case of connectivity errors.  
#### Output
#### Associated Configurations
  * Configuration


#### Throws
  * SAP:CONNECTIVITY
  * SAP:INVALID_CACHE
  * SAP:INVALID_INPUT
  * SAP:METADATA_UNAVAILABLE
  * SAP:NOT_FOUND
  * SAP:NOT_SUPPORTED
  * SAP:PARSING
  * SAP:RETRY_EXHAUSTED
  * SAP:SYSTEM_BUSY
  * SAP:TIMEOUT


### Synchronous Remote Function Call
`<sap:synchronous-remote-function-call>`
This operation works only with JCo 3.1.x and expects valid XML content in the response.
If the function being called must impact changes in SAP, you must add a `try` block because you need an open transaction.
Executes a BAPIFunction over a synchronous Remote Function Call (sRFC) and throws an `SAP:INVALID_INPUT` error when the provided payload is invalid according to JCo library checks. sRFC requires both the systems (client and server) to be available at the time of communication or data transfer. sRFC is the most common type and is used when a result is required immediately after the execution of sRFC. sRFC is a means of communication between systems where acknowledgments are required.
The resources of the source system wait at the target system and ensure that they deliver the message or data with ACKD. The data is consistent and reliable for communication. If the target system is not available, the source system resources wait until the target system is available. This can lead to the processes of the source system going into Sleep/RFC/CPIC mode at the target systems, which blocks these resources. Use sRFC for communication between systems, and communication between an SAP web application server and an SAP GUI.
Name | Type | Description | Default Value | Required  
---|---|---|---|---  
**Configuration** |  Name of the configuration to use.  
**Function Name** |  Name of the function to execute.  
BAPIFunction to execute.  
Canonical name of the encoding. Refer to Oracle’s supported encodings.  
**Transactional Action** |  Enumeration, one of:
  * ALWAYS_JOIN
  * JOIN_IF_POSSIBLE
  * NOT_SUPPORTED

|  Type of joining action that operations take regarding transactions. |  `JOIN_IF_POSSIBLE`  
**Streaming Strategy** | 
  * Repeatable In Memory Stream
  * Repeatable File Store Stream
  * non-repeatable-stream

|  Configures how Mule processes streams. Repeatable streams are the default behavior.  
**Target Variable** |  Name of the variable that stores the operation’s output.  
**Target Value** |  Expression that evaluates the operation’s output. The outcome of the expression is stored in the **Target Variable** field.  
**Reconnection Strategy** | 
  *   * Reconnect Forever

|  Retry strategy in case of connectivity errors.  
#### Output
#### Associated Configurations
  * Configuration


#### Throws
  * SAP:CONNECTIVITY
  * SAP:INVALID_CACHE
  * SAP:INVALID_INPUT
  * SAP:METADATA_UNAVAILABLE
  * SAP:NOT_FOUND
  * SAP:NOT_SUPPORTED
  * SAP:PARSING
  * SAP:RETRY_EXHAUSTED
  * SAP:SYSTEM_BUSY
  * SAP:TIMEOUT


## Object Types
  * Expiration Policy
  * IDoc Parse Parameter Group
  * IDoc Render Parameter Group
  * Message Server
  *   * Reconnect Forever
  *   * Redelivery Policy
  * Repeatable File Store Stream
  * Repeatable In Memory Stream
  * SAP Attributes


### Expiration Policy
Configures an expiration policy strategy.
Field | Type | Description | Default Value | Required  
---|---|---|---|---  
**Max Idle Time** |  Configures the maximum amount of time that a dynamic configuration instance can remain idle before Mule considers it eligible for expiration.  
Enumeration, one of:
  * NANOSECONDS
  * MICROSECONDS
  * MILLISECONDS
  * SECONDS
  * MINUTES
  * HOURS
|  Retry strategy in case of connectivity errors.  
#### Output
#### Associated Configurations
  * Configuration


#### Throws
  * SAP:CONNECTIVITY
  * SAP:INVALID_CACHE
  * SAP:INVALID_INPUT
  * SAP:METADATA_UNAVAILABLE
  * SAP:NOT_FOUND
  * SAP:NOT_SUPPORTED
  * SAP:PARSING
  * SAP:RETRY_EXHAUSTED
  * SAP:SYSTEM_BUSY
  * SAP:TIMEOUT


## Object Types
  * Expiration Policy
  * IDoc Parse Parameter Group
  * IDoc Render Parameter Group
  * Message Server
  *   * Reconnect Forever
  *   * Redelivery Policy
  * Repeatable File Store Stream
  * Repeatable In Memory Stream
  * SAP Attributes


### Expiration Policy
Configures an expiration policy strategy.
Field | Type | Description | Default Value | Required  
---|---|---|---|---  
**Max Idle Time** |  Configures the maximum amount of time that a dynamic configuration instance can remain idle before Mule considers it eligible for expiration.  
Enumeration, one of:
  * NANOSECONDS
  * MICROSECONDS
  * MILLISECONDS
  * SECONDS
  * MINUTES
  * HOURS

|  Time unit for the **Max Idle Time** field.  
### IDoc Parse Parameter Group
IDoc parsing options.
Field | Type | Description | Default Value | Required  
---|---|---|---|---  
**Parse With Field Value Checking** |  Indicates whether to enable the field value checking mechanism in accordance with the respective IDoc field metadata when parsing.  
**Parse Ignore Unknown Fields** |  Indicates whether to ignore unknown fields when parsing, for example, when parsing with older IDoc metadata.  
**Parse Ignore Invalid Char Errors** |  Indicates whether to ignore character range check errors in accordance with the declared XML specification version when parsing. When using this option, invalid characters within field values are accepted, although the XML document to parse might contain characters that are not in the valid character range.  
**Parse Without Field Data Type Checking** |  Indicates whether to disable the field data type checking mechanism in accordance with the respective IDoc field metadata when parsing.  |  Use this option with care. Sending IDocs with illegal field contents that violate the field’s defined datatype can cause ABAP system dumps and result in unrecognized partial loss of data when processed in an AS ABAP system.  
---  
**Parse Refuse Unknown XML Version** |  Indicates whether to refuse XML documents that declare an unknown XML specification version, for example, a potential future XML specification version 1.2 or 2.0.  
**Parse Refuse XML Version10** |  Indicates whether to refuse XML documents that don’t use XML specification version 1.0 or that don’t contain an XML declaration header.  
**Parse Refuse XML Version11** |  Indicates whether to refuse XML documents that use XML specification version 1.1.  
**Parse Accept Only Xml Version10** |  Indicates whether to accept only XML documents that use XML specification version 1.0 or that don’t contain an XML declaration header.  
**Parse Accept Only Xml Version11** |  Indicates whether to accept only XML documents that use XML specification version 1.1 or that don’t contain an XML declaration header.  
**Parse Accept Only Xml Version10 To11** |  Indicates whether to accept only XML documents that use XML specification version 1.0 or 1.1 or that don’t contain an XML declaration header.  
### IDoc Render Parameter Group
IDoc rendering options.
Field | Type | Description | Default Value | Required  
---|---|---|---|---  
**Render IDoc Empty Tags** |  Indicates whether to include all empty tags in the resulting XML document.  
**Render IDoc Ignore Invalid Char Errors** |  Indicates whether to ignore character range check errors in accordance with the used XML specification version.  
**Render IDoc Ignore Tag Escape Errors** |  Indicates whether to ignore escape character errors within XML tags in accordance with the used IDocXML format  
**Render IDoc Omit Xml Declaration** |  Indicates whether to omit the XML declaration section in the resulting XML document.  
**Render IDoc Optional Encoding Decl** |  Indicates whether to write an optional XML encoding declaration attribute into the resulting XML document.  
**Render IDoc Substitute Invalid Chars** |  Indicates whether to substitute invalid characters within IDoc field values with the number sign `#` (`U+0023`).  
**Render IDoc With CR** |  Indicates whether to insert `CR` (Carriage Return) characters into the resulting XML document.  
**Render IDoc With CRLF** |  Indicates whether to insert `CR+LF` (Carriage Return and Line Feed) characters into the resulting XML document.  
**Render IDoc With LF** |  Indicates whether to insert `LF` (Line Feed) characters into the resulting XML document.  
**Render IDoc With Tabs And CR** |  Indicates whether to insert `TAB` and `CR` (Tab and Carriage Return) characters into the resulting XML document.  
**Render IDoc With Tabs And CRLF** |  Indicates whether to insert `TAB` and `CR+LF` (Tab, Carriage Return and Line Feed) characters into the resulting XML document.  
**Render IDoc With Tabs And LF** |  Indicates whether to insert `TAB` and `LF` (Tab and Line Feed) characters into the resulting XML document.  
**Render IDoc Xml10** |  Indicates whether to create an XML document compliant with XML specification version 1.0.  
**Render IDoc Xml11** |  Indicates whether to create an XML document compliant with XML specification version 1.1.  
### Message Server
You can configure a message server with multiple gateways that can be passed to the **Document Listener** source to distribute the load and improve performance. For more information, refer to Configure Multiple Gateways.
Field | Type | Description | Default Value | Required  
---|---|---|---|---  
Host of the message server.  
System ID of the SAP system.  
Port with which the connector logs into the message server.  
Group of SAP application servers.  
SAP router string to use for a system protected by a firewall.  
### Reconnect
Configures a standard reconnection strategy, which specifies how often to reconnect and how many reconnection attempts the connector source or operation can make.
Field | Type | Description | Default Value | Required  
---|---|---|---|---  
How often to attempt to reconnect, in milliseconds.  
How many reconnection attempts the Mule app can make.  
### Reconnect Forever
Configures a forever reconnection strategy by which the connector source or operation attempts to reconnect at a specified frequency for as long as the Mule app runs.
Field | Type | Description | Default Value | Required  
---|---|---|---|---  
How often to attempt to reconnect, in milliseconds.  
### Reconnection
Configures a reconnection strategy for an operation.
Field | Type | Description | Default Value | Required  
---|---|---|---|---  
**Fails Deployment** |  What to do if, when an app is deployed, a connectivity test does not pass after exhausting the associated reconnection strategy:
  * `true` Allow the deployment to fail.
  * `false` Ignore the results of the connectivity test.

  
**Reconnection Strategy** | 
  *   * Reconnect Forever

|  Reconnection strategy to use.  
### Redelivery Policy
Configures the redelivery policy for executing requests that generate errors. You can add a redelivery policy to any source in a flow.
Field | Type | Description | Default Value | Required  
---|---|---|---|---  
**Max Redelivery Count** |  Maximum number of times that a redelivered request can be processed unsuccessfully before returning a REDELIVERY_EXHAUSTED error.  
**Use Secure Hash** |  Whether to use a secure hash algorithm to identify a redelivered message.  
**Message Digest Algorithm** |  Secure hashing algorithm to use if the **Use Secure Hash** field is `true`. If the payload of the message is a Java object, Mule ignores this value and returns the value that the payload’s `hashCode()` returned.  
**Id Expression** |  One or more expressions that determine when a message was redelivered. This property can be set only if the **Use Secure Hash** field is `false`.  
**Object Store** |  Object Store |  Configures the object store that stores the redelivery counter for each message.  
### Repeatable File Store Stream
Configures the repeatable file-store streaming strategy by which Mule keeps a portion of the stream content in memory. If the stream content is larger than the configured buffer size, Mule backs up the buffer’s content to disk and then clears the memory.
Field | Type | Description | Default Value | Required  
---|---|---|---|---  
**In Memory Size** |  Maximum amount of memory that the stream can use for data. If the amount of memory exceeds this value, Mule buffers the content to disk. To optimize performance:
  * Configure a larger buffer size to avoid the number of times Mule needs to write the buffer on disk. This increases performance, but it also limits the number of concurrent requests your application can process, because it requires additional memory.
  * Configure a smaller buffer size to decrease memory load at the expense of response time.
**Buffer Unit** |  Enumeration, one of: |  Unit for the **In Memory Size** field.  
### Repeatable In Memory Stream
Configures the in-memory streaming strategy by which the request fails if the data exceeds the MAX buffer size. Always run performance tests to find the optimal buffer size for your specific use case.
Field | Type | Description | Default Value | Required  
---|---|---|---|---  
**Initial Buffer Size** |  Initial amount of memory to allocate to the data stream. If the streamed data exceeds this value, the buffer expands by **Buffer Size Increment** , with an upper limit of **Max In Memory Size value**.  
**Buffer Size Increment** |  Amount by which the buffer size expands if it exceeds its initial size. Setting a value of `0` or lower specifies that the buffer can’t expand.  
**Max Buffer Size** |  The maximum amount of memory to use. If more than that is used then a STREAM_MAXIMUM_SIZE_EXCEEDED error is raised. A value lower than or equal to zero means no limit.  
**Buffer Unit** |  Enumeration, one of: |  Unit for the **Initial Buffer Size** , **Buffer Size Increment** , and **Buffer Unit** fields.  
### SAP Attributes
Attributes for SAP payload.
Field | Type | Description | Default Value | Required  
---|---|---|---|---  
**Transaction Id** |  Transaction ID value.  
## See Also
  * Introduction to Anypoint Connectors
  * MuleSoft Help Center