Now accepting guest editorial from SAP, Oracle, Workday and ServiceNow practitioners.Pitch a guide
The Sign-Off Table

Lesson 4 of 5

Handling gaps when no released API exists

10 min

Listen to this lesson

0:00 / 8:12

Sooner or later, a requirement needs something SAP has not released. The worst response is a quiet workaround: a direct table read in a classic include, a copied function module, a modification. The right response is a short, documented decision that picks the cleanest option available and records the risk. In SAP's 2025 level model, that decision is really a choice of level.

  1. Is there a released API or a successor that meets the need?Yes → use it (Level A) · No → continue
  2. Can the need be met side-by-side through a released remote API or event?Yes → build on SAP BTP (Level A) · No → continue
  3. Is there a documented classic API, such as a BAPI, that SAP lists as classic?Yes → use it in classic code, ideally behind a wrapper (Level B) · No → continue
  4. Is reading an SAP internal object unavoidable?Yes → Level C with approval, isolation and a review date · No → rethink the requirement
  5. Would it need a modification or writes to SAP tables?Yes → Level D: do not proceed without architecture board approval
A gap decision path aligned with SAP’s clean core levels.
The Sign-Off Table · thesignofftable.com/academy/sap-abp-203

Option 1: look harder, and ask SAP

Check the Released Objects tree, the Business Accelerator Hub for your product, and the Cloudification Repository viewer, including successors of deprecated objects. If nothing exists, request it: SAP's cheat sheet points to the SAP Customer Influence campaigns for requesting new released APIs, and the Cloudification Repository README says new API requests go through SAP's influence channels. A request does not solve today's problem, but it records the gap and may remove it in a later release.

Option 2: use a classic API, wrapped

In Private Edition and on-premise, classic code may call documented classic APIs such as BAPIs. SAP's earlier three-tier model described a wrapper: a small class in a classic (Standard ABAP) package that calls the classic API, offers a clean interface and is released with contract C1 so ABAP Cloud code can call it. SAP's Learning content on converted systems still describes replacing classical code with cloud-ready APIs or a custom wrapper where no released API exists. Under the 2025 levels, SAP now classifies such classic API usage as Level B, and the Cloudification Repository publishes a classic API list for Private Edition that ATC can use, including labels for APIs suited to wrapping in transactional contexts.

A wrapper lets ABAP Cloud code use a classic BAPI through a small released class, keeping the Level B dependency in one place.
The Sign-Off Table · thesignofftable.com/academy/sap-abp-203
Contoso needReleased API found?DecisionLevel
Read customer and product data for depositsYes: released CDS viewsUse them directly in ZCMC_CLOUDA
Create a credit memo request when a core is returnedChecked the Business Accelerator Hub for the 2025 releaseIf none fits: wrap a documented sales document BAPI in a classic class released as C1B
Read a pricing detail SAP has not releasedNo, and no classic APIIsolated read in one classic class, approved, review each releaseC
Change a standard sales screenNot applicableRejected; use a key user adaptation or Fiori extension insteadWould be D

How Contoso’s architect recorded four gap decisions (illustrative).

Option 3: accept internal access consciously

Sometimes only an internal object will do. SAP's Level C exists for that, mainly for legacy scenarios, with SAP's changelog for SAP objects to spot changes before an upgrade. If you go there, isolate the access in one small class, document why, add unit tests around it, and review it at every upgrade. Level D, modifications and writes to SAP tables, should not be a developer's decision at all.

When only an internal object will do, every caller goes through one small, tested class, so an SAP change breaks one place, not many.
The Sign-Off Table · thesignofftable.com/academy/sap-abp-203
  1. Developer finds a gapStates the need and the APIs checked
  2. Architect decidesChooses the option and the level
  3. RecordDecision, level, owner and review date in the change record
  4. RequestCustomer Influence request where an API is missing
  5. ReviewAt each upgrade: has a released API appeared? Lift the level
A lightweight governance loop for API gaps.
The Sign-Off Table · thesignofftable.com/academy/sap-abp-203

What would you do?

Under deadline pressure, a developer wants to read an unreleased SAP table directly from ABAP Cloud code. The syntax check blocks it, so he proposes moving the whole deposit app to a classic package. What should Kenji do?

Key points
  • Treat an API gap as a documented decision, not a quiet workaround.
  • First look for a released API or successor, and request missing ones through SAP Customer Influence.
  • Classic APIs such as BAPIs are Level B; wrap them behind a clean, released interface.
  • Internal object access is Level C: isolate, test, approve, review each upgrade.
  • Modifications and writes to SAP tables are Level D and need architecture approval.

Check your understanding · not graded

Lesson check

  1. 1. Where does SAP direct requests for new released APIs?

  2. 2. What is a wrapper in the sense of SAP’s earlier tier model?

  3. 3. Under SAP’s 2025 levels, how is usage of a classic API such as a BAPI classified?

  4. 4. What should accompany unavoidable access to an SAP internal object?