The challenge every ABAP-on-Azure integration team faces
Developers who have called an Azure REST API from ABAP Cloud will find this familiar. Something simple, like archiving a document to Blob storage or querying the resource estate, means the same plumbing: hand built `if_web_http_client` requests, hand joined URLs, manual OAuth tokens, inline parsing, and retry, logging, and error handling rewritten each time.
In classic ABAP environments, teams relied on the established ABAP SDK for Azure. ABAP Cloud is different: a restricted, released API only model behind SAP Business AI Platform, ABAP environment and S/4HANA Cloud, where many classic patterns are gone, so teams fall back to hand rolled HTTP. That is repetitive, error prone, and hard to unit test, which is the gap this SDK closes.
Introducing the ABAP Cloud SDK for Azure
The ABAP Cloud SDK for Azure is a new open source client library for SAP Business AI Platform, ABAP environment and S/4HANA Cloud. In place of boilerplate, developers get a layered HTTP pipeline, Microsoft Entra ID credentials, typed exceptions, and typed service clients, so developers can write what they mean:
DATA(lo_blob) = NEW zcl_az_blob_client(
iv_account_name=”mystorageacct”
io_credential = lo_credential ).
DATA(lo_blobs) = lo_blob->list_blobs( iv_container=”my-container” ).
No manual HTTP, URL building, or token handling. The runtime handles it.
Built for ABAP Cloud
The project stays within ABAP Cloud's constraints: written entirely in ABAP for Cloud Development and using only released APIs, so it activates cleanly.
How it fits together
The SDK is layered. Each concern stays isolated, testable, and reused across every client.
- HTTP pipeline: an ordered chain of policies for retry, authentication, logging, and transport.
- Credentials: one interface for every credential type, with a token cache for valid tokens.
- Typed exceptions: meaningful SDK errors, not raw status codes.
- Typed models: responses map into ABAP structures, so developers work with fields, not strings.
- Injection seam: every client accepts an optional transport, so tests swap in a double and run offline.
A service client stays thin, and the shape mirrors the official Azure SDKs, so it feels familiar.
Authentication: Entra ID first
Authentication is built around Microsoft Entra ID. Every credential implements the same interface: client secret (service principal), managed identity, an environment credential that reads configuration from a table, and a default credential that chains the available providers.
For Storage Blob access, prefer a User Delegation SAS, a short lived token signed by an Entra ID identity with no account key, then a direct Entra ID credential. Plain SAS and Shared Key stay supported, but not recommended.
Recommended: Blob access with a User Delegation SAS
An Entra ID identity signs the SAS, and the blob client uses it with no account key:
DATA(lo_credential) = NEW zcl_az_client_secret_cred( ” a Microsoft Entra ID identity
iv_client_id = ‘<client-id>'
iv_client_secret=”<client-secret>”
iv_tenant_id = ‘<tenant-id>' ).
DATA(lo_udk) = NEW zcl_az_blob_udk_sas(
iv_account_name=”<storage-account>”
io_credential = lo_credential ).
DATA(lo_blob) = lo_udk->create_blob_client(
iv_container=”<container>”
iv_permissions=”rl”
iv_start=”2026-07-24T00:00:00Z”
iv_expiry = ‘2026-07-25T00:00:00Z' ).
DATA(lo_result) = lo_blob->list_blobs( iv_container=”<container>” ).
What is included in the first release?
Three service clients ship:
- Storage Blob: list containers and blobs, upload, and download, binary safe.
- Compute: virtual machines, scale sets, images, and hosts, with actions like start, deallocate, and restart.
- Resource Graph: run KQL queries, typed result back.
DATA(lo_rg) = NEW zcl_az_resourcegraph_client( io_credential = lo_credential ).
DATA(lo_result) = lo_rg->query_resources(
iv_query = `Resources | project name, type, location | limit 5`
it_subscriptions = VALUE #( ( ‘<subscription-id>' ) ) ).
Getting started
Developers will need an SAP Business AI Platform, ABAP environment or S/4HANA Cloud system with ABAP for Cloud Development, a Microsoft Entra ID identity (for example a service principal) with the right Azure RBAC roles, and access to the target Azure resources. Clone and import with abapGit: the code sits under a hierarchy rooted at `ZABAP_SDK_AZURE`. Assign the root package to the parent package, then activate.
The `ZABAP_AZ_DEMO` package adds three self contained demo classes, one per service, each an `if_oo_adt_classrun` class developers run with F9. Swap in the relevant values and run it; the blob demo shows the whole stack. Real credentials should be kept out of commits.
Built with testing in mind
The SDK ships with ABAP Unit test methods, all `RISK LEVEL HARMLESS DURATION SHORT` (no network), plus self skipping integration tests for live verification. Clients accept a test double, so each test checks the exact request on the wire and how a canned response is parsed. Core and every service client are covered.
What this means for SAP teams
- Less boilerplate, faster delivery: Development teams can connect ABAP Cloud applications to Azure services more quickly and spend less time building infrastructure code from scratch.
- Familiar developer experience: The SDK follows the same concepts used across the official Azure SDK ecosystem.
- Cloud-ready and compliant: The SDK is ABAP Cloud compliant and designed for SAP Business AI Platform, ABAP environment and SAP S/4HANA Cloud, making it a natural companion to the classic ABAP SDK for Azure.
- Secure by default: Microsoft Entra ID is the preferred authentication model, with User Delegation SAS recommended for Azure Storage scenarios.
Looking ahead
This is just the beginning. The runtime is ready to grow to more Azure services, and which come next depends on community needs.
The SDK was created to help ABAP developers and integration teams build secure, maintainable connections between SAP and Azure with less effort. As more teams adopt it, community feedback and real-world business scenarios will help shape future service support and capabilities.
If there is an Azure service or integration scenario that matters to your team, we would love to hear from you. Open an issue, start a discussion on GitHub, and help influence the roadmap.
Repository: https://github.com/Azure/ABAP-Cloud-SDK-for-Azure

