{"id":"5e5ab328-50ac-4f16-8552-3aa52eaf16c5","shortId":"Xe8qHA","kind":"skill","title":"abap-cloud","tagline":"Help with ABAP Cloud development including the 3-tier extensibility model, ABAP Cloud language version restrictions, wrapper patterns for unreleased APIs, clean core principles, and key user vs developer extensibility. Use when users ask about ABAP Cloud, ABAP for Cloud Developme","description":"# ABAP Cloud / Clean Core\n\nGuide for developing with the ABAP Cloud programming model, understanding the 3-tier extensibility model, and applying clean core principles.\n\n## Workflow\n\n1. **Determine the user's context**:\n   - Understanding ABAP Cloud concepts and restrictions\n   - Choosing the right extensibility tier\n   - Wrapping unreleased APIs for use in ABAP Cloud\n   - Identifying released API alternatives\n   - Setting up clean core-compliant development\n\n2. **Identify the extensibility tier**:\n   - Tier 1: Key user extensibility (no code)\n   - Tier 2: Developer extensibility (ABAP Cloud / ABAP for Cloud Development)\n   - Tier 3: Classic extensibility (standard ABAP, only on-premise/private cloud)\n\n3. **Guide implementation** using clean core principles\n\n## ABAP Language Versions\n\n| Language Version               | Scope                                                         | Available In                                       |\n| ------------------------------ | ------------------------------------------------------------- | -------------------------------------------------- |\n| **ABAP for Cloud Development** | Only released APIs and objects; restricted syntax; no SAP GUI | BTP ABAP Environment, S/4HANA (embedded Steampunk) |\n| **Standard ABAP**              | Full ABAP syntax; all repository objects accessible           | On-premise, private cloud                          |\n\n### Key Restrictions in ABAP for Cloud Development\n\n- Only released SAP APIs (C1 contract) can be used\n- No direct database table access for SAP tables (use released CDS views instead)\n- No classic dynpro, selection screens, or SAP GUI-dependent statements\n- No `CALL TRANSACTION`, `SUBMIT`, `AUTHORITY-CHECK` (use `CL_ABAP_AUTHORIZATION` instead)\n- No classic BAdIs or user exits\n- No `EXEC SQL` or native SQL (use ABAP SQL or AMDP)\n- No function modules (except released RFC-enabled ones)\n- No `INCLUDE` programs\n- No `WRITE` or classic list output\n- Must use `if_oo_adt_classrun` for console output\n\n## 3-Tier Extensibility Model\n\n### Tier 1 — Key User Extensibility (No Code)\n\n- Custom fields and logic via SAP Fiori UIs\n- Custom CDS views (basic)\n- Custom business objects (simple)\n- Custom analytical queries\n- No ABAP development required\n\n### Tier 2 — Developer Extensibility (ABAP Cloud)\n\n- ABAP for Cloud Development language version\n- Only released APIs with stability contracts\n- RAP-based business objects\n- Side-by-side or embedded development\n- Full lifecycle management via ADT\n\n```abap\n\"Example: Tier 2 class using only released APIs\nCLASS zcl_my_extension DEFINITION\n  PUBLIC FINAL CREATE PUBLIC.\n  PUBLIC SECTION.\n    INTERFACES if_oo_adt_classrun.\nENDCLASS.\n\nCLASS zcl_my_extension IMPLEMENTATION.\n  METHOD if_oo_adt_classrun~main.\n    \"Only released CDS views — no direct table access\n    SELECT FROM I_BusinessPartner\n      FIELDS BusinessPartner, BusinessPartnerName\n      INTO TABLE @DATA(partners)\n      UP TO 10 ROWS.\n    out->write( partners ).\n  ENDMETHOD.\nENDCLASS.\n```\n\n### Tier 3 — Classic Extensibility (Standard ABAP)\n\n- Full ABAP language scope\n- Access to all repository objects\n- Classic enhancement points, BAdIs, user exits\n- Only available on-premise or private cloud\n- Not recommended for new cloud-ready development\n\n## Wrapper Pattern\n\nWhen 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.\n\n### Wrapper Class Pattern\n\n```abap\n\"Tier 3: Wrapper class (Standard ABAP language version)\n\"Released with C1 contract for use from Tier 2\nCLASS zcl_wrapper_material DEFINITION\n  PUBLIC FINAL CREATE PUBLIC.\n  PUBLIC SECTION.\n    INTERFACES zif_material_reader.\n    \"Set as released API with C1 contract in ADT\nENDCLASS.\n\nCLASS zcl_wrapper_material IMPLEMENTATION.\n  METHOD zif_material_reader~get_material.\n    \"Access unreleased API internally\n    SELECT SINGLE * FROM mara\n      WHERE matnr = @iv_matnr\n      INTO @DATA(ls_mara).\n    \"Map to released structure\n    rs_material = VALUE #(\n      matnr = ls_mara-matnr\n      mtart = ls_mara-mtart\n      matkl = ls_mara-matkl ).\n  ENDMETHOD.\nENDCLASS.\n```\n\n### Wrapper via RFC Proxy (Remote Tier 2 to Tier 3)\n\n```abap\n\"Tier 2 consumer calls released RFC wrapper\nDATA(lo_dest) = cl_rfc_destination_provider=>create_by_comm_arrangement(\n  comm_scenario  = 'Z_MY_COMM_SCENARIO'\n  service_id     = 'Z_MY_OUTBOUND_SRV' ).\n\nCALL FUNCTION 'Z_WRAPPER_FM'\n  DESTINATION lo_dest->get_destination_name( )\n  EXPORTING iv_param = lv_value\n  IMPORTING ev_result = lv_result.\n```\n\n## Released API Discovery\n\n| Method                          | Description                                                   |\n| ------------------------------- | ------------------------------------------------------------- |\n| **ADT: Released Object Search** | In ADT, search with `api:` prefix (e.g., `api:cl_*`)          |\n| **Cloudification API Viewer**   | Browse at https://sap.github.io/abap-atc-cr-cv-s4hc/          |\n| **ATC Cloud Readiness Check**   | Run ATC checks to identify unreleased API usage               |\n| **Released ABAP Classes skill** | Use `released-abap-classes` skill for common released classes |\n| **XCO Library**                 | `XCO_CP_*` classes provide cloud-ready alternatives           |\n\n## Common Unreleased → Released Replacements\n\n| Unreleased (Classic)        | Released Alternative (ABAP Cloud)                 |\n| --------------------------- | ------------------------------------------------- |\n| `AUTHORITY-CHECK`           | `CL_ABAP_AUTHORIZATION=>check_authorization()`    |\n| `sy-uname`                  | `cl_abap_context_info=>get_user_technical_name()` |\n| `sy-datum` / `sy-uzeit`     | `cl_abap_context_info=>get_system_date/time()`    |\n| `cl_gui_frontend_services`  | Not available — use Fiori UI instead              |\n| `CALL TRANSACTION`          | RAP action or Fiori navigation                    |\n| `SUBMIT ... AND RETURN`     | Background job via `CL_APJ_RT_API`                |\n| Direct SAP table `SELECT`   | Use released CDS view (I\\_\\* views)               |\n| `CONVERSION_EXIT_*`         | `CL_ABAP_CONV_CODEPAGE`, domain fixed values      |\n| `BAPI_*` function modules   | Released APIs or RAP BO consumption               |\n| Classic `MESSAGE` statement | RAP messages via `REPORTED`                       |\n\n## Output Format\n\nWhen helping with ABAP Cloud / clean core topics, structure responses as:\n\n```markdown\n## ABAP Cloud Guidance\n\n### Context\n\n- Extensibility tier: [Tier 1/2/3]\n- Language version: [ABAP for Cloud Development / Standard ABAP]\n- Target platform: [BTP / S/4HANA embedded / on-premise]\n\n### Recommendation\n\n[Guidance on the approach]\n\n### Code Example\n\n[ABAP code following clean core principles]\n\n### Released API References\n\n- [List of relevant released APIs used]\n```\n\n## References\n\n- SAP Cloudification Repository: https://github.com/SAP/abap-atc-cr-cv-s4hc\n- ABAP Cloud Cheat Sheet: https://github.com/SAP-samples/abap-cheat-sheets\n- Clean Core Guidelines: https://help.sap.com/docs/abap-cloud","tags":["abap","cloud","skills","likweitan","agent-skills","sap"],"capabilities":["skill","source-likweitan","skill-abap-cloud","topic-abap","topic-agent-skills","topic-sap"],"categories":["abap-skills"],"synonyms":[],"warnings":[],"endpointUrl":"https://skills.sh/likweitan/abap-skills/abap-cloud","protocol":"skill","transport":"skills-sh","auth":{"type":"none","details":{"cli":"npx skills add likweitan/abap-skills","source_repo":"https://github.com/likweitan/abap-skills","install_from":"skills.sh"}},"qualityScore":"0.456","qualityRationale":"deterministic score 0.46 from registry signals: · indexed on github topic:agent-skills · 12 github stars · SKILL.md body (7,046 chars)","verified":false,"liveness":"unknown","lastLivenessCheck":null,"agentReviews":{"count":0,"score_avg":null,"cost_usd_avg":null,"success_rate":null,"latency_p50_ms":null,"narrative_summary":null,"summary_updated_at":null},"enrichmentModel":"deterministic:skill-github:v1","enrichmentVersion":1,"enrichedAt":"2026-04-24T01:03:15.684Z","embedding":null,"createdAt":"2026-04-23T13:03:44.288Z","updatedAt":"2026-04-24T01:03:15.684Z","lastSeenAt":"2026-04-24T01:03:15.684Z","tsv":"'/abap-atc-cr-cv-s4hc/':668 '/docs/abap-cloud':888 '/private':138 '/sap-samples/abap-cheat-sheets':882 '/sap/abap-atc-cr-cv-s4hc':875 '1':70,112,290 '1/2/3':830 '10':412 '2':106,119,320,357,484,505,587,593 '3':11,60,129,140,285,420,472,490,590 'abap':2,6,15,39,41,45,54,77,93,122,124,133,147,155,170,176,178,192,238,254,316,323,325,354,424,426,488,494,591,682,688,713,719,727,741,787,814,823,833,838,854,876 'abap-cloud':1 'access':183,209,398,429,541 'action':760 'adt':280,353,377,388,529,648,653 'altern':98,704,712 'amdp':257 'analyt':313 'api':24,89,97,161,199,333,362,461,524,543,644,656,659,662,679,773,797,861,867 'apj':771 'appli':65 'approach':851 'arrang':609 'ask':37 'atc':669,674 'author':234,239,716,720,722 'authority-check':233,715 'avail':153,441,752 'b/c':466 'background':767 'badi':243,437 'bapi':793 'base':339 'basic':307 'bo':800 'brows':664 'btp':169,841 'busi':309,340 'businesspartn':402,404 'businesspartnernam':405 'c1':200,499,526 'call':230,595,622,757 'cds':215,305,393,780 'cheat':878 'check':235,672,675,717,721 'choos':82 'cl':237,602,660,718,726,740,747,770,786 'class':358,363,380,486,492,506,531,683,689,694,699 'classic':130,219,242,273,421,434,710,802 'classrun':281,378,389 'clean':25,47,66,101,144,816,857,883 'cloud':3,7,16,40,43,46,55,78,94,123,126,139,157,188,194,324,327,447,453,670,702,714,815,824,835,877 'cloud-readi':452,701 'cloudif':661,871 'code':117,295,852,855 'codepag':789 'comm':608,610,614 'common':692,705 'compliant':104 'concept':79 'consol':283 'consum':481,594 'consumpt':801 'context':75,728,742,826 'contract':201,336,500,527 'conv':788 'convers':784 'core':26,48,67,103,145,817,858,884 'core-compli':102 'cp':698 'creat':370,467,513,606 'custom':296,304,308,312 'data':408,554,599 'databas':207 'date/time':746 'datum':736 'definit':367,510 'depend':227 'descript':647 'dest':601,629 'destin':604,627,631 'determin':71 'develop':8,32,51,105,120,127,158,195,317,321,328,348,455,836 'developm':44 'direct':206,396,774 'discoveri':645 'domain':790 'dynpro':220 'e.g':658 'embed':173,347,843 'enabl':265 'endclass':379,418,530,580 'endmethod':417,579 'enhanc':435 'environ':171 'ev':639 'exampl':355,853 'except':261 'exec':248 'exit':246,439,785 'export':633 'expos':474 'extens':13,33,62,85,109,115,121,131,287,293,322,366,383,422,827 'field':297,403 'final':369,512 'fiori':302,754,762 'fix':791 'fm':626 'follow':856 'format':810 'frontend':749 'full':177,349,425 'function':259,476,623,794 'get':630,730,744 'github.com':874,881 'github.com/sap-samples/abap-cheat-sheets':880 'github.com/sap/abap-atc-cr-cv-s4hc':873 'gui':168,226,748 'gui-depend':225 'guid':49,141 'guidanc':825,848 'guidelin':885 'help':4,812 'help.sap.com':887 'help.sap.com/docs/abap-cloud':886 'id':617 'identifi':95,107,677 'implement':142,384,535 'import':638 'includ':9,268 'info':729,743 'instead':217,240,756 'interfac':374,480,517 'intern':544 'iv':551,634 'job':768 'key':29,113,189,291 'languag':17,148,150,329,427,495,831 'level':465 'librari':696 'lifecycl':350 'list':274,863 'lo':600,628 'logic':299 'ls':555,565,570,575 'lv':636,641 'manag':351 'map':557 'mara':548,556,567,572,577 'mara-matkl':576 'mara-matnr':566 'mara-mtart':571 'markdown':822 'materi':509,519,534,538,562 'matkl':574,578 'matnr':550,552,564,568 'messag':803,806 'method':385,536,646 'model':14,57,63,288 'modul':260,795 'mtart':569,573 'must':276 'name':632,733 'nativ':251 'navig':763 'need':460 'new':451 'object':163,182,310,341,433,650 'on-premis':135,184,442,844 'one':266 'oo':279,376,387 'outbound':620 'output':275,284,809 'param':635 'partner':409,416 'pattern':21,457,487 'platform':840 'point':436 'prefix':657 'premis':137,186,444,846 'principl':27,68,146,859 'privat':187,446 'program':56,269 'provid':605,700 'proxi':584 'public':368,371,372,511,514,515 'queri':314 'rap':338,759,799,805 'rap-bas':337 'reader':520,539 'readi':454,671,703 'recommend':449,847 'refer':862,869 'releas':96,160,197,214,262,332,361,392,464,479,497,523,559,596,643,649,681,687,693,707,711,779,796,860,866 'released-abap-class':686 'relev':865 'remot':585 'replac':708 'report':808 'repositori':181,432,872 'requir':318 'respons':820 'restrict':19,81,164,190 'result':640,642 'return':766 'rfc':264,583,597,603 'rfc-enabl':263 'right':84 'row':413 'rs':561 'rt':772 'run':673 's/4hana':172,842 'sap':167,198,211,224,301,775,870 'sap.github.io':667 'sap.github.io/abap-atc-cr-cv-s4hc/':666 'scenario':611,615 'scope':152,428 'screen':222 'search':651,654 'section':373,516 'select':221,399,545,777 'servic':616,750 'set':99,521 'sheet':879 'side':343,345 'side-by-sid':342 'simpl':311 'singl':546 'skill':684,690 'skill-abap-cloud' 'source-likweitan' 'sql':249,252,255 'srv':621 'stabil':335 'standard':132,175,423,493,837 'statement':228,804 'steampunk':174 'structur':560,819 'submit':232,764 'sy':724,735,738 'sy-datum':734 'sy-unam':723 'sy-uzeit':737 'syntax':165,179 'system':745 'tabl':208,212,397,407,776 'target':839 'technic':732 'tier':12,61,86,110,111,118,128,286,289,319,356,419,471,483,489,504,586,589,592,828,829 'topic':818 'topic-abap' 'topic-agent-skills' 'topic-sap' 'transact':231,758 'ui':303,755 'unam':725 'understand':58,76 'unreleas':23,88,542,678,706,709 'usag':680 'use':34,91,143,204,213,236,253,277,359,502,685,753,778,868 'user':30,36,73,114,245,292,438,731 'uzeit':739 'valu':563,637,792 'version':18,149,151,330,496,832 'via':300,352,477,582,769,807 'view':216,306,394,781,783 'viewer':663 'vs':31 'workflow':69 'wrap':87 'wrapper':20,456,469,485,491,508,533,581,598,625 'write':271,415 'xco':695,697 'z':612,618,624 'zcl':364,381,507,532 'zif':518,537 '~get_material':540 '~main':390","prices":[{"id":"28a41365-fd5d-42c7-a8de-3119df69ff0d","listingId":"5e5ab328-50ac-4f16-8552-3aa52eaf16c5","amountUsd":"0","unit":"free","nativeCurrency":null,"nativeAmount":null,"chain":null,"payTo":null,"paymentMethod":"skill-free","isPrimary":true,"details":{"org":"likweitan","category":"abap-skills","install_from":"skills.sh"},"createdAt":"2026-04-23T13:03:44.288Z"}],"sources":[{"listingId":"5e5ab328-50ac-4f16-8552-3aa52eaf16c5","source":"github","sourceId":"likweitan/abap-skills/abap-cloud","sourceUrl":"https://github.com/likweitan/abap-skills/tree/main/skills/abap-cloud","isPrimary":false,"firstSeenAt":"2026-04-23T13:03:44.288Z","lastSeenAt":"2026-04-24T01:03:15.684Z"}],"details":{"listingId":"5e5ab328-50ac-4f16-8552-3aa52eaf16c5","quickStartSnippet":null,"exampleRequest":null,"exampleResponse":null,"schema":null,"openapiUrl":null,"agentsTxtUrl":null,"citations":[],"useCases":[],"bestFor":[],"notFor":[],"kindDetails":{"org":"likweitan","slug":"abap-cloud","github":{"repo":"likweitan/abap-skills","stars":12,"topics":["abap","agent-skills","sap"],"license":"mit","html_url":"https://github.com/likweitan/abap-skills","pushed_at":"2026-04-17T13:44:41Z","description":"Advance Agent Skills for ABAP Developers","skill_md_sha":"0654b5df75551a9f9efa0fb54cd9e00aa537fe79","skill_md_path":"skills/abap-cloud/SKILL.md","default_branch":"main","skill_tree_url":"https://github.com/likweitan/abap-skills/tree/main/skills/abap-cloud"},"layout":"multi","source":"github","category":"abap-skills","frontmatter":{"name":"abap-cloud","description":"Help with ABAP Cloud development including the 3-tier extensibility model, ABAP Cloud language version restrictions, wrapper patterns for unreleased APIs, clean core principles, and key user vs developer extensibility. Use when users ask about ABAP Cloud, ABAP for Cloud Development, clean core, 3-tier model, tier 1 tier 2 tier 3, wrapper pattern, released APIs, language version, restricted ABAP, embedded Steampunk, developer extensibility, key user extensibility, or ABAP Cloud readiness. Triggers include \"ABAP Cloud restrictions\", \"clean core\", \"wrapper class\", \"tier model\", \"released API alternative\", \"ABAP language version\", \"Steampunk\", or \"extensibility model\"."},"skills_sh_url":"https://skills.sh/likweitan/abap-skills/abap-cloud"},"updatedAt":"2026-04-24T01:03:15.684Z"}}