{"id":"fca40d8a-2327-4e0c-b501-454cf4147cb7","shortId":"ugmkjM","kind":"skill","title":"btp-abap-environment","tagline":"Help with SAP BTP ABAP Environment setup and development including service instance creation, ADT connectivity, communication arrangements, communication scenarios, inbound/outbound services, destination configuration, identity and access management, software components, and firs","description":"# SAP BTP ABAP Environment\n\nGuide for setting up and developing in the SAP BTP ABAP Environment (Steampunk).\n\n## Workflow\n\n1. **Determine the user's goal**:\n   - Setting up a new ABAP Environment instance\n   - Connecting ADT to the BTP ABAP system\n   - Configuring communication arrangements for integrations\n   - Creating a first ABAP Cloud project\n   - Managing software components and packages\n   - Setting up outbound/inbound connectivity\n\n2. **Identify the phase**:\n   - Initial provisioning and setup\n   - Developer onboarding\n   - Integration configuration\n   - Application development\n\n3. **Guide implementation** step by step\n\n## Setup Overview\n\n### Prerequisites\n\n| Requirement         | Description                                           |\n| ------------------- | ----------------------------------------------------- |\n| **SAP BTP Account** | Global account with entitlements for ABAP Environment |\n| **Subaccount**      | Cloud Foundry-enabled subaccount                      |\n| **ADT**             | Eclipse with ABAP Development Tools installed         |\n| **User**            | Platform user with Space Developer role               |\n| **Entitlements**    | `abap/standard` or `abap/saas_oem` service plan       |\n\n### Service Instance Creation\n\n1. Navigate to BTP Cockpit → Subaccount → Cloud Foundry → Spaces\n2. Create service instance:\n   - Service: **ABAP Environment**\n   - Plan: **standard**\n   - Instance name: e.g., `my-abap-instance`\n3. Provide parameters (JSON):\n\n```json\n{\n  \"admin_email\": \"admin@example.com\",\n  \"description\": \"Development ABAP System\",\n  \"is_development_allowed\": true,\n  \"sapsystemname\": \"DEV\",\n  \"size_of_runtime\": 1,\n  \"size_of_persistence\": 4\n}\n```\n\n4. Create a service key for ADT connectivity\n\n### Connecting ADT to BTP ABAP\n\n1. In Eclipse/ADT: **File → New → ABAP Cloud Project**\n2. Select **SAP BTP ABAP Environment**\n3. Enter the service key (JSON) or service instance URL\n4. Authenticate via browser (SAP Identity Authentication)\n5. Project is created — start developing\n\n## System Architecture\n\n```\nSAP BTP Subaccount\n└── Cloud Foundry Space\n    └── ABAP Environment Service Instance\n        ├── ABAP System (development/production)\n        ├── Software Components (ZLOCAL, custom)\n        ├── Communication Arrangements (integrations)\n        └── Business Services (OData, RFC)\n```\n\n## Software Components\n\n| Component | Description                                                                   |\n| --------- | ----------------------------------------------------------------------------- |\n| `ZLOCAL`  | Local development — not transportable (like `$TMP`)                           |\n| Custom    | Transportable components — managed via gCTS or Manage Software Components app |\n\n### Creating a Software Component\n\n1. Open the **Manage Software Components** Fiori app\n2. Click **Create** (or use the `+` button)\n3. Enter:\n   - Name: `Z_MY_COMPONENT`\n   - Description: e.g., \"My Custom Component\"\n   - Type: Development\n4. **Clone** the component to make it available in ADT\n5. Create packages within the component\n\n### Package Structure\n\n```\nZ_MY_COMPONENT (Software Component)\n└── Z_MY_APP (Structure Package)\n    ├── Z_MY_APP_MODEL (Sub-package: CDS views, database tables)\n    ├── Z_MY_APP_BIZ (Sub-package: business logic, RAP BOs)\n    └── Z_MY_APP_SRV (Sub-package: service definitions, bindings)\n```\n\n## Communication Management\n\n### Concepts\n\n| Artifact                      | Purpose                                                      |\n| ----------------------------- | ------------------------------------------------------------ |\n| **Communication Scenario**    | Template defining inbound/outbound services and auth methods |\n| **Communication System**      | Represents the external system (host, port, credentials)     |\n| **Communication Arrangement** | Binds scenario + system + user, activating the integration   |\n| **Communication User**        | Technical user for inbound communication                     |\n\n### Creating a Communication Scenario\n\n```abap\n\"Defined via ADT: New → Other → Communication Scenario\n\"Name: Z_MY_COMM_SCENARIO\n```\n\nCommunication scenario definition (in ADT):\n\n| Property                 | Value                          |\n| ------------------------ | ------------------------------ |\n| **Scenario ID**          | `Z_MY_COMM_SCENARIO`           |\n| **Scenario Type**        | Managed by Customer            |\n| **Inbound Services**     | List of inbound OData services |\n| **Outbound Services**    | List of outbound HTTP services |\n| **Allowed Auth Methods** | Basic, OAuth 2.0, x.509        |\n\n### Outbound Communication (Calling External Services)\n\n```abap\n\"Get HTTP destination from communication arrangement\nDATA(lo_dest) = cl_http_destination_provider=>create_by_comm_arrangement(\n  comm_scenario  = 'Z_MY_COMM_SCENARIO'\n  service_id     = 'Z_MY_OUTBOUND_SERVICE' ).\n\n\"Create HTTP client\nDATA(lo_client) = cl_web_http_client_manager=>create_by_http_destination( lo_dest ).\n\n\"Execute request\nDATA(lo_request) = lo_client->get_http_request( ).\nlo_request->set_uri_path( '/api/resource' ).\nlo_request->set_header_field( i_name = 'Content-Type' i_value = 'application/json' ).\n\nDATA(lo_response) = lo_client->execute( if_web_http_client=>get ).\nDATA(lv_status) = lo_response->get_status( ).\nDATA(lv_body) = lo_response->get_text( ).\n\nlo_client->close( ).\n```\n\n### Inbound Communication (Exposing Services)\n\n1. Create an OData service (RAP-based)\n2. Add the service binding to a communication scenario as inbound service\n3. Create communication arrangement in Fiori app:\n   - Select scenario\n   - Create or assign communication system\n   - Create communication user (for Basic auth) or configure OAuth\n4. External systems can now call the service\n\n## Identity and Access Management\n\n### Business Roles and Catalogs\n\n```\nIAM App → Business Catalog → Business Role → Business User\n```\n\n1. **Create IAM App** in ADT (for your service binding)\n2. **Create Business Catalog** containing the IAM App\n3. **Create Business Role** in Fiori including the catalog\n4. **Assign Business Role** to users\n\n### Creating an IAM App\n\n```\nADT: New → Other → IAM App\nName: Z_MY_APP_IAM\nService Binding: Z_MY_SERVICE_BINDING\n```\n\n## First Project Scaffolding\n\nQuick steps to create a minimal RAP-based Fiori app:\n\n1. **Create database table**\n2. **Create CDS root view entity** on the table\n3. **Create CDS projection view** (consumption view)\n4. **Create behavior definition** (managed, with draft)\n5. **Create behavior implementation** class\n6. **Create service definition** exposing projection\n7. **Create service binding** (OData V4 - UI)\n8. **Publish** and **Preview** in Fiori Elements\n\n## Useful Fiori Apps\n\n| App                                | Purpose                                 |\n| ---------------------------------- | --------------------------------------- |\n| **Manage Software Components**     | Create, clone, pull software components |\n| **Communication Arrangements**     | Configure inbound/outbound integrations |\n| **Communication Systems**          | Register external systems               |\n| **Maintain Business Roles**        | Create and assign roles                 |\n| **Application Jobs**               | Schedule and monitor background jobs    |\n| **Custom Business Configurations** | Maintain configuration tables           |\n\n## Output Format\n\nWhen helping with BTP ABAP Environment topics, structure responses as:\n\n```markdown\n## BTP ABAP Environment Guidance\n\n### Phase\n\n- [Setup / Development / Integration / Deployment]\n\n### Steps\n\n[Step-by-step instructions]\n\n### Configuration\n\n[Relevant settings or code]\n```\n\n## References\n\n- SAP BTP ABAP Environment: https://help.sap.com/docs/btp/sap-business-technology-platform/abap-environment\n- Communication Management: https://help.sap.com/docs/btp/sap-business-technology-platform/communication-management\n- Getting Started Tutorial: https://developers.sap.com/group.abap-env-get-started.html","tags":["btp","abap","environment","skills","likweitan","agent-skills","sap"],"capabilities":["skill","source-likweitan","skill-btp-abap-environment","topic-abap","topic-agent-skills","topic-sap"],"categories":["abap-skills"],"synonyms":[],"warnings":[],"endpointUrl":"https://skills.sh/likweitan/abap-skills/btp-abap-environment","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,976 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:16.507Z","embedding":null,"createdAt":"2026-04-23T13:03:45.098Z","updatedAt":"2026-04-24T01:03:16.507Z","lastSeenAt":"2026-04-24T01:03:16.507Z","tsv":"'/api/resource':561 '/docs/btp/sap-business-technology-platform/abap-environment':876 '/docs/btp/sap-business-technology-platform/communication-management':881 '/group.abap-env-get-started.html':887 '1':54,158,204,222,311,607,674,741 '2':94,167,230,319,615,684,745 '2.0':492 '3':108,183,236,326,627,692,754 '4':208,209,246,339,650,701,761 '5':253,349,768 '6':773 '7':779 '8':786 'abap':3,9,38,50,64,72,82,127,138,172,181,193,221,227,234,267,271,442,499,842,850,872 'abap/saas_oem':152 'abap/standard':150 'access':30,660 'account':121,123 'activ':428 'add':616 'admin':188 'admin@example.com':190 'adt':18,68,135,215,218,348,445,459,679,711 'allow':197,487 'app':306,318,364,369,380,391,633,667,677,691,710,715,719,740,795,796 'applic':106,823 'application/json':574 'architectur':260 'arrang':21,76,279,423,505,516,630,807 'artifact':402 'assign':638,702,821 'auth':411,488,646 'authent':247,252 'avail':346 'background':828 'base':614,738 'basic':490,645 'behavior':763,770 'bind':398,424,619,683,722,726,782 'biz':381 'bodi':595 'bos':388 'browser':249 'btp':2,8,37,49,71,120,161,220,233,262,841,849,871 'btp-abap-environ':1 'busi':281,385,662,668,670,672,686,694,703,817,831 'button':325 'call':496,655 'catalog':665,669,687,700 'cds':374,747,756 'cl':509,535 'class':772 'click':320 'client':531,534,538,552,579,584,601 'clone':340,802 'close':602 'cloud':83,130,164,228,264 'cockpit':162 'code':868 'comm':453,466,515,517,521 'communic':20,22,75,278,399,404,413,422,431,437,440,448,455,495,504,604,622,629,639,642,806,811,877 'compon':33,87,275,286,287,298,305,310,316,331,336,342,354,359,361,800,805 'concept':401 'configur':27,74,105,648,808,832,834,864 'connect':19,67,93,216,217 'consumpt':759 'contain':688 'content':570 'content-typ':569 'creat':79,168,210,256,307,321,350,438,513,529,540,608,628,636,641,675,685,693,707,733,742,746,755,762,769,774,780,801,819 'creation':17,157 'credenti':421 'custom':277,296,335,472,830 'data':506,532,548,575,586,593 'databas':376,743 'defin':407,443 'definit':397,457,764,776 'deploy':857 'descript':118,191,288,332 'dest':508,545 'destin':26,502,511,543 'determin':55 'dev':200 'develop':13,45,102,107,139,147,192,196,258,291,338,855 'developers.sap.com':886 'developers.sap.com/group.abap-env-get-started.html':885 'development/production':273 'draft':767 'e.g':178,333 'eclips':136 'eclipse/adt':224 'element':792 'email':189 'enabl':133 'enter':237,327 'entiti':750 'entitl':125,149 'environ':4,10,39,51,65,128,173,235,268,843,851,873 'execut':546,580 'expos':605,777 'extern':417,497,651,814 'field':566 'file':225 'fiori':317,632,697,739,791,794 'fir':35 'first':81,727 'format':837 'foundri':132,165,265 'foundry-en':131 'gcts':301 'get':500,553,585,591,598,882 'global':122 'goal':59 'guid':40,109 'guidanc':852 'header':565 'help':5,839 'help.sap.com':875,880 'help.sap.com/docs/btp/sap-business-technology-platform/abap-environment':874 'help.sap.com/docs/btp/sap-business-technology-platform/communication-management':879 'host':419 'http':485,501,510,530,537,542,554,583 'iam':666,676,690,709,714,720 'id':463,524 'ident':28,251,658 'identifi':95 'implement':110,771 'inbound':436,473,477,603,625 'inbound/outbound':24,408,809 'includ':14,698 'initi':98 'instal':141 'instanc':16,66,156,170,176,182,244,270 'instruct':863 'integr':78,104,280,430,810,856 'job':824,829 'json':186,187,241 'key':213,240 'like':294 'list':475,482 'lo':507,533,544,549,551,556,562,576,578,589,596,600 'local':290 'logic':386 'lv':587,594 'maintain':816,833 'make':344 'manag':31,85,299,303,314,400,470,539,661,765,798,878 'markdown':848 'method':412,489 'minim':735 'model':370 'monitor':827 'my-abap-inst':179 'name':177,328,450,568,716 'navig':159 'new':63,226,446,712 'oauth':491,649 'odata':283,478,610,783 'onboard':103 'open':312 'outbound':480,484,494,527 'outbound/inbound':92 'output':836 'overview':115 'packag':89,351,355,366,373,384,395 'paramet':185 'path':560 'persist':207 'phase':97,853 'plan':154,174 'platform':143 'port':420 'prerequisit':116 'preview':789 'project':84,229,254,728,757,778 'properti':460 'provid':184,512 'provis':99 'publish':787 'pull':803 'purpos':403,797 'quick':730 'rap':387,613,737 'rap-bas':612,736 'refer':869 'regist':813 'relev':865 'repres':415 'request':547,550,555,557,563 'requir':117 'respons':577,590,597,846 'rfc':284 'role':148,663,671,695,704,818,822 'root':748 'runtim':203 'sap':7,36,48,119,232,250,261,870 'sapsystemnam':199 'scaffold':729 'scenario':23,405,425,441,449,454,456,462,467,468,518,522,623,635 'schedul':825 'select':231,634 'servic':15,25,153,155,169,171,212,239,243,269,282,396,409,474,479,481,486,498,523,528,606,611,618,626,657,682,721,725,775,781 'set':42,60,90,558,564,866 'setup':11,101,114,854 'size':201,205 'skill' 'skill-btp-abap-environment' 'softwar':32,86,274,285,304,309,315,360,799,804 'source-likweitan' 'space':146,166,266 'srv':392 'standard':175 'start':257,883 'status':588,592 'steampunk':52 'step':111,113,731,858,860,862 'step-by-step':859 'structur':356,365,845 'sub':372,383,394 'sub-packag':371,382,393 'subaccount':129,134,163,263 'system':73,194,259,272,414,418,426,640,652,812,815 'tabl':377,744,753,835 'technic':433 'templat':406 'text':599 'tmp':295 'tool':140 'topic':844 'topic-abap' 'topic-agent-skills' 'topic-sap' 'transport':293,297 'true':198 'tutori':884 'type':337,469,571 'ui':785 'uri':559 'url':245 'use':323,793 'user':57,142,144,427,432,434,643,673,706 'v4':784 'valu':461,573 'via':248,300,444 'view':375,749,758,760 'web':536,582 'within':352 'workflow':53 'x.509':493 'z':329,357,362,367,378,389,451,464,519,525,717,723 'zlocal':276,289","prices":[{"id":"2b4c0437-7f04-444f-8ffb-dc3cb01fa6b1","listingId":"fca40d8a-2327-4e0c-b501-454cf4147cb7","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:45.098Z"}],"sources":[{"listingId":"fca40d8a-2327-4e0c-b501-454cf4147cb7","source":"github","sourceId":"likweitan/abap-skills/btp-abap-environment","sourceUrl":"https://github.com/likweitan/abap-skills/tree/main/skills/btp-abap-environment","isPrimary":false,"firstSeenAt":"2026-04-23T13:03:45.098Z","lastSeenAt":"2026-04-24T01:03:16.507Z"}],"details":{"listingId":"fca40d8a-2327-4e0c-b501-454cf4147cb7","quickStartSnippet":null,"exampleRequest":null,"exampleResponse":null,"schema":null,"openapiUrl":null,"agentsTxtUrl":null,"citations":[],"useCases":[],"bestFor":[],"notFor":[],"kindDetails":{"org":"likweitan","slug":"btp-abap-environment","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":"a04c052ae351d895b1f3fa1cf79cd6a5ec21af07","skill_md_path":"skills/btp-abap-environment/SKILL.md","default_branch":"main","skill_tree_url":"https://github.com/likweitan/abap-skills/tree/main/skills/btp-abap-environment"},"layout":"multi","source":"github","category":"abap-skills","frontmatter":{"name":"btp-abap-environment","description":"Help with SAP BTP ABAP Environment setup and development including service instance creation, ADT connectivity, communication arrangements, communication scenarios, inbound/outbound services, destination configuration, identity and access management, software components, and first-project scaffolding. Use when users ask about BTP ABAP Environment, SAP BTP ABAP, Steampunk, ABAP environment service instance, ADT connection to BTP, communication arrangement, communication scenario, communication system, outbound communication, inbound communication, destination service, software component, ABAP system on BTP, or cloud ABAP development setup. Triggers include \"set up BTP ABAP\", \"connect ADT to BTP\", \"communication arrangement\", \"communication scenario\", \"create service instance\", \"ABAP on BTP\", \"outbound service\", or \"first ABAP project on BTP\"."},"skills_sh_url":"https://skills.sh/likweitan/abap-skills/btp-abap-environment"},"updatedAt":"2026-04-24T01:03:16.507Z"}}