SAP BTP ABAP Environment
Guide for setting up and developing in the SAP BTP ABAP Environment (Steampunk).
Workflow
- Determine the user's goal:
- Setting up a new ABAP Environment instance - Connecting ADT to the BTP ABAP system - Configuring communication arrangements for integrations - Creating a first ABAP Cloud project - Managing software components and packages - Setting up outbound/inbound connectivity
- Identify the phase:
- Initial provisioning and setup - Developer onboarding - Integration configuration - Application development
- Guide implementation step by step
Setup Overview
Prerequisites
| Requirement |
Description |
| SAP BTP Account |
Global account with entitlements for ABAP Environment |
| Subaccount |
Cloud Foundry-enabled subaccount |
| ADT |
Eclipse with ABAP Development Tools installed |
| User |
Platform user with Space Developer role |
| Entitlements |
abap/standard or abap/saas_oem service plan |
Service Instance Creation
- Navigate to BTP Cockpit → Subaccount → Cloud Foundry → Spaces
- Create service instance:
- Service: ABAP Environment - Plan: standard - Instance name: e.g., my-abap-instance
- Provide parameters (JSON):
{
"admin_email": "[email protected]",
"description": "Development ABAP System",
"is_development_allowed": true,
"sapsystemname": "DEV",
"size_of_runtime": 1,
"size_of_persistence": 4
}
- Create a service key for ADT connectivity
Connecting ADT to BTP ABAP
- In Eclipse/ADT: File → New → ABAP Cloud Project
- Select SAP BTP ABAP Environment
- Enter the service key (JSON) or service instance URL
- Authenticate via browser (SAP Identity Authentication)
- Project is created — start developing
System Architecture
SAP BTP Subaccount
└── Cloud Foundry Space
└── ABAP Environment Service Instance
├── ABAP System (development/production)
├── Software Components (ZLOCAL, custom)
├── Communication Arrangements (integrations)
└── Business Services (OData, RFC)
Software Components
| Component |
Description |
ZLOCAL |
Local development — not transportable (like $TMP) |
| Custom |
Transportable components — managed via gCTS or Manage Software Components app |
Creating a Software Component
- Open the Manage Software Components Fiori app
- Click Create (or use the
+ button)
- Enter:
- Name: ZMYCOMPONENT - Description: e.g., "My Custom Component" - Type: Development
- Clone the component to make it available in ADT
- Create packages within the component
Package Structure
Z_MY_COMPONENT (Software Component)
└── Z_MY_APP (Structure Package)
├── Z_MY_APP_MODEL (Sub-package: CDS views, database tables)
├── Z_MY_APP_BIZ (Sub-package: business logic, RAP BOs)
└── Z_MY_APP_SRV (Sub-package: service definitions, bindings)
Communication Management
Concepts
| Artifact |
Purpose |
| Communication Scenario |
Template defining inbound/outbound services and auth methods |
| Communication System |
Represents the external system (host, port, credentials) |
| Communication Arrangement |
Binds scenario + system + user, activating the integration |
| Communication User |
Technical user for inbound communication |
Creating a Communication Scenario
"Defined via ADT: New → Other → Communication Scenario
"Name: Z_MY_COMM_SCENARIO
Communication scenario definition (in ADT):
| Property |
Value |
| Scenario ID |
ZMYCOMM_SCENARIO |
| Scenario Type |
Managed by Customer |
| Inbound Services |
List of inbound OData services |
| Outbound Services |
List of outbound HTTP services |
| Allowed Auth Methods |
Basic, OAuth 2.0, x.509 |
Outbound Communication (Calling External Services)
"Get HTTP destination from communication arrangement
DATA(lo_dest) = cl_http_destination_provider=>create_by_comm_arrangement(
comm_scenario = 'Z_MY_COMM_SCENARIO'
service_id = 'Z_MY_OUTBOUND_SERVICE' ).
"Create HTTP client
DATA(lo_client) = cl_web_http_client_manager=>create_by_http_destination( lo_dest ).
"Execute request
DATA(lo_request) = lo_client->get_http_request( ).
lo_request->set_uri_path( '/api/resource' ).
lo_request->set_header_field( i_name = 'Content-Type' i_value = 'application/json' ).
DATA(lo_response) = lo_client->execute( if_web_http_client=>get ).
DATA(lv_status) = lo_response->get_status( ).
DATA(lv_body) = lo_response->get_text( ).
lo_client->close( ).
Inbound Communication (Exposing Services)
- Create an OData service (RAP-based)
- Add the service binding to a communication scenario as inbound service
- Create communication arrangement in Fiori app:
- Select scenario - Create or assign communication system - Create communication user (for Basic auth) or configure OAuth
- External systems can now call the service
Identity and Access Management
Business Roles and Catalogs
IAM App → Business Catalog → Business Role → Business User
- Create IAM App in ADT (for your service binding)
- Create Business Catalog containing the IAM App
- Create Business Role in Fiori including the catalog
- Assign Business Role to users
Creating an IAM App
ADT: New → Other → IAM App
Name: Z_MY_APP_IAM
Service Binding: Z_MY_SERVICE_BINDING
First Project Scaffolding
Quick steps to create a minimal RAP-based Fiori app:
- Create database table
- Create CDS root view entity on the table
- Create CDS projection view (consumption view)
- Create behavior definition (managed, with draft)
- Create behavior implementation class
- Create service definition exposing projection
- Create service binding (OData V4 - UI)
- Publish and Preview in Fiori Elements
Useful Fiori Apps
| App |
Purpose |
| Manage Software Components |
Create, clone, pull software components |
| Communication Arrangements |
Configure inbound/outbound integrations |
| Communication Systems |
Register external systems |
| Maintain Business Roles |
Create and assign roles |
| Application Jobs |
Schedule and monitor background jobs |
| Custom Business Configurations |
Maintain configuration tables |
Output Format
When helping with BTP ABAP Environment topics, structure responses as:
## BTP ABAP Environment Guidance
### Phase
- [Setup / Development / Integration / Deployment]
### Steps
[Step-by-step instructions]
### Configuration
[Relevant settings or code]
References