You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: articles/logic-apps/connectors/sap.md
+92-84Lines changed: 92 additions & 84 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -7,7 +7,7 @@ author: daviburg
7
7
ms.author: daviburg
8
8
ms.reviewer: estfan, azla
9
9
ms.topic: how-to
10
-
ms.date: 04/25/2025
10
+
ms.date: 04/28/2025
11
11
12
12
#customer intent: As a developer, I want to know the prerequisites and details about using SAP with Azure Logic Apps, so I can connect to an SAP server from my Consumption or Standard workflow.
13
13
---
@@ -70,6 +70,12 @@ The SAP built-in connector significantly differs from the SAP managed connector
70
70
71
71
Instead, the SAP built-in connector communicates directly with your SAP server in the integrated virtual network, which avoids hops, latency, and failure points for a network gateway. Make sure that you upload or deploy the non-redistributable SAP client libraries with your logic app workflow application. For more information, see the [Prerequisites](#prerequisites) in this guide.
72
72
73
+
* Standard logic app workflows require and use the SAP NCo 3.1 client library, not the SAP NCo 3.0 version. For more information, see [Prerequisites](#prerequisites).
74
+
75
+
* By default, the SAP built-in connector operations are *stateless*. However, you can [enable stateful mode (affinity) for these operations](../../connectors/enable-stateful-affinity-built-in-connectors.md).
76
+
77
+
In stateful mode, the SAP built-in connector supports high availability and horizontal scale-out configurations. By comparison, the SAP managed connector has restrictions regarding the on-premises data gateway limited to a single instance for triggers and to clusters only in failover mode for actions. For more information, see [SAP managed connector - Known issues and limitations](#known-issues-limitations).
78
+
73
79
* Payload sizes up to 100 MB are supported, so you don't have to use a blob URI for large requests.
74
80
75
81
* Specific actions are available for **Call BAPI**, **Call RFC**, and **Send IDoc**. These dedicated actions provide a better experience for stateful BAPIs, RFC transactions, and IDoc deduplication, and don't use the older SOAP Windows Communication Foundation (WCF) messaging model.
@@ -82,141 +88,143 @@ The SAP built-in connector significantly differs from the SAP managed connector
82
88
83
89
This capability addresses a problem with the SAP managed connector where the outcome from the autocommit behavior is silent and observable only through logs.
84
90
91
+
* Standard logic app workflows provide application settings where you can specify a Personal Security Environment (PSE) and PSE password.
92
+
93
+
This change prevents you from uploading multiple PSE files, which isn't supported and results in SAP connection failures. In Consumption logic app workflows, the SAP managed connector lets you specify these values through connection parameters, which allowed you to upload multiple PSE files and isn't supported, causing SAP connection failures.
94
+
85
95
* A longer time-out compared to the SAP managed connector.
86
96
87
97
The SAP built-in connector natively runs on the Azure Logic Apps runtime, unlike the SAP managed connector that runs on the shared, global, multitenant Azure infrastructure. This design difference means that you can change the default time-out value on the Standard logic app resource by using the **host.json** settings named [**Runtime.FlowRunRetryableActionJobCallback.ActionJobExecutionTimeout**](/azure/logic-apps/edit-app-settings-host-settings?tabs=azure-portal#run-actions) and [**functionTimeout**](/azure/logic-apps/edit-app-settings-host-settings?tabs=azure-portal#run-actions).
88
98
89
99
The capability to adjust the time-out value means that you can use the SAP built-in connector as-is for long-running synchronous requests. Otherwise, these requests have to use the action pattern for long-running webhook-based requests in the SAP managed connector, which has a much shorter two-minute time-out for synchronous requests.
90
100
91
-
* By default, the SAP built-in connector operations are *stateless*. However, you can [enable stateful mode (affinity) for these operations](../../connectors/enable-stateful-affinity-built-in-connectors.md).
92
-
93
-
In stateful mode, the SAP built-in connector supports high availability and horizontal scale-out configurations. By comparison, the SAP managed connector has restrictions regarding the on-premises data gateway limited to a single instance for triggers and to clusters only in failover mode for actions. For more information, see [SAP managed connector - Known issues and limitations](#known-issues-limitations).
94
-
95
-
* Standard logic app workflows require and use the SAP NCo 3.1 client library, not the SAP NCo 3.0 version. For more information, see [Prerequisites](#prerequisites).
96
-
97
-
* Standard logic app workflows provide application settings where you can specify a Personal Security Environment (PSE) and PSE password.
101
+
* Where to find the **`guid`** and **`tId`** parameters
98
102
99
-
This change prevents you from uploading multiple PSE files, which isn't supported and results in SAP connection failures. In Consumption logic app workflows, the SAP managed connector lets you specify these values through connection parameters, which allowed you to upload multiple PSE files and isn't supported, causing SAP connection failures.
103
+
The XML parameters for **`guid`** and **`tId`** are no longer available in input and output XML payloads. Instead, you can find the parameters as explicit parameters in the workflow designer on the **Parameters** tab and as dynamic output expressions.
100
104
101
-
*Changes to `guid` and `tId` Handling
105
+
*Handling empty XML elements
102
106
103
-
The XML parameters for `guid` and `tId` are no longer available within the input or output XML payloads.
104
-
Instead, they are now exposed as explicit parameters in the Logic App Designer's input pane and as dynamic output expressions.
107
+
- SAP built-in connector: An empty XML element is treated as an SAP parameter with an explicit empty value or default value.
105
108
106
-
* Difference in how empty XML elements are handled
109
+
- SAP managed connector: An empty XML element is interpreted as a missing parameter and isn't sent to the SAP function.
107
110
108
-
-**BuiltIn SAP Connector**: An empty XML element is treated as a SAP parameter with an explicit empty value or default value.
109
-
-**Managed SAP Connector**: An empty XML element is interpreted as a missing parameter, and the parameter is not sent to the SAP function.
111
+
**Example**
110
112
111
-
**Example**
112
-
Given the following SAP RFC input payload:
113
+
Suppose you have the following SAP RFC input payload:
113
114
114
115
```xml
115
116
<RfcName>
116
-
<Parameter></Parameter>
117
+
<Parameter></Parameter>
117
118
</RfcName>
118
119
```
119
-
- In Logic App Standard built-in connector, the Parameter is included in the SAP RFC call with an explicit empty value ('').
120
-
121
-
- In the Managed SAP Connector, the Parameter is omitted entirely from the SAP RFC call.
122
120
123
-
* Trimming of whitespace characters.
121
+
- In SAP built-in connector, the SAP RFC call includes the parameter as an explicit empty value ('').
122
+
123
+
- In the SAP managed connector, the SAP RFC call omits the parameter entirely.
124
+
125
+
* Trimming whitespace characters
126
+
127
+
The SAP built-in connector automatically trims whitespace characters in XML elements.
124
128
125
-
The Built-in SAP Connector in Logic App Standard automatically trims whitespace characters within XML elements.
129
+
For example, suppose you have the following input:
126
130
127
-
For example, the following input:
128
131
```xml
129
132
<RfcName>
130
-
<Parameter> </Parameter>
133
+
<Parameter> </Parameter>
131
134
</RfcName>
132
135
```
133
-
would result in the SAP RFC function call with the Parameter value interpreted as an empty string ('').
134
136
135
-
To preserve whitespace characters, you can explicitly specify the `xml:space="preserve"` attribute on the element. For example:
137
+
In the SAP RFC function call, the whitespace in the **Parameter** value is treated as an empty string ('') and is trimmed. To make sure that the call keeps whitespace exactly as provided in the payload, include the **`xml:space="preserve"`** attribute with the element, for example:
138
+
136
139
```xml
137
140
<RfcName>
138
-
<Parameterxml:space="preserve"> </Parameter>
141
+
<Parameterxml:space="preserve"> </Parameter>
139
142
</RfcName>
140
143
```
141
-
Using `xml:space="preserve"` ensures that the connector retains the whitespace characters exactly as provided in the payload.
142
144
143
-
* IDoc Format Validation
145
+
*Validating IDoc format
144
146
145
-
The **Built-in SAP Connector** strictly validates the input payload against the `IDoc Format` specified in the action inputs.
146
-
If there is a mismatch between the provided `IDoc Format` and the structure of the input XML IDoc, the built-in connector will throw an error.
147
-
148
-
In contrast, the **Managed SAP Connector** infers the IDoc format directly from the input payload, allowing more flexibility without requiring an exact format match.
147
+
- SAP built-in connector: Strictly validates the input payload against the **`IDoc Format`** specified in the action inputs. If a mismatch exists between the provided **`IDoc Format`** and the input XML IDoc structure, the built-in connector throws an error.
148
+
149
+
- SAP managed connector: Direclty infers the IDoc format from the input payload, allowing for more flexibility by not requiring an exactly matching format.
150
+
151
+
* Handling BizTalk XML group segments
149
152
150
-
* Difference in handling BizTalk XML group segments.
153
+
- SAP built-in connector**: Strictly follows the schema defined by the schema generator.
151
154
152
-
-**Built-in SAP Connector**: Strictly follows the schema defined by the Schema Generator. A group segment (a segment ending with `GRP`) must define its child segments only once per instance. To represent multiple items, multiple instances of the group segment should be created, each containing its own set of child segments.
153
-
-**Managed SAP Connector**: Allows multiple repetitions of child elements within a single group segment. These are interpreted as multiple instances of the group segment.
155
+
- A segment that ends with **`GRP`** (group segment) must define any child segments only one time per instance.
154
156
155
-
**Example Behavior**
156
-
The following structure, where multiple sequences of child elements are grouped under a single group segment, would be **rejected** by the Built-in SAP connector in Logic App Standard:
157
+
- To represent multiple sets of child segments, create multiple instances of the group segment so that each instance contains its own individual set of child segments.
158
+
159
+
- SAP managed connector: Allows multiple repetitions of child elements within a single group segment. These repetitions are interpreted as multiple instances of the group segment.
160
+
161
+
**Example behavior**
162
+
163
+
In the following structure, a single group segment defines multiple sequences of child elements, which is rejected by the SAP built-in connector:
Instead, the following structure is valid for the Built-in SAP connector, where each instance of the `E2EDKT1002GRP` group contains only a single sequence of child segments:
186
+
187
+
Instead, use following structure for the SAP built-in connector where each **`E2EDKT1002GRP`** group instance contains only a single sequence of child segments:
The SAP trigger uses the release version from the SAP Fetch Metadata response to construct the namespace in the trigger payload.
209
-
To override this and use the release version specified in the control record instead, set the `EnforceControlRecordNamespace` property to `true`in the trigger input parameters within the Logic App Designer.
210
-
211
-
-**Handling Empty Elements**:
212
-
By default, the SAP trigger does not include empty elements in the output payload.
213
-
To include empty nodes in the trigger output, set the `EnableEmptyXmlNode` property to `true`in the trigger input parameters within the Logic App Designer.
215
+
- Namespace construction
216
+
217
+
To construct the namespace in the SAP trigger payload, the trigger uses the released version from the SAP Fetch Metadata response. To override this behvior and use the release version specified in the control record instead, go to the workflow designer, and in the trigger input parameters, set the **`EnforceControlRecordNamespace`** property to **`true`**.
218
+
219
+
- Handling empty elements
220
+
221
+
By default, the SAP trigger doesn't include empty elements in the output payload. To include empty elements in the trigger output, go to the workflow designer, and in the trigger input parameters, set the **`EnableEmptyXmlNode`** property to **`true`**.
214
222
215
-
***Generate Schema** action
223
+
*Built-in **Generate Schema** action
216
224
217
225
* You can select from multiple operation types, such as BAPI, IDoc, RFC, and tRFC, versus the same action in the SAP managed connector, which uses the **SapActionUris** parameter and a file system picker experience.
218
226
219
-
* You can directly provide a parameter name as a custom value. For example, you can specify the **RFC Name** parameter from the **Call RFC** action. By comparison, in the SAP managed connector, you had to provide a complex **Action URI** parameter name.
227
+
* You can directly provide a parameter name as a custom value. For example, you can specify the **RFC Name** parameter from the **Call RFC** action. By comparison, in the SAP managed connector, you have to provide a complex **Action URI** parameter name.
220
228
221
229
* By design, this action doesn't support generating multiple schemas for RFCs, BAPIs, or IDocs in single action execution, which the SAP managed connector supports. This capability change now prevents attempts to send large amounts of content in a single call.
0 commit comments