Skip to content

Commit f3aa4d0

Browse files
authored
Merge pull request #139 from SAP-samples/docs/abapcloud-km-fixes
docs(km): apply KM fixes and expand abapcloud destination guide
2 parents e072963 + c762e17 commit f3aa4d0

File tree

1 file changed

+109
-11
lines changed

1 file changed

+109
-11
lines changed

misc/abapcloud/README.md

Lines changed: 109 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,41 +1,139 @@
11
# SAP BTP ABAP Environment (Steampunk)
22

3-
4-
# Prerequisites
3+
## Prerequisites
54

65
> **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.
76
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
1111
WebIDEUsage: odata_abap,dev_abap,abap_cloud
1212
```
13+
1314
The `abap_cloud` property is used to determine which type of system is being connected to.
1415

1516
## Understanding ABAP Cloud Environment (Steampunk)
1617

1718
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).
1819

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
2021

2122
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).
2223

2324
## Enable a BTP Destination for Usage Across Global Accounts or Between Different Regions Using SAMLAssertion
2425

2526
Option 1: Watch [Configuring BTP Cross-Account and Cross-Region Destinations For Use in UI Tooling](https://www.youtube.com/watch?v=8ePyQJsmWYA).
2627

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.
2829

2930
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)
3031

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
32124

33125
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.
34126

35127
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).
36128

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
38130

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
41134

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

Comments
 (0)