|
1 | 1 | # SAP BTP ABAP Environment (Steampunk) |
2 | 2 |
|
3 | | - |
4 | | -# Prerequisites |
| 3 | +## Prerequisites |
5 | 4 |
|
6 | 5 | > **Important**: Ensure any HTML5 application source files you modify are under source control before making changes. Any configuration scripts or commands that change the behaviour of your system or operating system should be carried out with the authorization of your IT support team. |
7 | 6 |
|
8 | | -- The `Authentication` type can be configured with different options which include `OAuth2UserTokenExchange` and `SAMLAssertion`. |
9 | | -- When exposing an SAP BTP ABAP Environment (Steampunk) system to the internet using a SAP BTP destination, ensure the destination `WebIDEUsage` field contains the following values: |
10 | | -``` |
| 7 | +- The `Authentication` type can be configured with different options, including `OAuth2UserTokenExchange` and `SAMLAssertion`. |
| 8 | +- When exposing an SAP BTP ABAP Environment (Steampunk) system to the internet using an SAP BTP destination, ensure the destination `WebIDEUsage` field contains the following values: |
| 9 | + |
| 10 | +```text |
11 | 11 | WebIDEUsage: odata_abap,dev_abap,abap_cloud |
12 | 12 | ``` |
| 13 | + |
13 | 14 | The `abap_cloud` property is used to determine which type of system is being connected to. |
14 | 15 |
|
15 | 16 | ## Understanding ABAP Cloud Environment (Steampunk) |
16 | 17 |
|
17 | 18 | Follow this blog post to [Demystifying: SAP BTP - ABAP Environment, Steampunk, ABAP on Cloud, Embedded Steampunk](https://community.sap.com/t5/technology-blog-posts-by-members/demystifying-sap-btp-abap-environment-steampunk-abap-on-cloud-embedded/ba-p/13567772). |
18 | 19 |
|
19 | | -## Creating a SAP Fiori App and Deploy it to SAP BTP, ABAP Cloud Environment |
| 20 | +## Creating an SAP Fiori App and Deploying It to SAP BTP, ABAP Cloud Environment |
20 | 21 |
|
21 | 22 | Follow this tutorial to [Create an SAP Fiori App and Deploy it to SAP BTP, ABAP Environment](https://developers.sap.com/tutorials/abap-environment-deploy-fiori-elements-ui.html). |
22 | 23 |
|
23 | 24 | ## Enable a BTP Destination for Usage Across Global Accounts or Between Different Regions Using SAMLAssertion |
24 | 25 |
|
25 | 26 | Option 1: Watch [Configuring BTP Cross-Account and Cross-Region Destinations For Use in UI Tooling](https://www.youtube.com/watch?v=8ePyQJsmWYA). |
26 | 27 |
|
27 | | -Please note some of the content is outdated. For example, the legacy SAP BTP Destinations flow or where to find the trust (*.pem file) certificates. However, the video is still relevant for the cross-account and cross-region destination configuration. |
| 28 | +Note that some of the content is outdated. For example, the legacy SAP BTP Destinations flow or where to find the trust (*.pem file) certificates. However, the video is still relevant for the cross-account and cross-region destination configuration. |
28 | 29 |
|
29 | 30 | Option 2: Read [Creating a Destination for Cross-Subaccount Communication](https://help.sap.com/docs/btp/sap-business-technology-platform/creating-destination-for-cross-subaccount-communication) |
30 | 31 |
|
31 | | -# Troubleshooting |
| 32 | +### Key Notes from the Tutorial |
| 33 | + |
| 34 | +#### Connectivity overview |
| 35 | + |
| 36 | +SAP Business Application Studio connects to ABAP Cloud systems using BTP destinations configured with `WebIDEUsage=odata_abap`. The typical flow is: BAS connects to a destination, which connects to the ABAP Environment using BTP. With `odata_abap`, the destination URL must always be the base host only — BAS appends the ABAP catalog paths automatically. |
| 37 | + |
| 38 | +Before connecting, ensure BAS is logged in to Cloud Foundry and the correct organization and space are set. This is required for BAS to resolve destinations and deploy applications correctly. |
| 39 | + |
| 40 | +#### Destination configuration |
| 41 | + |
| 42 | +The destination must point to the ABAP system root URL with no service path appended. Key required properties include: |
| 43 | + |
| 44 | +- `WebIDEUsage`: `odata_abap,dev_abap,abap_cloud` |
| 45 | +- `WebIDEEnabled`: `true` |
| 46 | +- `HTML5.DynamicDestination`: `true` |
| 47 | +- Correct root URL with no service path appended |
| 48 | +- Proper authentication type based on the scenario: |
| 49 | + - Same subaccount: `OAuth2UserTokenExchange` |
| 50 | + - Cross-subaccount: `SAMLAssertion` |
| 51 | + |
| 52 | +The following is an example of an `OAuth2UserTokenExchange` destination for an ABAP Cloud system (same-subaccount scenario): |
| 53 | + |
| 54 | +```json |
| 55 | +{ |
| 56 | + "Authentication": "OAuth2UserTokenExchange", |
| 57 | + "HTML5.DynamicDestination": "true", |
| 58 | + "HTML5.SetXForwardedHeaders": "false", |
| 59 | + "HTML5.Timeout": "180000", |
| 60 | + "Name": "<destination-name>", |
| 61 | + "ProxyType": "Internet", |
| 62 | + "Type": "HTTP", |
| 63 | + "URL": "https://<abap-system-guid>.abap.<region>.ondemand.com", |
| 64 | + "WebIDEEnabled": "true", |
| 65 | + "WebIDEUsage": "odata_abap,dev_abap,abap_cloud", |
| 66 | + "abap_enabled": "true", |
| 67 | + "clientId": "<client-id>", |
| 68 | + "clientSecret": "<client-secret>", |
| 69 | + "tokenServiceURL": "https://<subdomain>.authentication.<region>.hana.ondemand.com/oauth/token", |
| 70 | + "tokenServiceURLType": "Dedicated" |
| 71 | +} |
| 72 | +``` |
| 73 | + |
| 74 | +The following is an example of a `SAMLAssertion` destination for a cross-subaccount scenario: |
| 75 | + |
| 76 | +```json |
| 77 | +{ |
| 78 | + "Authentication": "SAMLAssertion", |
| 79 | + "Description": "<destination-description>", |
| 80 | + "HTML5.DynamicDestination": "true", |
| 81 | + "HTML5.Timeout": "60000", |
| 82 | + "Name": "<destination-name>", |
| 83 | + "ProxyType": "Internet", |
| 84 | + "Type": "HTTP", |
| 85 | + "URL": "https://<system-id>-api.<region>.ondemand.com", |
| 86 | + "WebIDEEnabled": "true", |
| 87 | + "WebIDEUsage": "odata_abap,dev_abap,abap_cloud", |
| 88 | + "audience": "https://<system-id>.<region>.ondemand.com", |
| 89 | + "authnContextClassRef": "urn:oasis:names:tc:SAML:2.0:ac:classes:PreviousSession", |
| 90 | + "nameIdFormat": "urn:oasis:names:tc:SAML:1.1:nameid-format:emailAddress" |
| 91 | +} |
| 92 | +``` |
| 93 | + |
| 94 | +#### Cross-subaccount requirements |
| 95 | + |
| 96 | +When BAS (Subaccount B) accesses an ABAP system (Subaccount A), both subaccounts must be under the same global account and trust must be established between them. The identity provider and trust configuration must be aligned so that tokens issued in Subaccount B are accepted by Subaccount A. |
| 97 | + |
| 98 | +The SAML trust must be explicitly established between the two subaccounts. This requires exporting the signing certificate from Subaccount B (the identity provider context) and importing it into Subaccount A within the ABAP Cloud system. |
| 99 | + |
| 100 | +In the ABAP environment, this is configured using the Communication Systems application, where the certificate is uploaded and assigned to the relevant communication system. This ensures that SAML assertions issued by Subaccount B can be validated and trusted by Subaccount A during authentication. |
| 101 | + |
| 102 | +#### Roles and authorizations |
| 103 | + |
| 104 | +The developer user must have the required business roles and catalogs assigned in the ABAP system. For example, the `SAP_A4C_BC_DEV_UID_PC` role is required for UI deployment. Missing roles typically result in HTTP 401 (authorization failure) or HTTP 500 (back-end configuration issue) errors. |
| 105 | + |
| 106 | +#### Service discovery |
| 107 | + |
| 108 | +BAS uses OData catalog services to discover back-end services. With `odata_abap`, both V2 and V4 catalog endpoints must be accessible from the destination: |
| 109 | + |
| 110 | +- V2: `/sap/opu/odata/IWFND/CATALOGSERVICE;v=2/ServiceCollection` |
| 111 | +- V4: `/sap/opu/odata4/iwfnd/config/default/iwfnd/catalog/0002/ServiceGroups?$expand=DefaultSystem($expand=Services)` |
| 112 | + |
| 113 | +An empty catalog or connection failure typically indicates a destination misconfiguration, authentication failure, or a missing service exposure in the ABAP communication scenario. |
| 114 | + |
| 115 | +#### Common failure patterns |
| 116 | + |
| 117 | +| HTTP Status | Likely Cause | |
| 118 | +|---|---| |
| 119 | +| HTTP 401 | Missing roles, invalid authentication setup, or SAML trust not configured | |
| 120 | +| HTTP 500 | Back-end misconfiguration, missing service exposure, or invalid destination setup | |
| 121 | +| Empty catalog | Service not exposed in ABAP or communication scenario not configured | |
| 122 | + |
| 123 | +## Troubleshooting |
32 | 124 |
|
33 | 125 | One of the most common reasons why the connection fails when accessing the ABAP Cloud environment from an external application, such as Business Application Studio, is that the communication system is not set up correctly. |
34 | 126 |
|
35 | 127 | For more information, see [Creating a Communication System for SAP Business Application Studio](https://help.sap.com/docs/sap-btp-abap-environment/abap-environment/creating-communication-system-for-sap-business-application-studio). |
36 | 128 |
|
37 | | -If you are still blocked from accessing your ABAP Cloud instance, enable a connectivity trace in your ABAP Cloud system and analyze the error. For more information, see [Enable a Connectivity Trace](https://help.sap.com/docs/sap-btp-abap-environment/abap-environment/display-connectivity-trace). |
| 129 | +### Validating Connectivity Using Environment Check |
38 | 130 |
|
39 | | -### License |
40 | | -Copyright (c) 2009-2026 SAP SE or an SAP affiliate company. This project is licensed under the Apache Software License, version 2.0 except as noted otherwise in the [LICENSE](../../LICENSES/Apache-2.0.txt) file. |
| 131 | +Use the Environment Check tool in BAS to validate your destination properties and confirm connectivity. For more information, see the [Environment Check](../destinations/README.md#environment-check) section in the destinations guide. |
| 132 | + |
| 133 | +### Enabling a Connectivity Trace |
41 | 134 |
|
| 135 | +If you are still blocked after reviewing the Environment Check report, enable a connectivity trace in your ABAP Cloud system and analyze the error. For more information, see [Enable a Connectivity Trace](https://help.sap.com/docs/sap-btp-abap-environment/abap-environment/display-connectivity-trace). |
| 136 | + |
| 137 | +## License |
| 138 | + |
| 139 | +Copyright (c) 2009-2026 SAP SE or an SAP affiliate company. This project is licensed under the Apache Software License, version 2.0 except as noted otherwise in the [LICENSE](../../LICENSES/Apache-2.0.txt) file. |
0 commit comments