Skip to content

Commit 98ccb6b

Browse files
Merge pull request #298922 from siddharth-ms/elaborate-connector-difference
Add more SAP connector differences
2 parents 1537c56 + 6b342aa commit 98ccb6b

File tree

1 file changed

+130
-8
lines changed
  • articles/logic-apps/connectors

1 file changed

+130
-8
lines changed

articles/logic-apps/connectors/sap.md

Lines changed: 130 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ author: daviburg
77
ms.author: daviburg
88
ms.reviewer: estfan, azla
99
ms.topic: how-to
10-
ms.date: 04/25/2025
10+
ms.date: 04/28/2025
1111

1212
#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.
1313
---
@@ -70,6 +70,12 @@ The SAP built-in connector significantly differs from the SAP managed connector
7070

7171
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.
7272

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+
7379
* Payload sizes up to 100 MB are supported, so you don't have to use a blob URI for large requests.
7480

7581
* 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,27 +88,143 @@ The SAP built-in connector significantly differs from the SAP managed connector
8288

8389
This capability addresses a problem with the SAP managed connector where the outcome from the autocommit behavior is silent and observable only through logs.
8490

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+
8595
* A longer time-out compared to the SAP managed connector.
8696

8797
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).
8898

8999
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.
90100

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).
101+
* Where to find the **`guid`** and **`tId`** parameters
92102

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).
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.
94104

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).
105+
* Handling empty XML elements
96106

97-
* Standard logic app workflows provide application settings where you can specify a Personal Security Environment (PSE) and PSE password.
107+
- SAP built-in connector: An empty XML element is treated as an SAP parameter with an explicit empty value or default value. To omit sending the parameter to SAP, you can just remove the empty element from the input payload.
98108

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.
109+
- SAP managed connector: An empty XML element is interpreted as a missing parameter and isn't sent to the SAP function.
110+
111+
**Example**
112+
113+
Suppose you have the following SAP RFC input payload:
114+
115+
```xml
116+
<RfcName>
117+
<Parameter></Parameter>
118+
</RfcName>
119+
```
100120

101-
* **Generate Schema** action
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.
128+
129+
For example, suppose you have the following input:
130+
131+
```xml
132+
<RfcName>
133+
<Parameter> </Parameter>
134+
</RfcName>
135+
```
136+
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 to comply with the W3C specification [2.10 White Space Handling](https://www.w3.org/TR/xml/#sec-white-space), for example:
138+
139+
```xml
140+
<RfcName>
141+
<Parameter xml:space="preserve"> </Parameter>
142+
</RfcName>
143+
```
144+
145+
* Validating IDoc format
146+
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: Directly 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
152+
153+
- SAP built-in connector: Strictly follows the schema defined by the schema generator.
154+
155+
- A segment that ends with **`GRP`** (group segment) must define any child segments only one time per instance.
156+
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:
164+
165+
```xml
166+
<ns2:E2EDKT1002GRP>
167+
<ns2:E2EDKT1002>
168+
<ns2:DATAHEADERCOLUMN_SEGNAM>E2EDKT1002</ns2:DATAHEADERCOLUMN_SEGNAM>
169+
<ns2:TDID>FD</ns2:TDID>
170+
</ns2:E2EDKT1002>
171+
<ns2:E2EDKT2001>
172+
<ns2:DATAHEADERCOLUMN_SEGNAM>E2EDKT2001</ns2:DATAHEADERCOLUMN_SEGNAM>
173+
<ns2:TDLINE>CRSD</ns2:TDLINE>
174+
</ns2:E2EDKT2001>
175+
<ns2:E2EDKT1002>
176+
<ns2:DATAHEADERCOLUMN_SEGNAM>E2EDKT1002</ns2:DATAHEADERCOLUMN_SEGNAM>
177+
<ns2:TDID>DTP</ns2:TDID>
178+
</ns2:E2EDKT1002>
179+
<ns2:E2EDKT2001>
180+
<ns2:DATAHEADERCOLUMN_SEGNAM>E2EDKT2001</ns2:DATAHEADERCOLUMN_SEGNAM>
181+
<ns2:TDLINE>OriginalRelease:0|</ns2:TDLINE>
182+
<ns2:TDFORMAT>/</ns2:TDFORMAT>
183+
</ns2:E2EDKT2001>
184+
</ns2:E2EDKT1002GRP>
185+
```
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:
188+
189+
```xml
190+
<ns2:E2EDKT1002GRP>
191+
<ns2:E2EDKT1002>
192+
<ns2:DATAHEADERCOLUMN_SEGNAM>E2EDKT1002</ns2:DATAHEADERCOLUMN_SEGNAM>
193+
<ns2:TDID>FD</ns2:TDID>
194+
</ns2:E2EDKT1002>
195+
<ns2:E2EDKT2001>
196+
<ns2:DATAHEADERCOLUMN_SEGNAM>E2EDKT2001</ns2:DATAHEADERCOLUMN_SEGNAM>
197+
<ns2:TDLINE>CRSD</ns2:TDLINE>
198+
</ns2:E2EDKT2001>
199+
</ns2:E2EDKT1002GRP>
200+
<ns2:E2EDKT1002GRP>
201+
<ns2:E2EDKT1002>
202+
<ns2:DATAHEADERCOLUMN_SEGNAM>E2EDKT1002</ns2:DATAHEADERCOLUMN_SEGNAM>
203+
<ns2:TDID>DTP</ns2:TDID>
204+
</ns2:E2EDKT1002>
205+
<ns2:E2EDKT2001>
206+
<ns2:DATAHEADERCOLUMN_SEGNAM>E2EDKT2001</ns2:DATAHEADERCOLUMN_SEGNAM>
207+
<ns2:TDLINE>OriginalRelease:0|</ns2:TDLINE>
208+
<ns2:TDFORMAT>/</ns2:TDFORMAT>
209+
</ns2:E2EDKT2001>
210+
</ns2:E2EDKT1002GRP>
211+
```
212+
213+
* Built-in trigger behavior
214+
215+
- Namespace construction
216+
217+
The trigger constructs the namespace in the SAP trigger payload by using the release version number from IDoc metadata, which is retrieved before parsing an IDoc (BizTalk XML or plain XML). To override this source and use the release version number from 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**.
222+
223+
* Built-in **Generate Schema** action
102224

103225
* 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.
104226

105-
* 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.
106228

107229
* 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.
108230

0 commit comments

Comments
 (0)