All skills
secondsky avatar

/sap-btp-developer-guide

@620a19a
by Eddiesecondsky/sap-skills456 stars
120

Develops business applications on SAP Business Technology Platform (BTP) using CAP (Node.js/Java) or ABAP Cloud. Use when: building cloud applications on SAP BTP, deploying to Cloud Foundry or Kyma runtimes, integrating with SAP HANA Cloud, implementing SAP Fiori UIs, connecting to remote SAP systems, building multitenant SaaS applications, extending SAP S/4HANA or SuccessFactors, setting up CI/CD pipelines, implementing observability, or following SAP development best practices. Keywords: SAP BTP, Business Technology Platform, CAP, Cloud Application Programming Model, ABAP Cloud, Cloud Foundry, Kyma, SAP HANA Cloud, SAP Fiori, SAPUI5, CI/CD, observability, multitenant, SaaS, SAP BTP ABAP environment, SAP Business Application Studio, SAP Cloud SDK, SAP Integration Suite, SAP Event Mesh, SAP Connectivity Service, SAP Destination Service, XSUAA, OAuth, OpenID Connect, OData, CDS, Core Data Services, ABAP CDS, ABAP RESTful Application Programming Model, RAP, ABAP development, SAP BTP development

Use this Skill: https://skilld.dev/gh/secondsky/sap-skills/sap-btp-developer-guide

This session only. Nothing lands on disk.

referencessetup.md

≈1.9k tokens on demand. Your agent reads this file only when SKILL.md points to it.

SAP BTP Setup Reference

Overview

Setting up SAP BTP landscape is an administrative task that involves configuring account structures, users, and infrastructure automation.

Account Model

Hierarchy

Global Account
├── Directory (optional)
│   ├── Subaccount (DEV)
│   ├── Subaccount (QA)
│   └── Subaccount (PROD)
└── Subaccount (Shared Services)

Subaccount Configuration

Each subaccount can have:

  • Cloud Foundry environment
  • Kyma environment
  • ABAP environment
  • Service instances
  • Role assignments

User Types

Platform Users

Role: Developers, administrators, operators

Responsibilities:

  • Application deployment
  • System administration
  • Troubleshooting
  • Operations

Access: Subaccounts, services, runtimes

Business Users

Role: End users of applications

Access: Deployed applications, SaaS services

Terraform Provider for SAP BTP

Overview

Purpose: Automate provisioning, management, and configuration

Benefits:

  • Infrastructure as code
  • Reproducible deployments
  • Version-controlled configuration
  • CI/CD integration

Installation

# main.tf
terraform {
  required_providers {
    btp = {
      source  = "SAP/btp"
      version = "~> 1.0"
    }
  }
}

provider "btp" {
  globalaccount = var.globalaccount
}

Common Resources

Subaccount
resource "btp_subaccount" "dev" {
  name      = "development"
  subdomain = "dev-${var.org_id}"
  region    = "eu10"
  labels = {
    environment = "development"
  }
}
Entitlements
resource "btp_subaccount_entitlement" "hana" {
  subaccount_id = btp_subaccount.dev.id
  service_name  = "hana-cloud"
  plan_name     = "hana"
  amount        = 1
}

resource "btp_subaccount_entitlement" "cf" {
  subaccount_id = btp_subaccount.dev.id
  service_name  = "APPLICATION_RUNTIME"
  plan_name     = "MEMORY"
}
Service Instances
resource "btp_subaccount_service_instance" "xsuaa" {
  subaccount_id  = btp_subaccount.dev.id
  name           = "my-xsuaa"
  serviceplan_id = data.btp_subaccount_service_plan.xsuaa.id
  parameters = jsonencode({
    xsappname   = "my-app"
    tenant-mode = "dedicated"
  })
}
Role Collections
resource "btp_subaccount_role_collection_assignment" "admin" {
  subaccount_id        = btp_subaccount.dev.id
  role_collection_name = "Subaccount Administrator"
  user_name           = "admin@example.com"
}

Complete Example

# variables.tf
variable "globalaccount" {
  description = "Global account subdomain"
  type        = string
}

variable "region" {
  description = "BTP region"
  type        = string
  default     = "eu10"
}

variable "admins" {
  description = "List of admin users"
  type        = list(string)
}

# main.tf
terraform {
  required_providers {
    btp = {
      source  = "SAP/btp"
      version = "~> 1.0"
    }
  }
}

provider "btp" {
  globalaccount = var.globalaccount
}

# Development subaccount
resource "btp_subaccount" "dev" {
  name      = "Development"
  subdomain = "dev-myorg"
  region    = var.region
}

# Enable Cloud Foundry
resource "btp_subaccount_entitlement" "cf" {
  subaccount_id = btp_subaccount.dev.id
  service_name  = "APPLICATION_RUNTIME"
  plan_name     = "MEMORY"
}

resource "btp_subaccount_environment_instance" "cf" {
  subaccount_id    = btp_subaccount.dev.id
  name             = "cf-dev"
  environment_type = "cloudfoundry"
  service_name     = "cloudfoundry"
  plan_name        = "standard"
  parameters = jsonencode({
    instance_name = "cf-dev"
  })
}

# HANA Cloud
resource "btp_subaccount_entitlement" "hana" {
  subaccount_id = btp_subaccount.dev.id
  service_name  = "hana-cloud"
  plan_name     = "hana"
  amount        = 1
}

# Admin role assignment
resource "btp_subaccount_role_collection_assignment" "admins" {
  for_each = toset(var.admins)

  subaccount_id        = btp_subaccount.dev.id
  role_collection_name = "Subaccount Administrator"
  user_name           = each.value
}

# outputs.tf
output "subaccount_id" {
  value = btp_subaccount.dev.id
}

output "cf_api_endpoint" {
  value = btp_subaccount_environment_instance.cf.labels["API Endpoint"]
}

Terraform Commands

# Initialize
terraform init

# Plan changes
terraform plan -var-file="dev.tfvars"

# Apply changes
terraform apply -var-file="dev.tfvars"

# Destroy resources
terraform destroy -var-file="dev.tfvars"

Manual Setup Steps

1. Global Account Configuration

  1. Access SAP BTP Cockpit
  2. Navigate to Global Account
  3. Configure directories (optional)
  4. Set up entitlements

2. Subaccount Creation

  1. Click "Create Subaccount"
  2. Specify name and subdomain
  3. Select region
  4. Configure labels
  5. Enable environments

3. Entitlement Assignment

  1. Navigate to Entitlements
  2. Configure Service Assignments
  3. Set quotas per service
  4. Assign to subaccounts

4. User Management

  1. Navigate to Security > Users
  2. Add users by email
  3. Assign role collections
  4. Configure IdP trust (optional)

ABAP System Landscape Setup

Recommended Landscapes

Start with only needed systems. Additional systems can be provisioned later.

3-System Landscape (DEV, QAS, PRD)

  • Recommended for most projects
  • Suitable when development is occasional or release cycles are less frequent
  • Enables testing outside development
  • Verifies application behavior before production

5-System Landscape (DEV, COR, TST, QAS, PRD)

  • Appropriate for larger teams with continuous development
  • Enables parallel correction handling
  • Supports uninterrupted development work

Sizing Specifications

Production Capacity:

  • 1 ACU can serve up to 1,000 active business users per day

Recommended Minimum Starting Configuration:

Resource Size Memory
ABAP Compute Units (ACU) 1 16 GB
HANA Compute Units (HCU) 2 32 GB total

Scaling Options:

  • Manual scaling via SAP BTP Cockpit
  • Automatic runtime scaling (Release 2402+) requires consumption-based contract

Cost Optimization:

  • Use system hibernation for DEV, COR, TST systems during inactive periods
  • Reduces costs significantly when systems not in use

Best Practices

Account Structure

Environment Purpose Entitlements
Development Development work Full entitlements
QA/Test Testing Production-like
Production Live workloads Production quotas
Sandbox Experimentation Minimal

Security

  1. Least privilege - Minimal necessary permissions
  2. Separation of duties - Different roles for different tasks
  3. Audit logging - Enable for compliance
  4. IdP integration - Use corporate identity

Automation

  1. Use Terraform for reproducibility
  2. Version control configurations
  3. CI/CD integration for changes
  4. Document manual steps

Source Documentation

Source: SKILL.md on GitHub

1 alert17d5 checks · Risk SAFE
  • Gen Agent Trust Hub17d

    The skill provides comprehensive guidance for SAP BTP development. It includes standard instructions for installing and using platform tools. A low-risk surface for indirect prompt injection exists because the skill analyzes project files to provide readiness reviews.

  • Socket17d

    No alerts

  • Snyk17d

    Risk: LOW · No issues

  • Runlayer6mo

    8/24 files flagged

  • ZeroLeaks5mo

    Score: 93/100 · 2 sections analyzed

Signed by skilld at 620a19a. This ties the file your Agent reads to that commit on GitHub. It does not review the instructions.

Last checked against GitHub 2 weeks ago.

Activeupdated 2 months ago
Other metadata
metadata
{
  "maintainer": "Eduard Jiglau",
  "maintainer_email": "hello@sap-ai-skills.com",
  "website": "https://sap-ai-skills.com",
  "version": "2.4.1",
  "last_verified": "2025-11-27",
  "source_last_updated": "2025-11-21",
  "review_status": "Complete - Phase 1-14 audit"
}

README badge

README badge for secondsky/sap-skills/sap-btp-developer-guide