Help us improve
Share bugs, ideas, or general feedback.
Guides ABAP Cloud development: 3-tier extensibility model, language version restrictions, wrapper patterns for unreleased APIs, and clean core principles.
npx claudepluginhub likweitan/abap-skills --plugin sap-fiori-url-generatorHow this skill is triggered — by the user, by Claude, or both
Slash command
/sap-fiori-url-generator:abap-cloudThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
Guide for developing with the ABAP Cloud programming model, understanding the 3-tier extensibility model, and applying clean core principles.
Migrates classic ABAP custom code to ABAP Cloud with ATC readiness checks, API replacements, and wrapper generation for unreleased objects.
Assists with ABAP code for SAP systems: internal tables, structures, ABAP SQL, OOP, RAP, CDS views, EML statements, ABAP Cloud, strings, dynamic programming, RTTI/RTTC, field symbols, data references, exceptions, unit testing.
Guides development of business apps on SAP BTP using CAP (Node.js/Java) or ABAP Cloud, for Cloud Foundry/Kyma deployments, HANA integration, Fiori UIs, CI/CD pipelines, and observability.
Share bugs, ideas, or general feedback.
Guide for developing with the ABAP Cloud programming model, understanding the 3-tier extensibility model, and applying clean core principles.
Determine the user's context:
Identify the extensibility tier:
Guide implementation using clean core principles
| Language Version | Scope | Available In |
|---|---|---|
| ABAP for Cloud Development | Only released APIs and objects; restricted syntax; no SAP GUI | BTP ABAP Environment, S/4HANA (embedded Steampunk) |
| Standard ABAP | Full ABAP syntax; all repository objects accessible | On-premise, private cloud |
CALL TRANSACTION, SUBMIT, AUTHORITY-CHECK (use CL_ABAP_AUTHORIZATION instead)EXEC SQL or native SQL (use ABAP SQL or AMDP)INCLUDE programsWRITE or classic list outputif_oo_adt_classrun for console output"Example: Tier 2 class using only released APIs
CLASS zcl_my_extension DEFINITION
PUBLIC FINAL CREATE PUBLIC.
PUBLIC SECTION.
INTERFACES if_oo_adt_classrun.
ENDCLASS.
CLASS zcl_my_extension IMPLEMENTATION.
METHOD if_oo_adt_classrun~main.
"Only released CDS views — no direct table access
SELECT FROM I_BusinessPartner
FIELDS BusinessPartner, BusinessPartnerName
INTO TABLE @DATA(partners)
UP TO 10 ROWS.
out->write( partners ).
ENDMETHOD.
ENDCLASS.
When a needed API is not released (Level B/C), create a wrapper in Tier 3 that exposes the functionality via a released interface consumable from Tier 2.
"Tier 3: Wrapper class (Standard ABAP language version)
"Released with C1 contract for use from Tier 2
CLASS zcl_wrapper_material DEFINITION
PUBLIC FINAL CREATE PUBLIC.
PUBLIC SECTION.
INTERFACES zif_material_reader.
"Set as released API with C1 contract in ADT
ENDCLASS.
CLASS zcl_wrapper_material IMPLEMENTATION.
METHOD zif_material_reader~get_material.
"Access unreleased API internally
SELECT SINGLE * FROM mara
WHERE matnr = @iv_matnr
INTO @DATA(ls_mara).
"Map to released structure
rs_material = VALUE #(
matnr = ls_mara-matnr
mtart = ls_mara-mtart
matkl = ls_mara-matkl ).
ENDMETHOD.
ENDCLASS.
"Tier 2 consumer calls released RFC wrapper
DATA(lo_dest) = cl_rfc_destination_provider=>create_by_comm_arrangement(
comm_scenario = 'Z_MY_COMM_SCENARIO'
service_id = 'Z_MY_OUTBOUND_SRV' ).
CALL FUNCTION 'Z_WRAPPER_FM'
DESTINATION lo_dest->get_destination_name( )
EXPORTING iv_param = lv_value
IMPORTING ev_result = lv_result.
| Method | Description |
|---|---|
| ADT: Released Object Search | In ADT, search with api: prefix (e.g., api:cl_*) |
| Cloudification API Viewer | Browse at https://sap.github.io/abap-atc-cr-cv-s4hc/ |
| ATC Cloud Readiness Check | Run ATC checks to identify unreleased API usage |
| Released ABAP Classes skill | Use released-abap-classes skill for common released classes |
| XCO Library | XCO_CP_* classes provide cloud-ready alternatives |
| Unreleased (Classic) | Released Alternative (ABAP Cloud) |
|---|---|
AUTHORITY-CHECK | CL_ABAP_AUTHORIZATION=>check_authorization() |
sy-uname | cl_abap_context_info=>get_user_technical_name() |
sy-datum / sy-uzeit | cl_abap_context_info=>get_system_date/time() |
cl_gui_frontend_services | Not available — use Fiori UI instead |
CALL TRANSACTION | RAP action or Fiori navigation |
SUBMIT ... AND RETURN | Background job via CL_APJ_RT_API |
Direct SAP table SELECT | Use released CDS view (I_* views) |
CONVERSION_EXIT_* | CL_ABAP_CONV_CODEPAGE, domain fixed values |
BAPI_* function modules | Released APIs or RAP BO consumption |
Classic MESSAGE statement | RAP messages via REPORTED |
When helping with ABAP Cloud / clean core topics, structure responses as:
## ABAP Cloud Guidance
### Context
- Extensibility tier: [Tier 1/2/3]
- Language version: [ABAP for Cloud Development / Standard ABAP]
- Target platform: [BTP / S/4HANA embedded / on-premise]
### Recommendation
[Guidance on the approach]
### Code Example
[ABAP code following clean core principles]
### Released API References
- [List of relevant released APIs used]