Guides ABAP Cloud development: 3-tier extensibility model, language version restrictions, wrapper patterns for unreleased APIs, and clean core principles.
How 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.
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]
npx claudepluginhub likweitan/abap-skills --plugin sap-fiori-url-generatorMigrates 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.
Audits a SAP ABAP package and classifies every Z/Y object into Clean Core Levels A–D based on API usage, producing a cloud-readiness report.