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/logic-apps-using-sap-connector.md
+4Lines changed: 4 additions & 0 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -253,6 +253,8 @@ For a Standard workflow in single-tenant Azure Logic Apps, use the preview SAP *
253
253
254
254
#### Upload assemblies to Azure portal
255
255
256
+
1. [Download the latest SAP client library](#sap-client-library-prerequisites).
257
+
256
258
1. In the [Azure portal](https://portal.azure.com), open your Standard logic app resource.
257
259
258
260
1. On the logic app menu, under **Workflows**, select **Assemblies**.
@@ -391,6 +393,8 @@ The following list describes the prerequisites for the SAP client library that y
391
393
392
394
* For a Consumption workflow in an ISE, follow the [ISE prerequisites](#ise-prerequisites) instead.
393
395
396
+
* For Standard workflows, copy the assembly (.dll) files to a location from where you can upload them to location where you're building your workflow, either in the Azure portal or locally in Visual Studio Code.
397
+
394
398
The following relationships exist between the SAP client library, the .NET Framework, the .NET runtime, and the data gateway:
395
399
396
400
* The Microsoft SAP Adapter and the gateway host service both use .NET Framework 4.7.2.
@@ -105,12 +105,21 @@ Based on whether you have a Consumption workflow in multi-tenant Azure Logic App
105
105
106
106
The preview SAP built-in connector trigger named **Register SAP RFC server for trigger** is available in the Azure portal, but the trigger currently can't receive calls from SAP when deployed in Azure. To fire the trigger, you can run the workflow locally in Visual Studio Code. For Visual Studio Code setup requirements and more information, see [Create a Standard logic app workflow in single-tenant Azure Logic Apps using Visual Studio Code](create-single-tenant-workflows-visual-studio-code.md).
107
107
108
+
> [!NOTE]
109
+
>
110
+
> The SAP built-in trigger is a non-polling, Azure Functions-based trigger, not a SOAP-based,
111
+
> webhook trigger like the SAP managed trigger. So, the trigger doesn't include options to specify
112
+
> a polling schedule. The trigger is called only when a message arrives, so no polling is necessary.
113
+
>
114
+
> To send a response following the SAP built-in trigger, make sure to add the
115
+
> [**Respond to SAP server** action](/azure/logic-apps/connectors/built-in/reference/sap/#respond-to-sap-server.-(preview))
116
+
> to your workflow, rather than use the **Response** action, which applies only to workflows that start with the **Request**
117
+
> trigger named **When a HTTP request is received** and follow the Request-Response pattern.
118
+
108
119
1. In Visual Studio Code, open your Standard logic app and a blank workflow in the designer.
109
120
110
121
1. In the designer, [follow these general steps to find and add the SAP built-in trigger named **Register SAP RFC server for trigger**](create-workflow-with-trigger-or-action.md?tabs=standard#add-trigger).
111
122
112
-
The preview SAP built-in trigger, **Register SAP RFC server for trigger**, is an Azure Functions-based trigger, not a polling trigger, and doesn't include options to specify a polling schedule. The trigger is called only when a message arrives, so no polling is necessary.
113
-
114
123
1. If prompted, provide the following connection information for your on-premises SAP server. When you're done, select **Create**. Otherwise, continue with the next step to set up your SAP trigger.
115
124
116
125
| Parameter | Required | Description |
@@ -157,15 +166,23 @@ The following example workflow shows how to extract individual IDocs from a pack
157
166
158
167
1. Before you start, you need a Consumption or Standard logic app workflow with an SAP trigger. If your workflow doesn't already start with this trigger, follow the previous steps in this guide to [add the SAP trigger that can receive messages to your workflow](#receive-messages-sap).
159
168
160
-
1. To immediately reply to your SAP server with the SAP request status, [add a Response action to your workflow](../connectors/connectors-native-reqres.md#add-a-response-action).
169
+
1. To immediately reply to your SAP server with the SAP request status, add the following response action, based on whether you use an SAP managed trigger or SAP built-in trigger:
161
170
162
-
As a best practice, add this Response action immediately after the trigger to free up the communication channel with your SAP server. In the Response action, use one of the following status codes (`statusCode`):
171
+
- SAP managed trigger: For this trigger, [add a Response action to your workflow](../connectors/connectors-native-reqres.md#add-a-response-action).
163
172
164
-
| Status code | Description |
165
-
|-------------|-------------|
166
-
|**202 Accepted**| The request was accepted for processing, but processing isn't complete yet. |
167
-
|**204 No Content**| The server successfully fulfilled the request, and there's no additional content to send in the response payload body. |
168
-
|**200 OK**| This status code always contains a payload, even if the server generates a payload body of zero length. |
173
+
In the Response action, use one of the following status codes (`statusCode`):
174
+
175
+
| Status code | Description |
176
+
|-------------|-------------|
177
+
|**202 Accepted**| The request was accepted for processing, but processing isn't complete yet. |
178
+
|**204 No Content**| The server successfully fulfilled the request, and there's no additional content to send in the response payload body. |
179
+
|**200 OK**| This status code always contains a payload, even if the server generates a payload body of zero length. |
180
+
181
+
- SAP built-in trigger: For this trigger, add the [**Respond to SAP server** action](/azure/logic-apps/connectors/built-in/reference/sap/#respond-to-sap-server.-(preview)) to your workflow.
182
+
183
+
> [!NOTE]
184
+
>
185
+
> As a best practice, add the response action immediately after the trigger to free up the communication channel with your SAP server.
169
186
170
187
1. Get the root namespace from the XML IDoc that your workflow receives from SAP.
171
188
@@ -238,67 +255,6 @@ The following example workflow shows how to extract individual IDocs from a pack
238
255
239
256
If you use the SAP managed connector or ISE-versioned SAP connector, under the trigger in your workflow, set up a way to explicitly filter out any unwanted actions from your SAP server, based on the root node namespace in the received XML payload. You can provide a list (array) with a single or multiple SAP actions. By default, this array is empty, which means that your workflow receives all the messages from your SAP server without filtering. When you set up the array filter, the trigger receives messages only from the specified SAP action types and rejects all other messages from your SAP server. However, this filter doesn't affect whether the typing of the received payload is weak or strong. Any SAP action filtering happens at the level of the SAP Adapter for your on-premises data gateway. For more information, review [how to test sending IDocs to Azure Logic Apps from SAP](logic-apps-using-sap-connector.md#test-sending-idocs-from-sap).
240
257
241
-
If you can't send IDoc packets from SAP to your trigger, review the Transactional RFC (tRFC) call rejection message in the SAP tRFC (T-Code SM58) dialog box. In the SAP interface, you might get the following error messages, which are clipped due to the substring limits on the **Status Text** field.
242
-
243
-
### The RequestContext on the IReplyChannel was closed without a reply being sent
244
-
245
-
This error message means unexpected failures happen when the catch-all handler for the channel terminates the channel due to an error, and rebuilds the channel to process other messages.
246
-
247
-
To acknowledge that your workflow received the IDoc, [add a Response action](../connectors/connectors-native-reqres.md#add-a-response-action) that returns a **200 OK** status code. Leave the body empty and don't change or add to the headers. The IDoc is transported through tRFC, which doesn't allow for a response payload.
248
-
249
-
To reject the IDoc instead, respond with any HTTP status code other than **200 OK**. The SAP Adapter then returns an exception back to SAP on your behalf. You should only reject the IDoc to signal transport errors back to SAP, such as a misrouted IDoc that your application can't process. You shouldn't reject an IDoc for application-level errors, such as issues with the data contained in the IDoc. If you delay transport acceptance for application-level validation, you might experience negative performance due to blocking your connection from transporting other IDocs.
250
-
251
-
If you're receiving this error message and experience systemic failures calling Azure Logic Apps, check that you've configured the network settings for your on-premises data gateway service for your specific environment. For example, if your network environment requires the use of a proxy to call Azure endpoints, you need to configure your on-premises data gateway service to use your proxy. For more information, review [Proxy Configuration](/dotnet/framework/network-programming/proxy-configuration).
252
-
253
-
If you're receiving this error message and experience intermittent failures calling Azure Logic Apps, you might need to increase your retry count or also retry interval.
254
-
255
-
1. Check the SAP settings in your on-premises data gateway service configuration file named **Microsoft.PowerBI.EnterpriseGateway.exe.config**.
256
-
257
-
1. Under the `configuration` root node, add a `configSections` element, if none exist.
258
-
259
-
1. Under the `configSections` node, add a `section` element with the following attributes, if none exist: `name="SapAdapterSection" type="Microsoft.Adapters.SAP.Common.SapAdapterSection, Microsoft.Adapters.SAP.Common"`
260
-
261
-
> [!IMPORTANT]
262
-
>
263
-
> Don't change the attributes in existing `section` elements, if such elements already exist.
264
-
265
-
Your `configSections` element looks like the following version, if no other section or section group is declared in the gateway service configuration:
1. Under the `configuration` root node, add an `SapAdapterSection` element, if none exists.
274
-
275
-
1. Under the `SapAdapterSection` node, add a `Broker` element with the following attributes, if none exist: `WebhookRetryDefaultDelay="00:00:00.10" WebhookRetryMaximumCount="2"`
276
-
277
-
> [!IMPORTANT]
278
-
> Change the attributes for the `Broker` element, even if the element already exists.
279
-
280
-
The `SapAdapterSection` element looks like the following version, if no other element or attribute is declared in the SAP adapter configuration:
The retry count setting looks like `WebhookRetryMaximumCount="2"`. The retry interval setting looks like `WebhookRetryDefaultDelay="00:00:00.10"` where the timespan format is `HH:mm:ss.ff`.
289
-
290
-
> [!NOTE]
291
-
> For more information about the configuration file,
292
-
> review [Configuration file schema for .NET Framework](/dotnet/framework/configure-apps/file-schema/).
293
-
294
-
1. Save your changes. Restart your on-premises data gateway.
295
-
296
-
### The segment or group definition E2EDK36001 was not found in the IDoc meta
297
-
298
-
This error message means expected failures happen with other errors. For example, the failure to generate an IDoc XML payload because its segments aren't released by SAP. As a result, the segment type metadata required for conversion is missing.
299
-
300
-
To have these segments released by SAP, contact the ABAP engineer for your SAP system.
301
-
302
258
## Set up asynchronous request-reply pattern for triggers
303
259
304
260
The SAP managed connector supports Azure's [asynchronous request-reply pattern](/azure/architecture/patterns/async-request-reply) for Azure Logic Apps triggers. You can use this pattern to create successful requests that would otherwise fail with the default synchronous request-reply pattern.
@@ -332,7 +288,7 @@ To create a logic app workflow that sends an IDoc to an SAP server and returns a
332
288
333
289
1.[Create a logic app workflow that's triggered by an HTTP request.](#add-request-trigger)
334
290
1.[Add an SAP action to your workflow for sending an IDoc to SAP.](#add-sap-action-send-idoc)
335
-
1. [Add a Response action to your workflow.](#add-response-action)
291
+
1.[Add a response action to your workflow.](#add-response-action)
336
292
1.[Create a remote function call (RFC) request-response pattern, if you're using an RFC to receive replies from SAP ABAP.](#create-rfc-request-response-pattern)
337
293
1.[Test your workflow.](#test-workflow)
338
294
@@ -380,7 +336,7 @@ Based on whether you have a Consumption workflow in multi-tenant Azure Logic App
380
336
381
337
### Add an SAP action to send an IDoc
382
338
383
-
Next, create an action to send your IDoc to SAP when the workflow's Request trigger fires. Based on whether you have a Consumption workflow in multi-tenant Azure Logic Apps or a Standard workflow in single-tenant Azure Logic Apps, follow the corresponding steps:
339
+
Next, create an action to send your IDoc to SAP when the workflow's request trigger fires. Based on whether you have a Consumption workflow in multi-tenant Azure Logic Apps or a Standard workflow in single-tenant Azure Logic Apps, follow the corresponding steps:
Now, set up your workflow to return the results from your SAP server to the original requestor. For this task, add the [Request built-in action named **Response**](../connectors/connectors-native-reqres.md#add-response) to your workflow and include the output from the SAP action.
595
+
Now, set up your workflow to return the results from your SAP server to the original requestor. For this task, follow these steps:
640
596
641
597
### [Consumption](#tab/consumption)
642
598
@@ -658,6 +614,12 @@ Now, set up your workflow to return the results from your SAP server to the orig
658
614
659
615
1. In the designer, [follow these general steps to find and add the Request built-in action named **Response**](create-workflow-with-trigger-or-action.md?tabs=standard#add-action).
660
616
617
+
> [!NOTE]
618
+
>
619
+
> If you use the SAP built-in trigger, which is an Azure Functions-based trigger, not a webhook trigger, add the
620
+
> [**Respond to SAP server** action](/azure/logic-apps/connectors/built-in/reference/sap/#respond-to-sap-server.-(preview))
621
+
> to your workflow and include the output from the SAP action.
622
+
661
623
1. In the **Response** action, for the **Body** parameter, select inside the edit box to open the dynamic content list appears.
662
624
663
625
1. From the dynamic content list, under **[IDoc] Send document to SAP**, find and select **Body**. The **Body** field contains the body output from the SAP action.
@@ -1010,6 +972,76 @@ You might get a similar error when SAP Application server or Message server name
1010
972
10.0.1.9 SAPDBSERVER01.someguid.xx.xxxxxxx.cloudapp.net # SAP System Server VPN IP by fully qualified computer name
1011
973
```
1012
974
975
+
<aname="errors-sending-idoc-packets"></a>
976
+
977
+
## Errors sending IDoc packets from SAP to your trigger
978
+
979
+
If you can't send IDoc packets from SAP to your trigger, review the Transactional RFC (tRFC) call rejection message in the SAP tRFC (T-Code SM58) dialog box. In the SAP interface, you might get the following error messages, which are clipped due to the substring limits on the **Status Text** field.
980
+
981
+
### The segment or group definition E2EDK36001 was not found in the IDoc meta
982
+
983
+
This error message means expected failures happen with other errors. For example, the failure to generate an IDoc XML payload because its segments aren't released by SAP. As a result, the segment type metadata required for conversion is missing.
984
+
985
+
To have these segments released by SAP, contact the ABAP engineer for your SAP system.
986
+
987
+
### The RequestContext on the IReplyChannel was closed without a reply being sent
988
+
989
+
For SAP managed connector and ISE-versioned SAP connector, this error message means unexpected failures happen when the catch-all handler for the channel terminates the channel due to an error, and rebuilds the channel to process other messages.
990
+
991
+
> [!NOTE]
992
+
>
993
+
> The SAP managed trigger and ISE-versioned SAP triggers are webhooks that use the SOAP-based SAP adapter. However, the SAP built-in trigger is an Azure Functions-based trigger that doesn't use a SOAP SAP adapter and doesn't get this error message.
994
+
995
+
- To acknowledge that your workflow received the IDoc, [add a Response action](../connectors/connectors-native-reqres.md#add-a-response-action) that returns a **200 OK** status code. Leave the body empty and don't change or add to the headers. The IDoc is transported through tRFC, which doesn't allow for a response payload.
996
+
997
+
- To reject the IDoc instead, respond with any HTTP status code other than **200 OK**. The SAP Adapter then returns an exception back to SAP on your behalf. You should only reject the IDoc to signal transport errors back to SAP, such as a misrouted IDoc that your application can't process. You shouldn't reject an IDoc for application-level errors, such as issues with the data contained in the IDoc. If you delay transport acceptance for application-level validation, you might experience negative performance due to blocking your connection from transporting other IDocs.
998
+
999
+
- If you receive this error message and experience systemic failures calling Azure Logic Apps, check that you've configured the network settings for your on-premises data gateway service for your specific environment. For example, if your network environment requires the use of a proxy to call Azure endpoints, you need to configure your on-premises data gateway service to use your proxy. For more information, review [Proxy Configuration](/dotnet/framework/network-programming/proxy-configuration).
1000
+
1001
+
- If you receive this error message and experience intermittent failures calling Azure Logic Apps, you might need to increase your retry count or also retry interval by following these steps:
1002
+
1003
+
1. Check the SAP settings in your on-premises data gateway service configuration file named **Microsoft.PowerBI.EnterpriseGateway.exe.config**.
1004
+
1005
+
1. Under the `configuration` root node, add a `configSections` element, if none exist.
1006
+
1007
+
1. Under the `configSections` node, add a `section` element with the following attributes, if none exist: `name="SapAdapterSection" type="Microsoft.Adapters.SAP.Common.SapAdapterSection, Microsoft.Adapters.SAP.Common"`
1008
+
1009
+
> [!IMPORTANT]
1010
+
>
1011
+
> Don't change the attributes in existing `section` elements, if such elements already exist.
1012
+
1013
+
Your `configSections` element looks like the following version, if no other section or section group is declared in the gateway service configuration:
1. Under the `configuration` root node, add an `SapAdapterSection` element, if none exists.
1022
+
1023
+
1. Under the `SapAdapterSection` node, add a `Broker` element with the following attributes, if none exist: `WebhookRetryDefaultDelay="00:00:00.10" WebhookRetryMaximumCount="2"`
1024
+
1025
+
> [!IMPORTANT]
1026
+
> Change the attributes for the `Broker` element, even if the element already exists.
1027
+
1028
+
The `SapAdapterSection` element looks like the following version, if no other element or attribute is declared in the SAP adapter configuration:
The retry count setting looks like `WebhookRetryMaximumCount="2"`. The retry interval setting looks like `WebhookRetryDefaultDelay="00:00:00.10"` where the timespan format is `HH:mm:ss.ff`.
1037
+
1038
+
> [!NOTE]
1039
+
> For more information about the configuration file, review [Configuration file schema for .NET Framework](/dotnet/framework/configure-apps/file-schema/).
1040
+
1041
+
1. Save your changes.
1042
+
1043
+
1. If you're using the on-premises data gateway, restart your gateway.
1044
+
1013
1045
## Next steps
1014
1046
1015
1047
- [Generate schemas for artifacts in SAP](sap-generate-schemas-for-artifacts.md)
0 commit comments