SAP BTP Developer Guide Skill Related Skills - sap-btp-cloud-platform : Use for platform fundamentals, account management, and runtime configurations - sap-btp-best-practices : Use for architectural guidance, governance models, and production patterns - sap-cap-capire : Use for CAP development details, service definitions, and database integration - sap-fiori-tools : Use for UI development, Fiori application setup, and frontend deployment - sap-abap : Use for ABAP Cloud development, RAP patterns, and ABAP Environment specifics - sap-btp-connectivity : Use for implementing secure connections t…

;\n}\n```\n\n## ABAP Security\n\n### Authorization Objects\n```abap\nAUTHORITY-CHECK OBJECT 'S_DEVELOP'\n ID 'DEVCLASS' FIELD iv_package\n ID 'OBJTYPE' FIELD 'CLAS'\n ID 'ACTVT' FIELD '02'.\n\nIF sy-subrc \u003c> 0.\n RAISE EXCEPTION TYPE cx_no_authorization.\nENDIF.\n```\n\n### RAP Authorization\n```abap\ndefine behavior for ZI_Travel alias Travel\nauthorization master ( instance )\n{\n // Authorization check on entity level\n}\n```\n\n### Behavior Implementation\n```abap\nMETHOD get_instance_authorizations.\n DATA(lv_auth) = abap_false.\n\n \" Check authorization for specific instance\n AUTHORITY-CHECK OBJECT 'ZTRAVEL'\n ID 'TRAVEL_ID' FIELD keys[ 1 ]-TravelID\n ID 'ACTVT' FIELD '02'.\n\n IF sy-subrc = 0.\n lv_auth = abap_true.\n ENDIF.\n\n result = VALUE #( FOR key IN keys\n ( %tky = key-%tky\n %update = COND #( WHEN lv_auth = abap_true THEN if_abap_behv=>auth-allowed\n ELSE if_abap_behv=>auth-unauthorized ) ) ).\nENDMETHOD.\n```\n\n## Authentication Services\n\n### SAP Authentication and Trust Management (XSUAA)\n\n**Purpose**: Manage user authorizations\n\n**Features:**\n- OAuth 2.0 / OpenID Connect\n- SAML 2.0 federation\n- User attribute mapping\n- Role collections\n\n### Identity Authentication Service (IAS)\n\n**Purpose**: Cloud-based identity management\n\n**Features:**\n- Single Sign-On (SSO)\n- Multi-factor authentication\n- Social login integration\n- On-premise IdP integration\n\n### Configuration\n```yaml\n# mta.yaml\nresources:\n - name: my-xsuaa\n type: org.cloudfoundry.managed-service\n parameters:\n service: xsuaa\n service-plan: application\n config:\n xsappname: my-app\n tenant-mode: dedicated\n\n - name: my-ias\n type: org.cloudfoundry.managed-service\n parameters:\n service: identity\n service-plan: application\n```\n\n## Secrets Management\n\n### SAP Credential Store (CAP)\n\n**Use Cases:**\n- API keys\n- Database credentials\n- Third-party service tokens\n\n**Access via REST API:**\n```javascript\nconst { CredentialStore } = require('@sap/credential-store');\n\nconst credStore = new CredentialStore();\nconst password = await credStore.readPassword('namespace', 'key');\n```\n\n### ABAP Communication Management\n\n- Integrated credentials store\n- Outbound communication configuration\n- Certificate management\n\n## Audit Logging\n\n### CAP Audit Log Service\n```javascript\nconst cds = require('@sap/cds');\nconst audit = cds.connect.to('audit-log');\n\n// Log data access\nawait audit.log({\n type: 'DATA_READ',\n data_subject: { type: 'Customer', id: customerId },\n attributes: ['name', 'email']\n});\n```\n\n### ABAP Audit Logging\n\n**Security Audit Log:**\n- Automatic for security-relevant events\n- Configurable event classes\n\n**Read Access Logging (RAL):**\n- Sensitive data access monitoring\n- Compliance reporting\n\n## Data Privacy\n\n### SAP Data Privacy Integration\n\n**Capabilities:**\n- Cross-application privacy features\n- End-to-end compliance support\n- Data subject access requests\n\n### Personal Data Handling (CAP)\n```cds\nentity Customers {\n key ID : UUID;\n @PersonalData.FieldSemantics: 'DataSubjectID'\n customerID : String;\n @PersonalData.IsPotentiallyPersonal\n name : String;\n @PersonalData.IsPotentiallyPersonal\n email : String;\n}\n```\n\n## Security Best Practices\n\n### Environment Configuration\n- Restrict network access\n- Use private endpoints where possible\n- Enable WAF protection\n\n### Deployment Pipelines\n- Code scanning in CI/CD\n- Dependency vulnerability checks\n- Container image scanning\n\n### Secrets\n- Never hardcode credentials\n- Rotate secrets regularly\n- Use managed services\n\n### Network\n- TLS 1.2+ for all connections\n- Certificate pinning where appropriate\n- IP allowlisting for sensitive services\n\n## Compliance Resources\n\n| Standard | SAP BTP Support |\n|----------|-----------------|\n| GDPR | Data Privacy Integration, audit logging |\n| SOC 2 | SAP compliance certifications |\n| ISO 27001 | Platform certifications |\n| HIPAA | Healthcare-specific controls |\n\n## Source Documentation\n\n- Security Considerations: [https://github.com/SAP-docs/btp-developer-guide/blob/main/docs/security-considerations-for-applications-a73f6ff.md](https://github.com/SAP-docs/btp-developer-guide/blob/main/docs/security-considerations-for-applications-a73f6ff.md)\n- CAP Security Guide: [https://cap.cloud.sap/docs/guides/security/](https://cap.cloud.sap/docs/guides/security/)\n- SAP BTP Security Recommendations: [https://help.sap.com/docs/btp/sap-btp-security-recommendations/sap-btp-security-recommendations](https://help.sap.com/docs/btp/sap-btp-security-recommendations/sap-btp-security-recommendations)\n","content_type":"text/markdown; charset=utf-8","language":"markdown","size":8413,"content_sha256":"e92f7e65b4e042904cdd766f1c1fbead6fa01b0ad85f3a159a08d914fa9c28fb"},{"filename":"references/setup.md","content":"# SAP BTP Setup Reference\n\n## Overview\n\nSetting up SAP BTP landscape is an administrative task that involves configuring account structures, users, and infrastructure automation.\n\n## Account Model\n\n### Hierarchy\n\n```\nGlobal Account\n├── Directory (optional)\n│ ├── Subaccount (DEV)\n│ ├── Subaccount (QA)\n│ └── Subaccount (PROD)\n└── Subaccount (Shared Services)\n```\n\n### Subaccount Configuration\n\nEach subaccount can have:\n- Cloud Foundry environment\n- Kyma environment\n- ABAP environment\n- Service instances\n- Role assignments\n\n## User Types\n\n### Platform Users\n\n**Role**: Developers, administrators, operators\n\n**Responsibilities**:\n- Application deployment\n- System administration\n- Troubleshooting\n- Operations\n\n**Access**: Subaccounts, services, runtimes\n\n### Business Users\n\n**Role**: End users of applications\n\n**Access**: Deployed applications, SaaS services\n\n## Terraform Provider for SAP BTP\n\n### Overview\n\n**Purpose**: Automate provisioning, management, and configuration\n\n**Benefits**:\n- Infrastructure as code\n- Reproducible deployments\n- Version-controlled configuration\n- CI/CD integration\n\n### Installation\n\n```hcl\n# main.tf\nterraform {\n required_providers {\n btp = {\n source = \"SAP/btp\"\n version = \"~> 1.0\"\n }\n }\n}\n\nprovider \"btp\" {\n globalaccount = var.globalaccount\n}\n```\n\n### Common Resources\n\n#### Subaccount\n\n```hcl\nresource \"btp_subaccount\" \"dev\" {\n name = \"development\"\n subdomain = \"dev-${var.org_id}\"\n region = \"eu10\"\n labels = {\n environment = \"development\"\n }\n}\n```\n\n#### Entitlements\n\n```hcl\nresource \"btp_subaccount_entitlement\" \"hana\" {\n subaccount_id = btp_subaccount.dev.id\n service_name = \"hana-cloud\"\n plan_name = \"hana\"\n amount = 1\n}\n\nresource \"btp_subaccount_entitlement\" \"cf\" {\n subaccount_id = btp_subaccount.dev.id\n service_name = \"APPLICATION_RUNTIME\"\n plan_name = \"MEMORY\"\n}\n```\n\n#### Service Instances\n\n```hcl\nresource \"btp_subaccount_service_instance\" \"xsuaa\" {\n subaccount_id = btp_subaccount.dev.id\n name = \"my-xsuaa\"\n serviceplan_id = data.btp_subaccount_service_plan.xsuaa.id\n parameters = jsonencode({\n xsappname = \"my-app\"\n tenant-mode = \"dedicated\"\n })\n}\n```\n\n#### Role Collections\n\n```hcl\nresource \"btp_subaccount_role_collection_assignment\" \"admin\" {\n subaccount_id = btp_subaccount.dev.id\n role_collection_name = \"Subaccount Administrator\"\n user_name = \"[email protected]\"\n}\n```\n\n### Complete Example\n\n```hcl\n# variables.tf\nvariable \"globalaccount\" {\n description = \"Global account subdomain\"\n type = string\n}\n\nvariable \"region\" {\n description = \"BTP region\"\n type = string\n default = \"eu10\"\n}\n\nvariable \"admins\" {\n description = \"List of admin users\"\n type = list(string)\n}\n\n# main.tf\nterraform {\n required_providers {\n btp = {\n source = \"SAP/btp\"\n version = \"~> 1.0\"\n }\n }\n}\n\nprovider \"btp\" {\n globalaccount = var.globalaccount\n}\n\n# Development subaccount\nresource \"btp_subaccount\" \"dev\" {\n name = \"Development\"\n subdomain = \"dev-myorg\"\n region = var.region\n}\n\n# Enable Cloud Foundry\nresource \"btp_subaccount_entitlement\" \"cf\" {\n subaccount_id = btp_subaccount.dev.id\n service_name = \"APPLICATION_RUNTIME\"\n plan_name = \"MEMORY\"\n}\n\nresource \"btp_subaccount_environment_instance\" \"cf\" {\n subaccount_id = btp_subaccount.dev.id\n name = \"cf-dev\"\n environment_type = \"cloudfoundry\"\n service_name = \"cloudfoundry\"\n plan_name = \"standard\"\n parameters = jsonencode({\n instance_name = \"cf-dev\"\n })\n}\n\n# HANA Cloud\nresource \"btp_subaccount_entitlement\" \"hana\" {\n subaccount_id = btp_subaccount.dev.id\n service_name = \"hana-cloud\"\n plan_name = \"hana\"\n amount = 1\n}\n\n# Admin role assignment\nresource \"btp_subaccount_role_collection_assignment\" \"admins\" {\n for_each = toset(var.admins)\n\n subaccount_id = btp_subaccount.dev.id\n role_collection_name = \"Subaccount Administrator\"\n user_name = each.value\n}\n\n# outputs.tf\noutput \"subaccount_id\" {\n value = btp_subaccount.dev.id\n}\n\noutput \"cf_api_endpoint\" {\n value = btp_subaccount_environment_instance.cf.labels[\"API Endpoint\"]\n}\n```\n\n### Terraform Commands\n\n```bash\n# Initialize\nterraform init\n\n# Plan changes\nterraform plan -var-file=\"dev.tfvars\"\n\n# Apply changes\nterraform apply -var-file=\"dev.tfvars\"\n\n# Destroy resources\nterraform destroy -var-file=\"dev.tfvars\"\n```\n\n## Manual Setup Steps\n\n### 1. Global Account Configuration\n\n1. Access SAP BTP Cockpit\n2. Navigate to Global Account\n3. Configure directories (optional)\n4. Set up entitlements\n\n### 2. Subaccount Creation\n\n1. Click \"Create Subaccount\"\n2. Specify name and subdomain\n3. Select region\n4. Configure labels\n5. Enable environments\n\n### 3. Entitlement Assignment\n\n1. Navigate to Entitlements\n2. Configure Service Assignments\n3. Set quotas per service\n4. Assign to subaccounts\n\n### 4. User Management\n\n1. Navigate to Security > Users\n2. Add users by email\n3. Assign role collections\n4. Configure IdP trust (optional)\n\n## ABAP System Landscape Setup\n\n### Recommended Landscapes\n\nStart with only needed systems. Additional systems can be provisioned later.\n\n**3-System Landscape (DEV, QAS, PRD)**\n- Recommended for most projects\n- Suitable when development is occasional or release cycles are less frequent\n- Enables testing outside development\n- Verifies application behavior before production\n\n**5-System Landscape (DEV, COR, TST, QAS, PRD)**\n- Appropriate for larger teams with continuous development\n- Enables parallel correction handling\n- Supports uninterrupted development work\n\n### Sizing Specifications\n\n**Production Capacity:**\n- 1 ACU can serve up to **1,000 active business users per day**\n\n**Recommended Minimum Starting Configuration:**\n\n| Resource | Size | Memory |\n|----------|------|--------|\n| ABAP Compute Units (ACU) | 1 | 16 GB |\n| HANA Compute Units (HCU) | 2 | 32 GB total |\n\n**Scaling Options:**\n- Manual scaling via SAP BTP Cockpit\n- Automatic runtime scaling (Release 2402+) requires consumption-based contract\n\n**Cost Optimization:**\n- Use system hibernation for DEV, COR, TST systems during inactive periods\n- Reduces costs significantly when systems not in use\n\n## Best Practices\n\n### Account Structure\n\n| Environment | Purpose | Entitlements |\n|-------------|---------|--------------|\n| Development | Development work | Full entitlements |\n| QA/Test | Testing | Production-like |\n| Production | Live workloads | Production quotas |\n| Sandbox | Experimentation | Minimal |\n\n### Security\n\n1. **Least privilege** - Minimal necessary permissions\n2. **Separation of duties** - Different roles for different tasks\n3. **Audit logging** - Enable for compliance\n4. **IdP integration** - Use corporate identity\n\n### Automation\n\n1. **Use Terraform** for reproducibility\n2. **Version control** configurations\n3. **CI/CD integration** for changes\n4. **Document** manual steps\n\n## Source Documentation\n\n- Setup: [https://github.com/SAP-docs/btp-developer-guide/blob/main/docs/set-up-3b774f8.md](https://github.com/SAP-docs/btp-developer-guide/blob/main/docs/set-up-3b774f8.md)\n- SAP BTP Administrator's Guide: [https://help.sap.com/docs/btp/sap-business-technology-platform/administration-and-operations](https://help.sap.com/docs/btp/sap-business-technology-platform/administration-and-operations)\n- Terraform Provider: [https://registry.terraform.io/providers/SAP/btp/latest](https://registry.terraform.io/providers/SAP/btp/latest)\n","content_type":"text/markdown; charset=utf-8","language":"markdown","size":7487,"content_sha256":"b866f00bf08fce652d366907e3397c708d33f2fec1b870e95f3a0ec1504cd563"},{"filename":"references/testing.md","content":"# SAP BTP Testing Reference\n\n## Overview\n\nQuality assurance requires comprehensive testing across multiple dimensions including UI, usability, performance, and unit testing.\n\n## Testing Strategy\n\n### Test Pyramid\n\n```\n /\\\n / \\ E2E/UI Tests (few, slow)\n /----\\\n / \\ Integration Tests (some)\n /--------\\\n / \\ Unit Tests (many, fast)\n /------------\\\n```\n\n### Benefits of Unit Testing\n\n- Detect issues fast\n- Better maintainable code\n- More understandable code\n- CI/CD integration\n- Regression prevention\n\n## CAP Testing\n\n### Jest Setup\n\n```javascript\n// package.json\n{\n \"scripts\": {\n \"test\": \"jest\",\n \"test:watch\": \"jest --watch\",\n \"test:coverage\": \"jest --coverage\"\n },\n \"devDependencies\": {\n \"jest\": \"^29.0.0\",\n \"@sap/cds-dk\": \"^7.0.0\"\n }\n}\n```\n\n### Unit Test Example\n\n```javascript\n// test/unit/catalog-service.test.js\nconst cds = require('@sap/cds');\n\ndescribe('CatalogService', () => {\n let srv;\n\n beforeAll(async () => {\n srv = await cds.connect.to('CatalogService');\n });\n\n afterAll(async () => {\n await cds.disconnect();\n });\n\n describe('READ Books', () => {\n it('should return all books', async () => {\n const books = await srv.read('Books');\n expect(books).toBeDefined();\n expect(Array.isArray(books)).toBe(true);\n });\n\n it('should filter by title', async () => {\n const books = await srv.read('Books').where({ title: 'Test Book' });\n expect(books.length).toBeLessThanOrEqual(1);\n });\n });\n\n describe('CREATE Books', () => {\n it('should create a book', async () => {\n const book = await srv.create('Books', {\n title: 'New Book',\n stock: 10\n });\n expect(book.ID).toBeDefined();\n expect(book.title).toBe('New Book');\n });\n\n it('should reject invalid data', async () => {\n await expect(srv.create('Books', {}))\n .rejects.toThrow();\n });\n });\n});\n```\n\n### Integration Test Example\n\n```javascript\n// test/integration/api.test.js\nconst cds = require('@sap/cds');\nconst { GET, POST, PATCH, DELETE } = cds.test(__dirname + '/..');\n\ndescribe('API Integration', () => {\n it('GET /catalog/Books', async () => {\n const { status, data } = await GET('/catalog/Books');\n expect(status).toBe(200);\n expect(data.value).toBeDefined();\n });\n\n it('POST /catalog/Books', async () => {\n const { status, data } = await POST('/catalog/Books', {\n title: 'Test Book',\n stock: 5\n });\n expect(status).toBe(201);\n expect(data.ID).toBeDefined();\n });\n\n it('GET /catalog/Books/:id', async () => {\n const { data: created } = await POST('/catalog/Books', { title: 'Test' });\n const { status, data } = await GET(`/catalog/Books(${created.ID})`);\n expect(status).toBe(200);\n expect(data.title).toBe('Test');\n });\n});\n```\n\n## SAPUI5 Testing\n\n### QUnit Framework\n\n**Best Practice**: Write small, focused tests\n\n```javascript\n// webapp/test/unit/model/formatter.js\nsap.ui.define([\n \"my/app/model/formatter\"\n], function(formatter) {\n \"use strict\";\n\n QUnit.module(\"formatter\");\n\n QUnit.test(\"formatStatus\", function(assert) {\n assert.strictEqual(\n formatter.formatStatus(\"OPEN\"),\n \"Open\",\n \"Status formatted correctly\"\n );\n });\n\n QUnit.test(\"formatDate\", function(assert) {\n const date = new Date(\"2024-01-15\");\n assert.strictEqual(\n formatter.formatDate(date),\n \"Jan 15, 2024\",\n \"Date formatted correctly\"\n );\n });\n});\n```\n\n### OPA5 Integration Tests\n\n```javascript\n// webapp/test/integration/pages/List.js\nsap.ui.define([\n \"sap/ui/test/Opa5\",\n \"sap/ui/test/actions/Press\"\n], function(Opa5, Press) {\n \"use strict\";\n\n Opa5.createPageObjects({\n onTheListPage: {\n actions: {\n iPressOnFirstItem: function() {\n return this.waitFor({\n controlType: \"sap.m.ObjectListItem\",\n success: function(aItems) {\n new Press().executeOn(aItems[0]);\n }\n });\n }\n },\n assertions: {\n iShouldSeeTheList: function() {\n return this.waitFor({\n id: \"list\",\n success: function() {\n Opa5.assert.ok(true, \"List is visible\");\n }\n });\n }\n }\n }\n });\n});\n```\n\n### OPA5 Journey\n\n```javascript\n// webapp/test/integration/AllJourneys.js\nsap.ui.define([\n \"sap/ui/test/Opa5\",\n \"./pages/List\",\n \"./ListJourney\"\n], function(Opa5) {\n \"use strict\";\n\n Opa5.extendConfig({\n viewNamespace: \"my.app.view.\",\n autoWait: true\n });\n});\n\n// webapp/test/integration/ListJourney.js\nsap.ui.define([\n \"sap/ui/test/opaQunit\"\n], function(opaTest) {\n \"use strict\";\n\n QUnit.module(\"List Journey\");\n\n opaTest(\"Should see the list\", function(Given, When, Then) {\n Given.iStartMyApp();\n Then.onTheListPage.iShouldSeeTheList();\n Given.iTeardownMyApp();\n });\n\n opaTest(\"Should navigate to detail\", function(Given, When, Then) {\n Given.iStartMyApp();\n When.onTheListPage.iPressOnFirstItem();\n Then.onTheDetailPage.iShouldSeeTheDetail();\n Given.iTeardownMyApp();\n });\n});\n```\n\n## ABAP Testing\n\n### ABAP Unit\n\n```abap\nCLASS ltcl_travel DEFINITION FINAL FOR TESTING\n DURATION SHORT\n RISK LEVEL HARMLESS.\n\n PRIVATE SECTION.\n CLASS-DATA: mo_environment TYPE REF TO if_cds_test_environment.\n DATA: mo_cut TYPE REF TO zcl_travel_handler.\n\n CLASS-METHODS class_setup.\n CLASS-METHODS class_teardown.\n METHODS setup.\n METHODS test_validate_dates FOR TESTING.\n METHODS test_calculate_total FOR TESTING.\nENDCLASS.\n\nCLASS ltcl_travel IMPLEMENTATION.\n\n METHOD class_setup.\n mo_environment = cl_cds_test_environment=>create(\n i_for_entity = 'ZI_TRAVEL'\n ).\n ENDMETHOD.\n\n METHOD class_teardown.\n mo_environment->destroy( ).\n ENDMETHOD.\n\n METHOD setup.\n mo_environment->clear_doubles( ).\n mo_cut = NEW #( ).\n ENDMETHOD.\n\n METHOD test_validate_dates.\n \" Given\n DATA(lv_begin) = cl_abap_context_info=>get_system_date( ).\n DATA(lv_end) = lv_begin + 7.\n\n \" When\n DATA(lv_valid) = mo_cut->validate_dates(\n iv_begin = lv_begin\n iv_end = lv_end\n ).\n\n \" Then\n cl_abap_unit_assert=>assert_true( lv_valid ).\n ENDMETHOD.\n\n METHOD test_calculate_total.\n \" Given\n DATA(lv_booking_fee) = CONV decfloat16( '50.00' ).\n DATA(lv_price) = CONV decfloat16( '500.00' ).\n\n \" When\n DATA(lv_total) = mo_cut->calculate_total(\n iv_booking_fee = lv_booking_fee\n iv_price = lv_price\n ).\n\n \" Then\n cl_abap_unit_assert=>assert_equals(\n exp = '550.00'\n act = lv_total\n ).\n ENDMETHOD.\n\nENDCLASS.\n```\n\n### CDS Test Double Framework\n\n```abap\n\" Create test doubles for CDS entities\nDATA(lo_env) = cl_cds_test_environment=>create(\n i_for_entity = 'ZI_TRAVEL'\n).\n\n\" Insert test data\nDATA: lt_travel TYPE TABLE OF ztravel.\nlt_travel = VALUE #(\n ( travel_uuid = cl_uuid_factory=>create_uuid_c32( )\n travel_id = '1'\n customer_id = 'CUST001'\n begin_date = '20240101'\n end_date = '20240108' )\n).\nlo_env->insert_test_data( lt_travel ).\n\n\" Run tests...\n\n\" Clear after tests\nlo_env->clear_doubles( ).\n```\n\n## Test Automation\n\n### CI/CD Integration\n\n```yaml\n# .pipeline/config.yml\nstages:\n Additional Unit Tests:\n npmExecuteScripts: true\n npmScripts:\n - test\n\n Integration Tests:\n npmExecuteScripts: true\n npmScripts:\n - test:integration\n\n UI Tests:\n karmaExecuteTests: true\n```\n\n### Code Coverage\n\n```javascript\n// jest.config.js\nmodule.exports = {\n collectCoverage: true,\n coverageThreshold: {\n global: {\n branches: 80,\n functions: 80,\n lines: 80,\n statements: 80\n }\n }\n};\n```\n\n## Best Practices\n\n### Unit Tests\n1. Test one thing at a time\n2. Use descriptive names\n3. Follow AAA pattern (Arrange, Act, Assert)\n4. Mock external dependencies\n5. Keep tests fast\n\n### Integration Tests\n1. Test real interactions\n2. Use test data that represents production\n3. Clean up after tests\n4. Test error paths\n\n### UI Tests\n1. Test user journeys\n2. Use page objects pattern\n3. Keep tests maintainable\n4. Test accessibility\n\n## Source Documentation\n\n- Testing: [https://github.com/SAP-docs/btp-developer-guide/blob/main/docs/performing-ui-usability-and-unit-tests-50a7c7d.md](https://github.com/SAP-docs/btp-developer-guide/blob/main/docs/performing-ui-usability-and-unit-tests-50a7c7d.md)\n- SAPUI5 Testing: [https://sapui5.hana.ondemand.com/#/topic/291c9121e6044ab381e0b51716f97f52](https://sapui5.hana.ondemand.com/#/topic/291c9121e6044ab381e0b51716f97f52)\n- CAP Testing: [https://cap.cloud.sap/docs/node.js/cds-test](https://cap.cloud.sap/docs/node.js/cds-test)\n","content_type":"text/markdown; charset=utf-8","language":"markdown","size":8603,"content_sha256":"541d07f678ca8ed5c24d7e4257ea68015650057bdc4dc1b83acbf0432e50455a"},{"filename":"references/tools.md","content":"# SAP BTP Development Tools Reference\n\n## Development Environments\n\n### SAP Business Application Studio\n\n**Type**: Cloud-based IDE optimized for SAP development\n\n**Foundation**: Code-OSS (VS Code base)\n\n**Capabilities:**\n- SAP Fiori application development\n- CAP application development\n- HANA database extensions\n- Full-stack development\n- Mobile development\n\n**Dev Spaces:**\n\n| Dev Space | Purpose |\n|-----------|---------|\n| Full Stack Cloud Application | CAP, Fiori, HANA |\n| SAP Fiori | Fiori Elements, Freestyle |\n| SAP HANA Native Application | HDI containers, calculation views |\n| SAP Mobile Application | Mobile Development Kit |\n| Basic | General development |\n\n### ABAP Development Tools (ADT)\n\n**Type**: Eclipse-based IDE for ABAP development\n\n**Capabilities:**\n- ABAP Cloud development\n- RAP business objects\n- CDS view modeling\n- ABAP unit testing\n- ATC integration\n\n**Installation:**\n1. Download Eclipse IDE\n2. Install ADT from SAP update site\n3. Connect to ABAP system\n\n### SAP Build\n\n**Type**: Low-code/no-code platform\n\n**Components:**\n- **SAP Build Apps**: Drag-and-drop application creation\n- **SAP Build Process Automation**: Workflow and RPA\n- **SAP Build Work Zone**: Business sites\n\n## Administrative Tools\n\n### SAP BTP Cockpit\n\n**Purpose**: Web-based platform administration\n\n**Capabilities:**\n- Application management\n- Resource configuration\n- Security monitoring\n- Cloud application operations\n- Entitlement management\n\n### Landscape Portal\n\n**Purpose**: Partner and SaaS management (ABAP)\n\n**Capabilities:**\n- System management\n- Tenant management\n- Product lifecycle\n- Deployment pipelines\n\n## Command-Line Tools\n\n### Cloud Foundry CLI\n\n**Purpose**: Deploy and manage CF applications\n\n**Installation:**\n```bash\n# macOS\nbrew install cloudfoundry/tap/cf-cli\n\n# Windows\nchoco install cloudfoundry-cli\n\n# Linux\nwget -q -O - [https://packages.cloudfoundry.org/debian/cli.cloudfoundry.org.key](https://packages.cloudfoundry.org/debian/cli.cloudfoundry.org.key) | sudo apt-key add -\necho \"deb [https://packages.cloudfoundry.org/debian](https://packages.cloudfoundry.org/debian) stable main\" | sudo tee /etc/apt/sources.list.d/cloudfoundry-cli.list\nsudo apt update && sudo apt install cf-cli\n```\n\n**Common Commands:**\n```bash\n# Login\ncf login -a [https://api.cf.eu10.hana.ondemand.com](https://api.cf.eu10.hana.ondemand.com)\n\n# Deploy\ncf push my-app\n\n# View apps\ncf apps\n\n# View services\ncf services\n\n# Scale\ncf scale my-app -i 3\n\n# Logs\ncf logs my-app --recent\n```\n\n### CDS CLI\n\n**Purpose**: CAP development commands\n\n**Installation:**\n```bash\n# Install latest version (recommended for new projects)\nnpm install -g @sap/cds-dk@latest\n\n# Or pin to specific version for reproducibility\nnpm install -g @sap/[email protected]\n```\n\n> **Version Strategy**: Use `@latest` for development to get newest features. For CI/CD pipelines and team consistency, pin to a specific version in your project's `package.json` devDependencies.\n\n**Common Commands:**\n```bash\ncds init my-project # Create project\ncds add hana # Add HANA support\ncds add xsuaa # Add authentication\ncds watch # Run with live reload\ncds build # Build for deployment\ncds deploy # Deploy to HANA\ncds compile # Compile CDS models\n```\n\n### MTA Build Tool (mbt)\n\n**Purpose**: Build multitarget applications\n\n**Installation:**\n```bash\nnpm install -g mbt\n```\n\n**Commands:**\n```bash\nmbt build # Build MTA archive\nmbt build -t ./ # Build to current directory\n```\n\n### CF MTA Plugin\n\n**Purpose**: Deploy MTA archives\n\n**Installation:**\n```bash\ncf install-plugin multiapps\n```\n\n**Commands:**\n```bash\ncf deploy my-app.mtar # Deploy MTA\ncf mtas # List deployed MTAs\ncf undeploy my-app # Undeploy MTA\n```\n\n## Kubernetes Tools\n\n### kubectl\n\n**Purpose**: Kubernetes cluster management\n\n**Commands:**\n```bash\nkubectl get pods # List pods\nkubectl logs my-pod # View logs\nkubectl describe pod # Pod details\nkubectl apply -f file.yaml # Apply configuration\n```\n\n### kubelogin\n\n**Purpose**: OIDC authentication for kubectl\n\n### Helm\n\n**Purpose**: Kubernetes package manager\n\n**Commands:**\n```bash\nhelm install my-app ./chart # Install chart\nhelm upgrade my-app ./chart # Upgrade release\nhelm list # List releases\nhelm uninstall my-app # Uninstall\n```\n\n### Paketo (Pack)\n\n**Purpose**: Cloud Native Buildpacks for container images\n\n**Commands:**\n```bash\npack build my-image --builder paketobuildpacks/builder:base\n```\n\n### Docker Desktop\n\n**Purpose**: Local container development\n\n## Infrastructure Tools\n\n### Terraform Provider for SAP BTP\n\n**Purpose**: Infrastructure as code for SAP BTP\n\n**Configuration:**\n```hcl\nterraform {\n required_providers {\n btp = {\n source = \"SAP/btp\"\n }\n }\n}\n\nprovider \"btp\" {\n globalaccount = var.globalaccount\n}\n\nresource \"btp_subaccount\" \"my_subaccount\" {\n name = \"my-subaccount\"\n region = \"eu10\"\n subdomain = \"my-subdomain\"\n}\n```\n\n### Cloud Connector\n\n**Purpose**: Secure on-premise connectivity\n\n**Features:**\n- Reverse proxy operation\n- Access control\n- High availability\n- Audit logging\n\n## Development Libraries\n\n### SAP Cloud SDK\n\n**Purpose**: Abstraction layer for enterprise development\n\n**Languages**: Java, JavaScript/TypeScript\n\n**Features:**\n- Logging\n- Multitenancy\n- Connectivity\n- OData/OpenAPI clients\n\n**Installation (Node.js):**\n```bash\nnpm install @sap-cloud-sdk/core\nnpm install @sap-cloud-sdk/odata-v2-generator\n```\n\n**Example:**\n```javascript\nconst { BusinessPartner } = require('@sap/cloud-sdk-vdm-business-partner-service');\n\nconst partners = await BusinessPartner.requestBuilder()\n .getAll()\n .execute({ destinationName: 'S4HANA' });\n```\n\n## SAP Fiori Tools\n\n### Capabilities\n\n| Tool | Purpose |\n|------|---------|\n| Application Wizard | Generate Fiori apps |\n| Service Modeler | Design OData services |\n| Page Editor | Configure Fiori Elements pages |\n| Guided Development | Step-by-step development |\n| XML Editor | Edit Fiori Elements views |\n\n### Installation (VS Code)\n\nSearch for \"SAP Fiori tools\" in VS Code extensions.\n\n## Service-Specific Tools\n\nAvailable through SAP Discovery Center for individual services.\n\n## Source Documentation\n\n- Tools Available: [https://github.com/SAP-docs/btp-developer-guide/blob/main/docs/tools-available-for-sap-btp-multi-cloud-foundation-7f95cfa.md](https://github.com/SAP-docs/btp-developer-guide/blob/main/docs/tools-available-for-sap-btp-multi-cloud-foundation-7f95cfa.md)\n- SAP Discovery Center: [https://discovery-center.cloud.sap/](https://discovery-center.cloud.sap/)\n","content_type":"text/markdown; charset=utf-8","language":"markdown","size":6679,"content_sha256":"9837604beb8f341cbf2f0223848c5f1fe0344fce9b80935dd3ffbcad1cff91ba"},{"filename":"references/tutorials.md","content":"# SAP BTP Tutorials Reference\n\n## Overview\n\nSAP BTP provides structured learning paths through missions and tutorials, covering CAP and ABAP Cloud development scenarios.\n\n## Account Options\n\n### Free Tier for SAP BTP\n\n**Best for**: Productive projects\n\n- 30+ free-tier services\n- Upgrade capability to paid plans\n- Available under BTPEA, CPEA, Pay-As-You-Go\n- One free plan per runtime (CF/Kyma)\n\n### SAP BTP Trial\n\n**Best for**: Learning and experimentation\n\n- 90-day trial period\n- 30+ trial services\n- Instant access\n- Learning materials included\n\n## CAP Learning Path\n\n### Mission 1: Full-Stack CAP Application (Starter)\n\n**Sample Application**: Incident Management\n\n**Modules:**\n\n| Module | Topics |\n|--------|--------|\n| Core Development | Environment setup, CAP basics, Fiori Elements UI, custom logic, local launchpad, authorization, testing |\n| Cloud Foundry Deployment | CF deployment, SAP Build Work Zone, CI/CD |\n| Kyma Deployment | Kyma deployment, Work Zone, CI/CD |\n\n**Discovery Center**: Mission 4033/4432\n\n### Mission 2: Side-by-Side Extension\n\n**Sample Application**: Incident Management + S/4HANA\n\n**Tracks:**\n\n| Track | Runtime | Backend |\n|-------|---------|---------|\n| Remote Service - CF | Cloud Foundry | Mock Server |\n| Remote Service - CF | Cloud Foundry | S/4HANA Cloud |\n| Remote Service - Kyma | Kyma | Mock Server |\n| Remote Service - Kyma | Kyma | S/4HANA Cloud |\n| Eventing - CF | Cloud Foundry | Mock/S/4HANA |\n| Eventing - Kyma | Kyma | Mock/S/4HANA |\n\n**Prerequisites**: Complete remote service before eventing\n\n**Discovery Center**: Mission 3999\n\n### Mission 3: Enterprise-Grade CAP Application\n\n**Features:**\n- Change tracking\n- Audit logging\n- Attachment uploads\n\n**Sample Application**: Incident Management (enhanced)\n\n**Discovery Center**: Mission 4364\n\n### Mission 4: Multitenant CAP Application\n\n**Sample Application**: Incident Management (SaaS)\n\n**Entry Point Options:**\n\n| Approach | Consumer Requirements | Site Management |\n|----------|----------------------|-----------------|\n| Central | SAP Build Work Zone instance | Consumer managed |\n| Local | None | Provider managed |\n\n**Key Features:**\n- Tenant isolation\n- Subscription lifecycle\n- Key user extensibility\n\n**Discovery Center**: Mission 4497\n\n### Mission 5: Observability in CAP Application\n\n**Tool**: SAP Cloud Logging\n\n**Capabilities:**\n- Logs\n- Metrics\n- Traces\n\n**Discovery Center**: Mission 4432/4718\n\n## ABAP Learning Path\n\n### RAP100 Basics (Transactional)\n\n**Sample Application**: Flight Reference Scenario\n\n**Tutorials:**\n\n| Tutorial | Topics |\n|----------|--------|\n| Understanding RAP | Fundamentals, architecture |\n| Database Tables | Table creation, data elements |\n| UI Service Generation | Automatic CDS/RAP generation |\n| Data Model Enhancement | Associations, annotations |\n| OData Streams | Large object handling |\n| Business Object Behavior | Numbering, determinations, validations |\n| Fiori App Deployment | UI deployment, testing |\n| Fiori Launchpad | Integration, tiles |\n\n### RAP100 Intermediate\n\n**Tutorials:**\n\n| Tutorial | Topics |\n|----------|--------|\n| Instance Actions | Custom actions on entities |\n| Factory Actions | Create with copy |\n| Dynamic Feature Control | Conditional UI elements |\n| ABAP Unit Testing | Test class creation |\n\n### RAP120 (AI-Assisted)\n\n**Tool**: SAP Joule\n\n**Capabilities:**\n- Predictive code completion\n- ABAP Cloud Generator\n- Unit test generation\n\n**GitHub**: RAP120 sample project\n\n### Analytical Scenario\n\n**Tutorials:**\n\n| Level | Tutorial |\n|-------|----------|\n| Beginner | Develop and Consume Queries on SAP Analytics Cloud |\n| Intermediate | Queries Based on Booking Supplement |\n\n**Integration**: SAP Analytics Cloud with InA-enabled CDS\n\n### Certifications\n\n| Certification | Focus |\n|---------------|-------|\n| SAP Certified Associate - Back-End Developer - ABAP Cloud | RAP, CDS, ABAP Cloud |\n\n## Partner Tutorials\n\n### Poetry Slam Manager (CAP)\n\n**Type**: Reference application for multitenant CAP SaaS\n\n**GitHub**: [https://github.com/SAP-samples/partner-reference-application/](https://github.com/SAP-samples/partner-reference-application/)\n\n**Tutorial Coverage:**\n1. Core application development (business models, logic)\n2. Enhancement to multitenant (multi-customer) solutions\n3. ERP backend integration (S/4HANA Cloud, Business One, Business ByDesign)\n4. Feature expansion\n5. Application extension\n\n**Key Topics:**\n- Full-stack CAP development\n- ERP-agnostic design\n- Cost optimization\n- Subscription lifecycle\n\n**Bill of Materials**: [https://github.com/SAP-samples/partner-reference-application/blob/main/Tutorials/01-BillOfMaterials.md](https://github.com/SAP-samples/partner-reference-application/blob/main/Tutorials/01-BillOfMaterials.md)\n\n### Music Festival Manager (ABAP)\n\n**Type**: Reference application for multitenant ABAP SaaS\n\n**GitHub**: Partner Reference Application on GitHub\n\n**Tutorial Coverage:**\n1. **Core Application Development**: Business models, logic, UI, authentication, role-based authorization\n2. **Deployment & Provisioning**: Building and deploying to consumers\n3. **SAP S/4HANA Cloud Integration**: Connecting with enterprise systems\n4. **Feature Enhancement**: Expanding application capabilities\n\n**Key Topics:**\n- Full-stack ABAP Cloud development using RAP\n- Scalable multitenant architecture\n- SAP BTP Developer's Guide best practices\n\n### Partner Reference Application Extension\n\n**Type**: Customer-specific extension example\n\n**GitHub**: [https://github.com/SAP-samples/partner-reference-application-extension](https://github.com/SAP-samples/partner-reference-application-extension)\n\n**Topics:**\n- Enhanced catering management capabilities\n- Tenant-specific configurations\n- Key user extensibility\n- Base application integration\n\n## Learning Resources\n\n### SAP Learning Journeys\n\n| Journey | Focus |\n|---------|-------|\n| Practicing Clean Core Extensibility for SAP S/4HANA Cloud | Extensions |\n| Acquiring Core ABAP Skills | ABAP fundamentals |\n\n### Additional Resources\n\n| Resource | URL |\n|----------|-----|\n| SAP Developers | [https://developers.sap.com/](https://developers.sap.com/) |\n| SAP Learning | [https://learning.sap.com/](https://learning.sap.com/) |\n| SAP Community | [https://community.sap.com/](https://community.sap.com/) |\n| SAP Discovery Center | [https://discovery-center.cloud.sap/](https://discovery-center.cloud.sap/) |\n\n## Prerequisites Management\n\n### Entitlements\n\nBefore starting missions:\n1. Open BTP Cockpit\n2. Navigate to Entitlements\n3. Configure quotas for services\n4. Assign to subaccount\n\n### Common Services Required\n\n| Service | Plan | Purpose |\n|---------|------|---------|\n| SAP HANA Cloud | hana | Database |\n| Cloud Foundry Runtime | MEMORY | Application runtime |\n| SAP Build Work Zone | standard | Launchpad |\n| Continuous Integration & Delivery | default | CI/CD |\n\n## Source Documentation\n\n- CAP Tutorials: [https://github.com/SAP-docs/btp-developer-guide/blob/main/docs/tutorials-for-sap-cloud-application-programming-model-eb7420a.md](https://github.com/SAP-docs/btp-developer-guide/blob/main/docs/tutorials-for-sap-cloud-application-programming-model-eb7420a.md)\n- ABAP Tutorials: [https://github.com/SAP-docs/btp-developer-guide/blob/main/docs/tutorials-for-abap-cloud-fd87aaa.md](https://github.com/SAP-docs/btp-developer-guide/blob/main/docs/tutorials-for-abap-cloud-fd87aaa.md)\n- Starter Mission: [https://github.com/SAP-docs/btp-developer-guide/blob/main/docs/starter-mission-develop-a-full-stack-cap-application-ebd19b5.md](https://github.com/SAP-docs/btp-developer-guide/blob/main/docs/starter-mission-develop-a-full-stack-cap-application-ebd19b5.md)\n- Extension Mission: [https://github.com/SAP-docs/btp-developer-guide/blob/main/docs/mission-develop-a-side-by-side-cap-based-extension-application-2289e25.md](https://github.com/SAP-docs/btp-developer-guide/blob/main/docs/mission-develop-a-side-by-side-cap-based-extension-application-2289e25.md)\n- Multitenant Mission: [https://github.com/SAP-docs/btp-developer-guide/blob/main/docs/mission-develop-a-multitenant-cap-application-6d2cbe9.md](https://github.com/SAP-docs/btp-developer-guide/blob/main/docs/mission-develop-a-multitenant-cap-application-6d2cbe9.md)\n- Enterprise Mission: [https://github.com/SAP-docs/btp-developer-guide/blob/main/docs/mission-develop-an-enterprise-grade-cap-application-b5be786.md](https://github.com/SAP-docs/btp-developer-guide/blob/main/docs/mission-develop-an-enterprise-grade-cap-application-b5be786.md)\n- Observability Mission: [https://github.com/SAP-docs/btp-developer-guide/blob/main/docs/mission-implement-observability-in-a-full-stack-cap-application-c5636db.md](https://github.com/SAP-docs/btp-developer-guide/blob/main/docs/mission-implement-observability-in-a-full-stack-cap-application-c5636db.md)\n","content_type":"text/markdown; charset=utf-8","language":"markdown","size":8771,"content_sha256":"3b63a9820b45faf269f0cc45beaa2e14040a9572d2b53c4c41f42fcff6bb8697"},{"filename":"references/ux-design.md","content":"# SAP BTP UX Design Reference\n\n## Overview\n\nSAP BTP applications require consistent, compliant user experiences using the SAP Fiori design language. Three main approaches are recommended for UI development.\n\n## User Experience Dimensions\n\n### Five Usability Factors\n\n| Factor | Description |\n|--------|-------------|\n| Effectiveness | Accomplishing intended tasks |\n| Efficiency | Minimizing effort required |\n| Ease of learning | Intuitiveness for new users |\n| Error tolerance | Handling mistakes gracefully |\n| Satisfaction | Positive user perception |\n\n### Consistency\n\nConsistency contributes to ease of learning and efficiency. Follow SAP Fiori Design Guidelines to maintain alignment with standard SAP applications.\n\n## UI Development Approaches\n\n### 1. SAP Fiori Elements\n\n**Description**: Framework on top of SAPUI5 with predefined templates based on OData services\n\n**Best For**: Standard business applications\n\n#### Floorplans\n\n| Floorplan | Use Case |\n|-----------|----------|\n| List Report | Data browsing with filters |\n| Object Page | Detail view with sections |\n| Overview Page | KPIs and quick actions |\n| Worklist | Task-oriented lists |\n| Analytical List Page | Analytics with filters |\n\n#### Building Blocks\n\nReusable UI components:\n- Data visualization\n- Form entry\n- Value helps\n- Tables\n- Charts\n\n#### Benefits\n- Rapid development\n- Consistent UX\n- Automatic compliance\n- Responsive design\n\n### 2. Flexible Programming Model\n\n**Description**: Extend SAP Fiori Elements with custom logic\n\n**Best For**: Applications needing selective customization\n\n#### Extension Points\n- Custom columns\n- Custom actions\n- Custom sections\n- Custom fragments\n\n#### Custom Pages\nLeverage Fiori Elements base with:\n- Building blocks\n- Routing\n- State management\n\n### 3. Freestyle SAPUI5\n\n**Description**: Full UI control using SAPUI5 framework\n\n**Best For**: Highly customized interfaces\n\n**Considerations**:\n- Greater development effort\n- Manual compliance implementation\n- Full flexibility\n\n## SAP Fiori Tools\n\n| Tool | Purpose |\n|------|---------|\n| Application Wizard | Generate Fiori apps from templates |\n| Service Modeler | Design OData services visually |\n| Page Editor | Configure Fiori Elements pages |\n| XML Editor | Edit view definitions |\n| Guided Development | Step-by-step feature addition |\n\n## Compliance Standards\n\n### Automatic Inheritance\n\n> **Note**: Automatic compliance applies specifically when using **SAP Fiori Elements** with recommended patterns, **OData V4** services with proper annotations, and **internationalization (i18n)** setup. Custom or Freestyle SAPUI5 applications require manual compliance verification.\n\n**Prerequisites for automatic compliance:**\n1. Use SAP Fiori Elements floorplans\n2. Expose OData V4 services with proper UI annotations\n3. Enable internationalization (i18n) for all user-facing text\n4. Follow SAP Fiori design guidelines for customizations\n\n| Standard | Coverage | Requirement |\n|----------|----------|-------------|\n| Accessibility (WCAG 2.2) | Automatic | Fiori Elements + proper labels |\n| SAP Fiori Design Guidelines | Automatic | Standard floorplans |\n| Responsive Design | Automatic | Fiori Elements controls |\n| Performance Optimization | Automatic | OData V4 batching |\n| Security Protections | Automatic | XSUAA + CSRF tokens |\n\n### Accessibility Requirements\n\n```xml\n\u003c!-- Example: Accessible form -->\n\u003cLabel text=\"Name\" labelFor=\"nameInput\"/>\n\u003cInput id=\"nameInput\" value=\"{/name}\"\n ariaLabelledBy=\"nameLabel\"/>\n```\n\n### Internationalization\n\n```javascript\n// i18n/i18n.properties\nwelcomeMessage=Welcome to the Application\nsaveButton=Save\ncancelButton=Cancel\n\n// i18n/i18n_de.properties\nwelcomeMessage=Willkommen in der Anwendung\nsaveButton=Speichern\ncancelButton=Abbrechen\n```\n\n## Design Methodology\n\n### Iterative Approach\n\n**Motto**: \"Fail fast, fail early\"\n\n**Process**:\n1. Sketch solutions\n2. Gather feedback\n3. Refine designs\n4. Repeat until needs met\n\n### User Research\n\n**Methods**:\n- Stakeholder interviews\n- Contextual inquiry\n- Usability testing\n- A/B testing\n\n**Resources**: SAP User Research Resources guide\n\n## Fiori Elements Configuration\n\n### annotations.cds\n\n```cds\nusing CatalogService as service from '../srv/catalog-service';\n\nannotate service.Books with @(\n UI: {\n SelectionFields: [title, author_ID],\n LineItem: [\n { Value: title },\n { Value: author.name, Label: 'Author' },\n { Value: stock },\n { Value: price }\n ],\n HeaderInfo: {\n TypeName: 'Book',\n TypeNamePlural: 'Books',\n Title: { Value: title },\n Description: { Value: author.name }\n },\n Facets: [\n {\n $Type: 'UI.ReferenceFacet',\n Label: 'General Information',\n Target: '@UI.FieldGroup#GeneralInfo'\n }\n ],\n FieldGroup#GeneralInfo: {\n Data: [\n { Value: title },\n { Value: author_ID },\n { Value: stock },\n { Value: price }\n ]\n }\n }\n);\n```\n\n### manifest.json Routing\n\n```json\n{\n \"sap.ui5\": {\n \"routing\": {\n \"routes\": [\n {\n \"name\": \"BooksList\",\n \"pattern\": \":?query:\",\n \"target\": \"BooksList\"\n },\n {\n \"name\": \"BooksDetail\",\n \"pattern\": \"Books({key}):?query:\",\n \"target\": \"BooksDetail\"\n }\n ],\n \"targets\": {\n \"BooksList\": {\n \"type\": \"Component\",\n \"id\": \"BooksList\",\n \"name\": \"sap.fe.templates.ListReport\"\n },\n \"BooksDetail\": {\n \"type\": \"Component\",\n \"id\": \"BooksDetail\",\n \"name\": \"sap.fe.templates.ObjectPage\"\n }\n }\n }\n }\n}\n```\n\n## Responsive Design\n\n### Breakpoints\n\n| Size | Width | Typical Device |\n|------|-------|----------------|\n| Phone | \u003c 600px | Mobile |\n| Tablet | 600-1024px | Tablet |\n| Desktop | > 1024px | Desktop |\n\n### Responsive Handling\n\n```xml\n\u003cFlexBox direction=\"Column\"\n class=\"sapUiResponsiveMargin\">\n \u003cTable growing=\"true\"\n growingThreshold=\"20\"\n mode=\"{= ${device>/system/phone} ? 'None' : 'SingleSelectMaster'}\">\n \u003c/Table>\n\u003c/FlexBox>\n```\n\n## Resources\n\n| Resource | URL |\n|----------|-----|\n| SAP Fiori Design Guidelines | [https://experience.sap.com/fiori-design-web/](https://experience.sap.com/fiori-design-web/) |\n| Accessibility Guidelines | [https://experience.sap.com/fiori-design-web/accessibility/](https://experience.sap.com/fiori-design-web/accessibility/) |\n| SAPUI5 Demo Kit | [https://sapui5.hana.ondemand.com/](https://sapui5.hana.ondemand.com/) |\n| Fiori Tools | SAP Business Application Studio |\n\n## Source Documentation\n\n- UX Design: [https://github.com/SAP-docs/btp-developer-guide/blob/main/docs/user-experience-design-323bd93.md](https://github.com/SAP-docs/btp-developer-guide/blob/main/docs/user-experience-design-323bd93.md)\n- UX Compliance: [https://github.com/SAP-docs/btp-developer-guide/blob/main/docs/ux-design-and-product-compliance-standards-91e4468.md](https://github.com/SAP-docs/btp-developer-guide/blob/main/docs/ux-design-and-product-compliance-standards-91e4468.md)\n","content_type":"text/markdown; charset=utf-8","language":"markdown","size":7036,"content_sha256":"8280eeefb444d9d763dd5ed9f564aff3aa28e73445de474c88a19b27ab41d512"},{"filename":"references/whats-new.md","content":"# SAP BTP What's New Reference\n\n## Overview\n\nThis document tracks updates to the SAP BTP Developer's Guide organized chronologically.\n\n## 2025 Updates\n\n### November 2025\n\n| Date | Update |\n|------|--------|\n| November 5, 2025 | New tutorials for partners developing ABAP-based applications introduce the **Music Festival Manager reference app** for scalable multitenant SaaS using RAP |\n| November 3, 2025 | End-to-end observability guidance added combining SAP Cloud ALM (central) with SAP Cloud Logging (local) using OpenTelemetry |\n\n### October 2025\n\n| Date | Update |\n|------|--------|\n| October 31, 2025 | New SAP HANA Cloud content emphasizing TCO reduction best practices across ABAP, Kyma, and Cloud Foundry |\n| October 30, 2025 | ABAP Cloud content enhanced with specific recommendations and hands-on materials |\n| October 17, 2025 | New page for UX design and product compliance standards across all BTP environments |\n| October 3, 2025 | Partner information expanded with TCO calculations for multitenant SaaS plus additional tutorials |\n\n### September 2025\n\n| Date | Update |\n|------|--------|\n| September 25, 2025 | Security information integrated throughout development phases (exploration → production) |\n| September 15, 2025 | Guide restructured with new sections on runtime benefits (CF/Kyma with CAP, ABAP Cloud) |\n| September 1, 2025 | Major restructuring into four main sections: technology, runtime benefits, CAP, ABAP Cloud |\n\n### Earlier 2025\n\n| Date | Update |\n|------|--------|\n| June 2, 2025 | New CI/CD chapter introducing fundamentals and SAP solutions |\n| April 25, 2025 | New page for remote system connectivity approaches |\n| January 3, 2025 | Partner reference application for multitenant SaaS development |\n\n## 2024 Notable Additions\n\n- Guide restructured to align with design-led development processes\n- New missions for enterprise-grade and multitenant CAP applications\n- Observability implementation guidance added\n- Expanded tutorials for Cloud Foundry and Kyma runtimes\n\n## Key Feature Introductions by Date\n\n### Partner Development\n- **November 2025**: Music Festival Manager (ABAP RAP)\n- **October 2025**: TCO Calculator for SaaS\n- **January 2025**: Poetry Slam Manager (CAP)\n\n### Observability\n- **November 2025**: OpenTelemetry integration\n- **2024**: SAP Cloud ALM integration\n\n### Security\n- **September 2025**: Phase-integrated security guidance\n\n### CI/CD\n- **June 2025**: CI/CD fundamentals chapter\n\n### Connectivity\n- **April 2025**: Remote system connectivity guide\n\n## Tracking Updates\n\n**Source**: [https://github.com/SAP-docs/btp-developer-guide/blob/main/docs/what-s-new-for-sap-btp-developer-s-guide-7cf7a39.md](https://github.com/SAP-docs/btp-developer-guide/blob/main/docs/what-s-new-for-sap-btp-developer-s-guide-7cf7a39.md)\n\nTo check for new updates:\n1. Visit the source documentation\n2. Compare with dates listed here\n3. Update this reference file accordingly\n","content_type":"text/markdown; charset=utf-8","language":"markdown","size":2921,"content_sha256":"5c2608403d4b8d0957271a3c172afb38c8af26a447aebf9e92f1330b11f30abf"}],"content_json":{"type":"doc","content":[{"type":"heading","attrs":{"level":1},"content":[{"text":"SAP BTP Developer Guide Skill","type":"text"}]},{"type":"heading","attrs":{"level":2},"content":[{"text":"Related Skills","type":"text"}]},{"type":"bullet_list","content":[{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"sap-btp-cloud-platform","type":"text","marks":[{"type":"strong"}]},{"text":": Use for platform fundamentals, account management, and runtime configurations","type":"text"}]}]},{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"sap-btp-best-practices","type":"text","marks":[{"type":"strong"}]},{"text":": Use for architectural guidance, governance models, and production patterns","type":"text"}]}]},{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"sap-cap-capire","type":"text","marks":[{"type":"strong"}]},{"text":": Use for CAP development details, service definitions, and database integration","type":"text"}]}]},{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"sap-fiori-tools","type":"text","marks":[{"type":"strong"}]},{"text":": Use for UI development, Fiori application setup, and frontend deployment","type":"text"}]}]},{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"sap-abap","type":"text","marks":[{"type":"strong"}]},{"text":": Use for ABAP Cloud development, RAP patterns, and ABAP Environment specifics","type":"text"}]}]},{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"sap-btp-connectivity","type":"text","marks":[{"type":"strong"}]},{"text":": Use for implementing secure connections to on-premise systems","type":"text"}]}]}]},{"type":"paragraph","content":[{"text":"Comprehensive guidance for developing, deploying, and operating business applications on SAP Business Technology Platform.","type":"text"}]},{"type":"heading","attrs":{"level":2},"content":[{"text":"Table of Contents","type":"text"}]},{"type":"heading","attrs":{"level":3},"content":[{"text":"Quick Navigation","type":"text"}]},{"type":"bullet_list","content":[{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"Table of Contents","type":"text","marks":[{"type":"link","attrs":{"href":"#table-of-contents","title":null}}]}]}]},{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"When to Use This Skill","type":"text","marks":[{"type":"link","attrs":{"href":"#when-to-use-this-skill","title":null}}]}]}]},{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"Runtime and Programming Model Selection","type":"text","marks":[{"type":"link","attrs":{"href":"#runtime-and-programming-model-selection","title":null}}]}]}]},{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"Development Workflow","type":"text","marks":[{"type":"link","attrs":{"href":"#development-workflow","title":null}}]}]}]},{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"Key Services and Tools","type":"text","marks":[{"type":"link","attrs":{"href":"#key-services-and-tools","title":null}}]}]}]},{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"Security Implementation","type":"text","marks":[{"type":"link","attrs":{"href":"#security-implementation","title":null}}]}]}]},{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"Connectivity Patterns","type":"text","marks":[{"type":"link","attrs":{"href":"#connectivity-patterns","title":null}}]}]}]},{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"CI/CD Implementation","type":"text","marks":[{"type":"link","attrs":{"href":"#ci-cd-implementation","title":null}}]}]}]},{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"Observability Implementation","type":"text","marks":[{"type":"link","attrs":{"href":"#observability-implementation","title":null}}]}]}]},{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"Tutorials and Missions","type":"text","marks":[{"type":"link","attrs":{"href":"#tutorials-and-missions","title":null}}]}]}]},{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"Partner/ISV Development","type":"text","marks":[{"type":"link","attrs":{"href":"#partner-isv-development","title":null}}]}]}]},{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"Common Errors and Solutions","type":"text","marks":[{"type":"link","attrs":{"href":"#common-errors-and-solutions","title":null}}]}]}]},{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"Bundled Resources","type":"text","marks":[{"type":"link","attrs":{"href":"#bundled-resources","title":null}}]}]}]},{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"Quick Reference Links","type":"text","marks":[{"type":"link","attrs":{"href":"#quick-reference-links","title":null}}]}]}]},{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"Version Information","type":"text","marks":[{"type":"link","attrs":{"href":"#version-information","title":null}}]}]}]}]},{"type":"heading","attrs":{"level":2},"content":[{"text":"When to Use This Skill","type":"text"}]},{"type":"paragraph","content":[{"text":"Use when:","type":"text"}]},{"type":"bullet_list","content":[{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"Building new applications on SAP BTP (Cloud Foundry or Kyma runtime)","type":"text"}]}]},{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"Developing with SAP Cloud Application Programming Model (CAP)","type":"text"}]}]},{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"Building ABAP Cloud applications in SAP BTP ABAP Environment","type":"text"}]}]},{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"Deploying SAP Fiori or SAPUI5 user interfaces","type":"text"}]}]},{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"Connecting applications to SAP S/4HANA, SuccessFactors, or on-premise systems","type":"text"}]}]},{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"Building multitenant SaaS applications","type":"text"}]}]},{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"Implementing side-by-side extensions for SAP solutions","type":"text"}]}]},{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"Setting up CI/CD pipelines for SAP BTP","type":"text"}]}]},{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"Implementing observability with SAP Cloud ALM or SAP Cloud Logging","type":"text"}]}]},{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"Using SAP HANA Cloud for data persistence","type":"text"}]}]}]},{"type":"heading","attrs":{"level":2},"content":[{"text":"Runtime and Programming Model Selection","type":"text"}]},{"type":"paragraph","content":[{"text":"For detailed runtime comparison: See ","type":"text"},{"text":"references/runtimes.md","type":"text","marks":[{"type":"code_inline"}]}]},{"type":"heading","attrs":{"level":3},"content":[{"text":"Decision Matrix","type":"text"}]},{"type":"table","attrs":{"layout":null},"content":[{"type":"tr","content":[{"type":"th","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"Criteria","type":"text"}]}]},{"type":"th","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"CAP (Cloud Foundry/Kyma)","type":"text"}]}]},{"type":"th","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"ABAP Cloud","type":"text"}]}]}]},{"type":"tr","content":[{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"Languages","type":"text","marks":[{"type":"strong"}]}]}]},{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"Node.js, Java, TypeScript","type":"text"}]}]},{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"ABAP","type":"text"}]}]}]},{"type":"tr","content":[{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"Best For","type":"text","marks":[{"type":"strong"}]}]}]},{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"New cloud-native apps, extensions","type":"text"}]}]},{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"Organizations with ABAP expertise","type":"text"}]}]}]},{"type":"tr","content":[{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"Runtime","type":"text","marks":[{"type":"strong"}]}]}]},{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"Cloud Foundry or Kyma","type":"text"}]}]},{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"SAP BTP ABAP Environment","type":"text"}]}]}]},{"type":"tr","content":[{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"Persistence","type":"text","marks":[{"type":"strong"}]}]}]},{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"SAP HANA Cloud, PostgreSQL","type":"text"}]}]},{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"SAP HANA Cloud (ABAP-managed)","type":"text"}]}]}]},{"type":"tr","content":[{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"UI Framework","type":"text","marks":[{"type":"strong"}]}]}]},{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"SAP Fiori Elements, SAPUI5","type":"text"}]}]},{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"SAP Fiori Elements, SAPUI5","type":"text"}]}]}]},{"type":"tr","content":[{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"IDE","type":"text","marks":[{"type":"strong"}]}]}]},{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"SAP Business Application Studio, VS Code","type":"text"}]}]},{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"ABAP Development Tools (Eclipse)","type":"text"}]}]}]}]},{"type":"heading","attrs":{"level":3},"content":[{"text":"CAP Application Development","type":"text"}]},{"type":"paragraph","content":[{"text":"CAP provides three operational profiles:","type":"text"}]},{"type":"bullet_list","content":[{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"Development","type":"text","marks":[{"type":"strong"}]},{"text":": Mock services, minimal setup, SQLite/H2 for local testing","type":"text"}]}]},{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"Hybrid","type":"text","marks":[{"type":"strong"}]},{"text":": Local app connected to cloud services","type":"text"}]}]},{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"Production","type":"text","marks":[{"type":"strong"}]},{"text":": Full cloud deployment with SAP HANA Cloud","type":"text"}]}]}]},{"type":"paragraph","content":[{"text":"Key capabilities:","type":"text"}]},{"type":"bullet_list","content":[{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"Domain-driven design with CDS (Core Data Services)","type":"text"}]}]},{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"Built-in multitenancy support","type":"text"}]}]},{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"Automatic OData/REST service generation","type":"text"}]}]},{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"Platform-agnostic design (no vendor lock-in)","type":"text"}]}]}]},{"type":"paragraph","content":[{"text":"For CAP details: See ","type":"text"},{"text":"references/cap-development.md","type":"text","marks":[{"type":"code_inline"}]}]},{"type":"heading","attrs":{"level":3},"content":[{"text":"ABAP Cloud Development","type":"text"}]},{"type":"paragraph","content":[{"text":"ABAP Cloud uses four foundational technologies:","type":"text"}]},{"type":"ordered_list","attrs":{"order":1,"listStyle":"number"},"content":[{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"Core Data Services (CDS)","type":"text","marks":[{"type":"strong"}]},{"text":" - Data modeling and analytics","type":"text"}]}]},{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"ABAP RESTful Application Programming Model (RAP)","type":"text","marks":[{"type":"strong"}]},{"text":" - Service-oriented development","type":"text"}]}]},{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"Restricted ABAP Language","type":"text","marks":[{"type":"strong"}]},{"text":" - Cloud-safe API access","type":"text"}]}]},{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"Released Public APIs","type":"text","marks":[{"type":"strong"}]},{"text":" - Upgrade-stable extensions","type":"text"}]}]}]},{"type":"paragraph","content":[{"text":"For ABAP details: See ","type":"text"},{"text":"references/abap-cloud.md","type":"text","marks":[{"type":"code_inline"}]}]},{"type":"heading","attrs":{"level":2},"content":[{"text":"Development Workflow","type":"text"}]},{"type":"heading","attrs":{"level":3},"content":[{"text":"Phase 1: Explore and Discover","type":"text"}]},{"type":"ordered_list","attrs":{"order":1,"listStyle":"number"},"content":[{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"Identify business problem","type":"text","marks":[{"type":"strong"}]},{"text":" - Conduct stakeholder interviews","type":"text"}]}]},{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"Understand user needs","type":"text","marks":[{"type":"strong"}]},{"text":" - Visit customers, observe workflows","type":"text"}]}]},{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"Define security requirements","type":"text","marks":[{"type":"strong"}]},{"text":" - Threat modeling, compliance planning (GDPR, HIPAA)","type":"text"}]}]},{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"Establish governance","type":"text","marks":[{"type":"strong"}]},{"text":" - Set up organizational structure","type":"text"}]}]}]},{"type":"heading","attrs":{"level":3},"content":[{"text":"Phase 2: Design","type":"text"}]},{"type":"ordered_list","attrs":{"order":1,"listStyle":"number"},"content":[{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"User Experience Design","type":"text","marks":[{"type":"strong"}]}]},{"type":"bullet_list","content":[{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"Follow SAP Fiori Design Guidelines","type":"text"}]}]},{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"Implement accessibility (WCAG 2.2)","type":"text"}]}]},{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"Use design thinking methodology","type":"text"}]}]}]}]},{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"Technology Design","type":"text","marks":[{"type":"strong"}]}]},{"type":"bullet_list","content":[{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"Apply Domain-Driven Design for complex applications (30+ use cases)","type":"text"}]}]},{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"Define module boundaries and communication patterns","type":"text"}]}]},{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"Plan microservices architecture if needed","type":"text"}]}]}]}]},{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"Security in Design","type":"text","marks":[{"type":"strong"}]}]},{"type":"bullet_list","content":[{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"Secure user interfaces with SAP Fiori authentication","type":"text"}]}]},{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"Implement RBAC/ABAC using OAuth/OpenID Connect","type":"text"}]}]},{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"Validate CDS models for data protection","type":"text"}]}]}]}]}]},{"type":"paragraph","content":[{"text":"For design patterns: See ","type":"text"},{"text":"references/design-patterns.md","type":"text","marks":[{"type":"code_inline"}]}]},{"type":"heading","attrs":{"level":3},"content":[{"text":"Phase 3: Develop","type":"text"}]},{"type":"paragraph","content":[{"text":"CAP Development:","type":"text","marks":[{"type":"strong"}]}]},{"type":"code_block","attrs":{"wrap":false,"language":"bash"},"content":[{"text":"# Initialize CAP project\ncds init my-project\ncd my-project\n\n# Add SAP HANA support\ncds add hana\n\n# Add authentication\ncds add xsuaa\n\n# Run locally\ncds watch","type":"text"}]},{"type":"paragraph","content":[{"text":"Key development tools:","type":"text","marks":[{"type":"strong"}]}]},{"type":"bullet_list","content":[{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"SAP Business Application Studio (primary IDE)","type":"text"}]}]},{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"SAP Cloud SDK (OData/OpenAPI clients)","type":"text"}]}]},{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"MTA Build Tool (packaging)","type":"text"}]}]}]},{"type":"paragraph","content":[{"text":"Coding standards:","type":"text","marks":[{"type":"strong"}]}]},{"type":"bullet_list","content":[{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"Follow SAPUI5 Guidelines and SAP Fiori Design Guidelines","type":"text"}]}]},{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"Establish naming conventions","type":"text"}]}]},{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"Implement parameterized queries (prevent SQL injection)","type":"text"}]}]},{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"Use CDS constraints for input validation","type":"text"}]}]}]},{"type":"paragraph","content":[{"text":"For tools catalog: See ","type":"text"},{"text":"references/tools.md","type":"text","marks":[{"type":"code_inline"}]}]},{"type":"heading","attrs":{"level":3},"content":[{"text":"Phase 4: Deploy","type":"text"}]},{"type":"paragraph","content":[{"text":"Cloud Foundry Deployment:","type":"text","marks":[{"type":"strong"}]}]},{"type":"code_block","attrs":{"wrap":false,"language":"bash"},"content":[{"text":"# Build MTA archive\nmbt build\n\n# Deploy to Cloud Foundry\ncf deploy mta_archives/my-project_1.0.0.mtar","type":"text"}]},{"type":"paragraph","content":[{"text":"Kyma Deployment:","type":"text","marks":[{"type":"strong"}]}]},{"type":"code_block","attrs":{"wrap":false,"language":"bash"},"content":[{"text":"# Use Helm charts or Terraform\nterraform init\nterraform apply","type":"text"}]},{"type":"paragraph","content":[{"text":"ABAP Deployment:","type":"text","marks":[{"type":"strong"}]}]},{"type":"bullet_list","content":[{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"Use Manage Software Components app (gCTS)","type":"text"}]}]},{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"Transport via Landscape Portal","type":"text"}]}]},{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"Partner options: Multitenant SaaS or Add-on Product","type":"text"}]}]}]},{"type":"paragraph","content":[{"text":"For deployment details: See ","type":"text"},{"text":"references/deployment.md","type":"text","marks":[{"type":"code_inline"}]}]},{"type":"heading","attrs":{"level":3},"content":[{"text":"Phase 5: Run and Scale","type":"text"}]},{"type":"paragraph","content":[{"text":"Monitoring:","type":"text","marks":[{"type":"strong"}]}]},{"type":"bullet_list","content":[{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"SAP Cloud ALM (central observability)","type":"text"}]}]},{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"SAP Cloud Logging (detailed logs, metrics, traces)","type":"text"}]}]},{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"ABAP Technical Monitoring Cockpit","type":"text"}]}]}]},{"type":"paragraph","content":[{"text":"Scaling:","type":"text","marks":[{"type":"strong"}]}]},{"type":"bullet_list","content":[{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"Cloud Foundry: Automatic instance distribution across AZs","type":"text"}]}]},{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"Kyma: Kubernetes-native scaling","type":"text"}]}]},{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"ABAP: Elastic scaling with ACUs (0.5 ACU increments)","type":"text"}]}]}]},{"type":"paragraph","content":[{"text":"Cost optimization:","type":"text","marks":[{"type":"strong"}]}]},{"type":"bullet_list","content":[{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"System hibernation (ABAP) - reduce to \u003c5% operational cost","type":"text"}]}]},{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"SAP HANA Cloud Native Storage Extension","type":"text"}]}]},{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"Elastic Compute Nodes for peak workloads","type":"text"}]}]}]},{"type":"paragraph","content":[{"text":"For operations: See ","type":"text"},{"text":"references/operations.md","type":"text","marks":[{"type":"code_inline"}]}]},{"type":"heading","attrs":{"level":2},"content":[{"text":"Key Services and Tools","type":"text"}]},{"type":"heading","attrs":{"level":3},"content":[{"text":"Platform Services","type":"text"}]},{"type":"table","attrs":{"layout":null},"content":[{"type":"tr","content":[{"type":"th","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"Service","type":"text"}]}]},{"type":"th","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"Purpose","type":"text"}]}]}]},{"type":"tr","content":[{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"SAP HANA Cloud","type":"text"}]}]},{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"Database-as-a-Service, multi-model","type":"text"}]}]}]},{"type":"tr","content":[{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"SAP Connectivity Service","type":"text"}]}]},{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"On-premise/VPC connections via Cloud Connector","type":"text"}]}]}]},{"type":"tr","content":[{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"SAP Destination Service","type":"text"}]}]},{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"Routing, authentication management","type":"text"}]}]}]},{"type":"tr","content":[{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"SAP Event Mesh","type":"text"}]}]},{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"Event distribution between applications","type":"text"}]}]}]},{"type":"tr","content":[{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"SAP Integration Suite","type":"text"}]}]},{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"API Management, Cloud Integration","type":"text"}]}]}]}]},{"type":"heading","attrs":{"level":3},"content":[{"text":"Development Tools","type":"text"}]},{"type":"table","attrs":{"layout":null},"content":[{"type":"tr","content":[{"type":"th","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"Tool","type":"text"}]}]},{"type":"th","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"Purpose","type":"text"}]}]}]},{"type":"tr","content":[{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"SAP Business Application Studio","type":"text"}]}]},{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"Primary cloud IDE","type":"text"}]}]}]},{"type":"tr","content":[{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"SAP Build","type":"text"}]}]},{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"Low-code/no-code development","type":"text"}]}]}]},{"type":"tr","content":[{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"Cloud Foundry CLI","type":"text"}]}]},{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"CF deployment and management","type":"text"}]}]}]},{"type":"tr","content":[{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"kubectl/Helm","type":"text"}]}]},{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"Kyma/Kubernetes management","type":"text"}]}]}]},{"type":"tr","content":[{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"Terraform Provider for SAP BTP","type":"text"}]}]},{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"Infrastructure as code","type":"text"}]}]}]}]},{"type":"paragraph","content":[{"text":"For architecture details: See ","type":"text"},{"text":"references/architecture.md","type":"text","marks":[{"type":"code_inline"}]}]},{"type":"heading","attrs":{"level":2},"content":[{"text":"Security Implementation","type":"text"}]},{"type":"heading","attrs":{"level":3},"content":[{"text":"CAP Security Features","type":"text"}]},{"type":"bullet_list","content":[{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"Parameterized queries (SQL injection prevention)","type":"text"}]}]},{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"CSRF protection for UI applications","type":"text"}]}]},{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"Built-in authentication/authorization frameworks","type":"text"}]}]},{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"SAP Credential Store for secrets management","type":"text"}]}]}]},{"type":"heading","attrs":{"level":3},"content":[{"text":"Security Guidelines","type":"text"}]},{"type":"ordered_list","attrs":{"order":1,"listStyle":"number"},"content":[{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"Secure environment configuration","type":"text","marks":[{"type":"strong"}]},{"text":" - Restrict network access","type":"text"}]}]},{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"Security testing","type":"text","marks":[{"type":"strong"}]},{"text":" - Penetration testing before go-live","type":"text"}]}]},{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"Secure deployment pipelines","type":"text","marks":[{"type":"strong"}]},{"text":" - Code scanning, dependency validation","type":"text"}]}]},{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"Secrets management","type":"text","marks":[{"type":"strong"}]},{"text":" - Use SAP Credential Store","type":"text"}]}]}]},{"type":"paragraph","content":[{"text":"For security details: See ","type":"text"},{"text":"references/security.md","type":"text","marks":[{"type":"code_inline"}]}]},{"type":"heading","attrs":{"level":2},"content":[{"text":"Connectivity Patterns","type":"text"}]},{"type":"heading","attrs":{"level":3},"content":[{"text":"Cloud-to-On-Premise","type":"text"}]},{"type":"bullet_list","content":[{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"SAP Connectivity Service + Cloud Connector","type":"text"}]}]},{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"User propagation supported","type":"text"}]}]},{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"Protocols: HTTP, RFC, LDAP, FTP","type":"text"}]}]}]},{"type":"heading","attrs":{"level":3},"content":[{"text":"Cloud-to-Cloud","type":"text"}]},{"type":"bullet_list","content":[{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"SAP Destination Service for routing","type":"text"}]}]},{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"OAuth token management","type":"text"}]}]},{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"SAP Transparent Proxy for Kubernetes","type":"text"}]}]}]},{"type":"paragraph","content":[{"text":"For connectivity details: See ","type":"text"},{"text":"references/connectivity.md","type":"text","marks":[{"type":"code_inline"}]}]},{"type":"heading","attrs":{"level":2},"content":[{"text":"CI/CD Implementation","type":"text"}]},{"type":"paragraph","content":[{"text":"SAP Continuous Integration and Delivery","type":"text","marks":[{"type":"strong"}]},{"text":" provides pre-configured pipelines:","type":"text"}]},{"type":"bullet_list","content":[{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"Cloud Foundry Environment jobs (SAP Fiori, CAP)","type":"text"}]}]},{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"SAP Fiori for ABAP Platform jobs","type":"text"}]}]},{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"SAP Integration Suite Artifacts jobs","type":"text"}]}]}]},{"type":"paragraph","content":[{"text":"Setup steps:","type":"text"}]},{"type":"ordered_list","attrs":{"order":1,"listStyle":"number"},"content":[{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"Enable in SAP BTP cockpit","type":"text"}]}]},{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"Assign Administrator/Developer roles","type":"text"}]}]},{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"Configure repository credentials (GitHub, GitLab, Bitbucket, Azure Repos)","type":"text"}]}]},{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"Add repositories and create jobs","type":"text"}]}]},{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"Configure webhooks for automated builds","type":"text"}]}]}]},{"type":"paragraph","content":[{"text":"For CI/CD details: See ","type":"text"},{"text":"references/cicd.md","type":"text","marks":[{"type":"code_inline"}]}]},{"type":"heading","attrs":{"level":2},"content":[{"text":"Observability Implementation","type":"text"}]},{"type":"heading","attrs":{"level":3},"content":[{"text":"Central Layer (SAP Cloud ALM)","type":"text"}]},{"type":"bullet_list","content":[{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"Real User Monitoring","type":"text"}]}]},{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"Health Monitoring","type":"text"}]}]},{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"Integration and Exception Monitoring","type":"text"}]}]},{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"Synthetic User Monitoring","type":"text"}]}]}]},{"type":"heading","attrs":{"level":3},"content":[{"text":"Local Layer (SAP Cloud Logging)","type":"text"}]},{"type":"bullet_list","content":[{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"Log Analytics (OpenSearch-based)","type":"text"}]}]},{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"Distributed tracing","type":"text"}]}]},{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"Custom dashboards and alerting","type":"text"}]}]}]},{"type":"paragraph","content":[{"text":"OpenTelemetry","type":"text","marks":[{"type":"strong"}]},{"text":" is the industry standard for instrumentation.","type":"text"}]},{"type":"paragraph","content":[{"text":"For observability details: See ","type":"text"},{"text":"references/observability.md","type":"text","marks":[{"type":"code_inline"}]}]},{"type":"heading","attrs":{"level":2},"content":[{"text":"Tutorials and Missions","type":"text"}]},{"type":"heading","attrs":{"level":3},"content":[{"text":"CAP Learning Path","type":"text"}]},{"type":"ordered_list","attrs":{"order":1,"listStyle":"number"},"content":[{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"Starter Mission","type":"text","marks":[{"type":"strong"}]},{"text":": Full-Stack CAP Application","type":"text"}]}]},{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"Extension Mission","type":"text","marks":[{"type":"strong"}]},{"text":": Side-by-Side CAP-Based Extensions","type":"text"}]}]},{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"Enterprise Mission","type":"text","marks":[{"type":"strong"}]},{"text":": Change Tracking, Audit Logging, Attachments","type":"text"}]}]},{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"Multitenant Mission","type":"text","marks":[{"type":"strong"}]},{"text":": SaaS Application Development","type":"text"}]}]},{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"Observability Mission","type":"text","marks":[{"type":"strong"}]},{"text":": SAP Cloud Logging Integration","type":"text"}]}]}]},{"type":"heading","attrs":{"level":3},"content":[{"text":"ABAP Learning Path","type":"text"}]},{"type":"ordered_list","attrs":{"order":1,"listStyle":"number"},"content":[{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"RAP100 Basics","type":"text","marks":[{"type":"strong"}]},{"text":": Fiori apps, OData services, business logic","type":"text"}]}]},{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"RAP100 Intermediate","type":"text","marks":[{"type":"strong"}]},{"text":": Actions, dynamic feature control, unit testing","type":"text"}]}]},{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"RAP120","type":"text","marks":[{"type":"strong"}]},{"text":": AI-assisted development with SAP Joule","type":"text"}]}]},{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"Analytics","type":"text","marks":[{"type":"strong"}]},{"text":": CDS views with SAP Analytics Cloud","type":"text"}]}]}]},{"type":"paragraph","content":[{"text":"Sample applications:","type":"text"}]},{"type":"bullet_list","content":[{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"Incident Management","type":"text","marks":[{"type":"strong"}]},{"text":" (CAP)","type":"text"}]}]},{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"Flight Reference Scenario","type":"text","marks":[{"type":"strong"}]},{"text":" (ABAP)","type":"text"}]}]},{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"Poetry Slam Manager","type":"text","marks":[{"type":"strong"}]},{"text":" (Partner SaaS)","type":"text"}]}]}]},{"type":"paragraph","content":[{"text":"For tutorial details: See ","type":"text"},{"text":"references/tutorials.md","type":"text","marks":[{"type":"code_inline"}]}]},{"type":"heading","attrs":{"level":2},"content":[{"text":"Bundled Resources","type":"text"}]},{"type":"heading","attrs":{"level":3},"content":[{"text":"File Structure","type":"text"}]},{"type":"code_block","attrs":{"wrap":false,"language":""},"content":[{"text":"sap-btp-developer-guide/\n├── SKILL.md # This file - Main guidance\n├── README.md # Quick reference with auto-trigger keywords\n└── references/ # Detailed guides (22 files)\n ├── Architecture & Setup\n │ ├── architecture.md # Platform services and architecture\n │ ├── runtimes.md # Runtime comparison (CF vs Kyma vs ABAP)\n │ ├── setup.md # BTP landscape setup and Terraform\n │ └── tools.md # Development tools catalog\n ├── Development\n │ ├── cap-development.md # CAP development guide\n │ ├── abap-cloud.md # ABAP Cloud development guide\n │ ├── design-patterns.md # Design patterns and DDD\n │ ├── extensions.md # SAP solution extensions\n │ ├── mta.md # Multitarget applications\n │ ├── testing.md # Testing strategies\n │ └── ux-design.md # UX design and Fiori\n ├── Integration & Security\n │ ├── connectivity.md # Connectivity patterns\n │ ├── security.md # Security implementation\n │ ├── hana-cloud.md # SAP HANA Cloud\n │ └── resilience.md # Resilience patterns\n ├── Deployment & Operations\n │ ├── deployment.md # Deployment options\n │ ├── cicd.md # CI/CD pipelines\n │ ├── observability.md # Monitoring and logging\n │ ├── operations.md # Operations and scaling\n │ └── partners.md # ISV/Partner development\n └── Additional Resources\n ├── tutorials.md # Learning paths and missions\n └── whats-new.md # Changelog and updates","type":"text"}]},{"type":"heading","attrs":{"level":3},"content":[{"text":"Reference Files by Category","type":"text"}]},{"type":"heading","attrs":{"level":4},"content":[{"text":"Architecture & Platform (4 files)","type":"text"}]},{"type":"bullet_list","content":[{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"architecture.md","type":"text","marks":[{"type":"code_inline"}]},{"text":" - Platform services overview and architecture patterns","type":"text"}]}]},{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"runtimes.md","type":"text","marks":[{"type":"code_inline"}]},{"text":" - Runtime comparison and selection guide","type":"text"}]}]},{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"setup.md","type":"text","marks":[{"type":"code_inline"}]},{"text":" - BTP landscape setup with sizing recommendations","type":"text"}]}]},{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"tools.md","type":"text","marks":[{"type":"code_inline"}]},{"text":" - Complete development tools catalog","type":"text"}]}]}]},{"type":"heading","attrs":{"level":4},"content":[{"text":"Development (8 files)","type":"text"}]},{"type":"bullet_list","content":[{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"cap-development.md","type":"text","marks":[{"type":"code_inline"}]},{"text":" - CAP development with Node.js/Java","type":"text"}]}]},{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"abap-cloud.md","type":"text","marks":[{"type":"code_inline"}]},{"text":" - ABAP Cloud development with RAP","type":"text"}]}]},{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"design-patterns.md","type":"text","marks":[{"type":"code_inline"}]},{"text":" - Domain-driven design and patterns","type":"text"}]}]},{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"extensions.md","type":"text","marks":[{"type":"code_inline"}]},{"text":" - Side-by-side extensions for SAP solutions","type":"text"}]}]},{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"mta.md","type":"text","marks":[{"type":"code_inline"}]},{"text":" - Multitarget application packaging","type":"text"}]}]},{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"testing.md","type":"text","marks":[{"type":"code_inline"}]},{"text":" - Testing strategies and frameworks","type":"text"}]}]},{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"ux-design.md","type":"text","marks":[{"type":"code_inline"}]},{"text":" - SAP Fiori UX design guidelines","type":"text"}]}]}]},{"type":"heading","attrs":{"level":4},"content":[{"text":"Integration & Security (4 files)","type":"text"}]},{"type":"bullet_list","content":[{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"connectivity.md","type":"text","marks":[{"type":"code_inline"}]},{"text":" - Cloud-to-on-premise connectivity","type":"text"}]}]},{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"security.md","type":"text","marks":[{"type":"code_inline"}]},{"text":" - Authentication, authorization, and security","type":"text"}]}]},{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"hana-cloud.md","type":"text","marks":[{"type":"code_inline"}]},{"text":" - SAP HANA Cloud database","type":"text"}]}]},{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"resilience.md","type":"text","marks":[{"type":"code_inline"}]},{"text":" - Application resilience patterns","type":"text"}]}]}]},{"type":"heading","attrs":{"level":4},"content":[{"text":"Deployment & Operations (5 files)","type":"text"}]},{"type":"bullet_list","content":[{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"deployment.md","type":"text","marks":[{"type":"code_inline"}]},{"text":" - Deployment to CF, Kyma, and ABAP","type":"text"}]}]},{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"cicd.md","type":"text","marks":[{"type":"code_inline"}]},{"text":" - CI/CD pipelines with SAP tools","type":"text"}]}]},{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"observability.md","type":"text","marks":[{"type":"code_inline"}]},{"text":" - Monitoring, logging, and tracing","type":"text"}]}]},{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"operations.md","type":"text","marks":[{"type":"code_inline"}]},{"text":" - Operations, scaling, and cost optimization","type":"text"}]}]},{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"partners.md","type":"text","marks":[{"type":"code_inline"}]},{"text":" - ISV/partner development guidelines","type":"text"}]}]}]},{"type":"heading","attrs":{"level":4},"content":[{"text":"Learning & Updates (2 files)","type":"text"}]},{"type":"bullet_list","content":[{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"tutorials.md","type":"text","marks":[{"type":"code_inline"}]},{"text":" - Hands-on missions and tutorials","type":"text"}]}]},{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"whats-new.md","type":"text","marks":[{"type":"code_inline"}]},{"text":" - Latest features and changelog","type":"text"}]}]}]},{"type":"heading","attrs":{"level":2},"content":[{"text":"Partner/ISV Development","type":"text"}]},{"type":"heading","attrs":{"level":3},"content":[{"text":"Deployment Options","type":"text"}]},{"type":"ordered_list","attrs":{"order":1,"listStyle":"number"},"content":[{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"Multitenant SaaS","type":"text","marks":[{"type":"strong"}]},{"text":" - Cloud service operated in partner's global account","type":"text"}]}]},{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"Add-on Product","type":"text","marks":[{"type":"strong"}]},{"text":" - Installed in customer's ABAP environment","type":"text"}]}]}]},{"type":"heading","attrs":{"level":3},"content":[{"text":"Requirements","type":"text"}]},{"type":"bullet_list","content":[{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"SAP PartnerEdge Build contract","type":"text"}]}]},{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"Registered ABAP namespace (mandatory)","type":"text"}]}]},{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"Landscape Portal for lifecycle management","type":"text"}]}]}]},{"type":"paragraph","content":[{"text":"For partner details: See ","type":"text"},{"text":"references/partners.md","type":"text","marks":[{"type":"code_inline"}]}]},{"type":"heading","attrs":{"level":2},"content":[{"text":"Quick Reference Links","type":"text"}]},{"type":"paragraph","content":[{"text":"Official Documentation:","type":"text","marks":[{"type":"strong"}]}]},{"type":"bullet_list","content":[{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"SAP BTP Help: ","type":"text"},{"text":"https://help.sap.com/docs/btp","type":"text","marks":[{"type":"link","attrs":{"href":"https://help.sap.com/docs/btp","title":null}}]}]}]},{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"CAP Documentation: ","type":"text"},{"text":"https://cap.cloud.sap/docs/","type":"text","marks":[{"type":"link","attrs":{"href":"https://cap.cloud.sap/docs/","title":null}}]}]}]},{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"SAP Discovery Center: ","type":"text"},{"text":"https://discovery-center.cloud.sap/","type":"text","marks":[{"type":"link","attrs":{"href":"https://discovery-center.cloud.sap/","title":null}}]}]}]},{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"SAP API Business Hub: ","type":"text"},{"text":"https://api.sap.com/","type":"text","marks":[{"type":"link","attrs":{"href":"https://api.sap.com/","title":null}}]}]}]}]},{"type":"paragraph","content":[{"text":"Design Resources:","type":"text","marks":[{"type":"strong"}]}]},{"type":"bullet_list","content":[{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"SAP Fiori Design: ","type":"text"},{"text":"https://experience.sap.com/fiori-design-web/","type":"text","marks":[{"type":"link","attrs":{"href":"https://experience.sap.com/fiori-design-web/","title":null}}]}]}]},{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"SAPUI5 SDK: ","type":"text"},{"text":"https://sapui5.hana.ondemand.com/","type":"text","marks":[{"type":"link","attrs":{"href":"https://sapui5.hana.ondemand.com/","title":null}}]}]}]}]},{"type":"paragraph","content":[{"text":"Learning:","type":"text","marks":[{"type":"strong"}]}]},{"type":"bullet_list","content":[{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"SAP Developers: ","type":"text"},{"text":"https://developers.sap.com/","type":"text","marks":[{"type":"link","attrs":{"href":"https://developers.sap.com/","title":null}}]}]}]},{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"SAP Learning: ","type":"text"},{"text":"https://learning.sap.com/","type":"text","marks":[{"type":"link","attrs":{"href":"https://learning.sap.com/","title":null}}]}]}]}]},{"type":"paragraph","content":[{"text":"Source Documentation:","type":"text","marks":[{"type":"strong"}]}]},{"type":"bullet_list","content":[{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"This skill is based on: ","type":"text"},{"text":"https://github.com/SAP-docs/btp-developer-guide","type":"text","marks":[{"type":"link","attrs":{"href":"https://github.com/SAP-docs/btp-developer-guide","title":null}}]}]}]}]},{"type":"heading","attrs":{"level":2},"content":[{"text":"Common Errors and Solutions","type":"text"}]},{"type":"table","attrs":{"layout":null},"content":[{"type":"tr","content":[{"type":"th","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"Error","type":"text"}]}]},{"type":"th","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"Cause","type":"text"}]}]},{"type":"th","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"Solution","type":"text"}]}]}]},{"type":"tr","content":[{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"Third-party cookie issues","type":"text"}]}]},{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"Browser deprecation","type":"text"}]}]},{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"See SAP Note 3409306","type":"text"}]}]}]},{"type":"tr","content":[{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"XSUAA binding failures","type":"text"}]}]},{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"Missing service instance","type":"text"}]}]},{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"Run ","type":"text"},{"text":"cf create-service xsuaa application","type":"text","marks":[{"type":"code_inline"}]}]}]}]},{"type":"tr","content":[{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"HANA deployment errors","type":"text"}]}]},{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"Wrong target container","type":"text"}]}]},{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"Check ","type":"text"},{"text":"requires","type":"text","marks":[{"type":"code_inline"}]},{"text":" in mta.yaml","type":"text"}]}]}]},{"type":"tr","content":[{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"ATC Priority 1 findings","type":"text"}]}]},{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"Non-cloud-compliant code","type":"text"}]}]},{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"Use ABAP_CLOUD_DEVELOPMENT_DEFAULT variant","type":"text"}]}]}]}]},{"type":"heading","attrs":{"level":2},"content":[{"text":"Version Information","type":"text"}]},{"type":"bullet_list","content":[{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"Skill Version","type":"text","marks":[{"type":"strong"}]},{"text":": 1.1.0","type":"text"}]}]},{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"Last Verified","type":"text","marks":[{"type":"strong"}]},{"text":": 2025-11-27","type":"text"}]}]},{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"Source Last Updated","type":"text","marks":[{"type":"strong"}]},{"text":": 2025-11-21","type":"text"}]}]},{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"Based On","type":"text","marks":[{"type":"strong"}]},{"text":": SAP BTP Developer Guide (","type":"text"},{"text":"https://github.com/SAP-docs/btp-developer-guide","type":"text","marks":[{"type":"link","attrs":{"href":"https://github.com/SAP-docs/btp-developer-guide","title":null}}]},{"text":")","type":"text"}]}]},{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"Next Review","type":"text","marks":[{"type":"strong"}]},{"text":": 2026-02-21","type":"text"}]}]}]},{"type":"hr","attrs":{"markup":"---"}}]},"metadata":{"date":"2026-06-05","name":"sap-btp-developer-guide","author":"@skillopedia","source":{"stars":320,"repo_name":"sap-skills","origin_url":"https://github.com/secondsky/sap-skills/blob/HEAD/plugins/sap-btp-developer-guide/skills/sap-btp-developer-guide/SKILL.md","repo_owner":"secondsky","body_sha256":"40c824f18214669c736ca4e3fe08d4a9aae8fcced2b54e30e7019d25b4346eff","cluster_key":"7593531e19ad2642630d61ce7919d9cd827da5847087ee512d6e3470c087bb7d","clean_bundle":{"format":"clean-skill-bundle-v1","source":"secondsky/sap-skills/plugins/sap-btp-developer-guide/skills/sap-btp-developer-guide/SKILL.md","attachments":[{"id":"b15add60-b21a-574e-a0bc-0137f7246790","key":"uploads/10433ee7-ad12-4ae0-b34e-97553e46c6c8/b15add60-b21a-574e-a0bc-0137f7246790/attachment.md","path":"README.md","size":5305,"sha256":"8f49ce2f74b3d3dac27e060533be9b0b3bf86938e1c8035a6ae19bdf15195809","contentType":"text/markdown; charset=utf-8"},{"id":"4aa3a53a-7b8b-5a3d-8cc9-89ac54622e66","key":"uploads/10433ee7-ad12-4ae0-b34e-97553e46c6c8/4aa3a53a-7b8b-5a3d-8cc9-89ac54622e66/attachment.md","path":"references/abap-cloud.md","size":12510,"sha256":"89affc7a58ff396777c62d95abeaaa1bdb22079ef926b8e63527ba541411291e","contentType":"text/markdown; charset=utf-8"},{"id":"acbe1aaa-4643-55db-990a-2192497e75c1","key":"uploads/10433ee7-ad12-4ae0-b34e-97553e46c6c8/acbe1aaa-4643-55db-990a-2192497e75c1/attachment.md","path":"references/architecture.md","size":6359,"sha256":"747e5067951e67afac8d89320063eaf9e8885b2cc88057a386ce830e326d52f5","contentType":"text/markdown; charset=utf-8"},{"id":"f323dee3-948d-5861-852a-f1a373019915","key":"uploads/10433ee7-ad12-4ae0-b34e-97553e46c6c8/f323dee3-948d-5861-852a-f1a373019915/attachment.md","path":"references/cap-development.md","size":8988,"sha256":"c700895f8d04aec46929028a864e4b00bf72b89a7ce49c7dfaaee7c9cd017b76","contentType":"text/markdown; charset=utf-8"},{"id":"9518eca1-c379-55d1-9853-22bc694651e9","key":"uploads/10433ee7-ad12-4ae0-b34e-97553e46c6c8/9518eca1-c379-55d1-9853-22bc694651e9/attachment.md","path":"references/cicd.md","size":7501,"sha256":"e422a835e6c4083ebb011a0688a5a546bd9ecae1db90c7510172f18fbc2ad33f","contentType":"text/markdown; charset=utf-8"},{"id":"418666c2-b974-5783-a73d-ff94ae0197b7","key":"uploads/10433ee7-ad12-4ae0-b34e-97553e46c6c8/418666c2-b974-5783-a73d-ff94ae0197b7/attachment.md","path":"references/connectivity.md","size":7303,"sha256":"61105d4f2feb09697829d942cd632a8fd8f477c71dc27b6ea65bbf0799d914a3","contentType":"text/markdown; charset=utf-8"},{"id":"4471d3cb-2085-5730-8248-bd0df14116f0","key":"uploads/10433ee7-ad12-4ae0-b34e-97553e46c6c8/4471d3cb-2085-5730-8248-bd0df14116f0/attachment.md","path":"references/deployment.md","size":10248,"sha256":"a7460574356ce1131554e173294f11784481c0c5942b7c8aefa3ddd3793a2d81","contentType":"text/markdown; charset=utf-8"},{"id":"a2744713-c1ce-52ed-a8df-903b516e016e","key":"uploads/10433ee7-ad12-4ae0-b34e-97553e46c6c8/a2744713-c1ce-52ed-a8df-903b516e016e/attachment.md","path":"references/design-patterns.md","size":8358,"sha256":"0440b13c92ff2388847833c4ff65a608b71f411bfb324a6bbe382041afba4804","contentType":"text/markdown; charset=utf-8"},{"id":"ca1a46c7-1bf1-58e8-973b-41b4f6c4d116","key":"uploads/10433ee7-ad12-4ae0-b34e-97553e46c6c8/ca1a46c7-1bf1-58e8-973b-41b4f6c4d116/attachment.md","path":"references/extensions.md","size":6849,"sha256":"6585d41776672cce0e9ae2e502cb4c4b696af795f726fcd38164d628fd2dff6a","contentType":"text/markdown; charset=utf-8"},{"id":"0c99b175-872b-5abe-98ca-8b9c2a251f0c","key":"uploads/10433ee7-ad12-4ae0-b34e-97553e46c6c8/0c99b175-872b-5abe-98ca-8b9c2a251f0c/attachment.md","path":"references/hana-cloud.md","size":6112,"sha256":"f475b4a4ba87b02384f156f3e475cc15cda99111f529e3280ba723a6b46fc5fb","contentType":"text/markdown; charset=utf-8"},{"id":"dd2a2398-366d-5a74-9894-978179e2df21","key":"uploads/10433ee7-ad12-4ae0-b34e-97553e46c6c8/dd2a2398-366d-5a74-9894-978179e2df21/attachment.md","path":"references/mta.md","size":7304,"sha256":"ec39fb1f305c194cd9541adc1696ba2c55dec4c3cea8123caf002b875921346d","contentType":"text/markdown; charset=utf-8"},{"id":"d34abc48-996e-5d2b-8de7-5112473d669b","key":"uploads/10433ee7-ad12-4ae0-b34e-97553e46c6c8/d34abc48-996e-5d2b-8de7-5112473d669b/attachment.md","path":"references/observability.md","size":7141,"sha256":"3aca835352e82dfbe38c826b1a5050e2fa45e1a7cb1e685afc2ecf6dd525a0c4","contentType":"text/markdown; charset=utf-8"},{"id":"e0b39cf1-bad4-5b14-9f90-e1fd0c51f791","key":"uploads/10433ee7-ad12-4ae0-b34e-97553e46c6c8/e0b39cf1-bad4-5b14-9f90-e1fd0c51f791/attachment.md","path":"references/operations.md","size":7026,"sha256":"61622ed36498369faad47c546f6787ca0c1c9dafef8836f81860200475434f55","contentType":"text/markdown; charset=utf-8"},{"id":"771bdb68-f41e-5618-bb42-889268b6175f","key":"uploads/10433ee7-ad12-4ae0-b34e-97553e46c6c8/771bdb68-f41e-5618-bb42-889268b6175f/attachment.md","path":"references/partners.md","size":8582,"sha256":"84ce7cc4f5f9198918dbbe2dbf9992cfe46edc9be3117d591321f181bf77113a","contentType":"text/markdown; charset=utf-8"},{"id":"6eb84169-5447-5ad5-b1b9-bcecfd6b9513","key":"uploads/10433ee7-ad12-4ae0-b34e-97553e46c6c8/6eb84169-5447-5ad5-b1b9-bcecfd6b9513/attachment.md","path":"references/resilience.md","size":7424,"sha256":"304f9371cc386ac7fbc10cb6fc94eb254ceb451c63ff1b4661dad4377bf8ea43","contentType":"text/markdown; charset=utf-8"},{"id":"e6b69d54-c0c7-58c3-8f48-c3bfc5e65789","key":"uploads/10433ee7-ad12-4ae0-b34e-97553e46c6c8/e6b69d54-c0c7-58c3-8f48-c3bfc5e65789/attachment.md","path":"references/runtimes.md","size":5081,"sha256":"6a8a1ef0a7aece5d3c2f27f66f8e31f2223e5d78af7494d65610a5264e8de600","contentType":"text/markdown; charset=utf-8"},{"id":"0f2b08e4-ee1d-5697-8a7e-16d361971b6e","key":"uploads/10433ee7-ad12-4ae0-b34e-97553e46c6c8/0f2b08e4-ee1d-5697-8a7e-16d361971b6e/attachment.md","path":"references/security.md","size":8413,"sha256":"e92f7e65b4e042904cdd766f1c1fbead6fa01b0ad85f3a159a08d914fa9c28fb","contentType":"text/markdown; charset=utf-8"},{"id":"f84de08e-0549-5f90-a411-1437aece20b6","key":"uploads/10433ee7-ad12-4ae0-b34e-97553e46c6c8/f84de08e-0549-5f90-a411-1437aece20b6/attachment.md","path":"references/setup.md","size":7487,"sha256":"b866f00bf08fce652d366907e3397c708d33f2fec1b870e95f3a0ec1504cd563","contentType":"text/markdown; charset=utf-8"},{"id":"43d680b1-68e8-5ff6-a6d6-81df6ce705b7","key":"uploads/10433ee7-ad12-4ae0-b34e-97553e46c6c8/43d680b1-68e8-5ff6-a6d6-81df6ce705b7/attachment.md","path":"references/testing.md","size":8603,"sha256":"541d07f678ca8ed5c24d7e4257ea68015650057bdc4dc1b83acbf0432e50455a","contentType":"text/markdown; charset=utf-8"},{"id":"b9a631d9-e421-5ac7-88a3-52fe8fa2fd4e","key":"uploads/10433ee7-ad12-4ae0-b34e-97553e46c6c8/b9a631d9-e421-5ac7-88a3-52fe8fa2fd4e/attachment.md","path":"references/tools.md","size":6679,"sha256":"9837604beb8f341cbf2f0223848c5f1fe0344fce9b80935dd3ffbcad1cff91ba","contentType":"text/markdown; charset=utf-8"},{"id":"bb56d70c-edad-5e41-9124-4b791ddef28b","key":"uploads/10433ee7-ad12-4ae0-b34e-97553e46c6c8/bb56d70c-edad-5e41-9124-4b791ddef28b/attachment.md","path":"references/tutorials.md","size":8771,"sha256":"3b63a9820b45faf269f0cc45beaa2e14040a9572d2b53c4c41f42fcff6bb8697","contentType":"text/markdown; charset=utf-8"},{"id":"b1c77eb9-fd0e-5d93-b074-42757e6f2b38","key":"uploads/10433ee7-ad12-4ae0-b34e-97553e46c6c8/b1c77eb9-fd0e-5d93-b074-42757e6f2b38/attachment.md","path":"references/ux-design.md","size":7036,"sha256":"8280eeefb444d9d763dd5ed9f564aff3aa28e73445de474c88a19b27ab41d512","contentType":"text/markdown; charset=utf-8"},{"id":"e9fc58fc-d10c-596f-bfe6-0da254e3f616","key":"uploads/10433ee7-ad12-4ae0-b34e-97553e46c6c8/e9fc58fc-d10c-596f-bfe6-0da254e3f616/attachment.md","path":"references/whats-new.md","size":2921,"sha256":"5c2608403d4b8d0957271a3c172afb38c8af26a447aebf9e92f1330b11f30abf","contentType":"text/markdown; charset=utf-8"}],"bundle_sha256":"1f57866412cf7ed59069c6609bdfb3a27461f239dbc0ae9bbea04d453f50e2bd","attachment_count":23,"text_attachments":23,"attachment_storage":"skillopedia-attachments-v1","binary_attachments":0,"excluded_attachments":[]},"cluster_size":1,"skill_md_path":"plugins/sap-btp-developer-guide/skills/sap-btp-developer-guide/SKILL.md","import_metadata":{"date":"2026-06-05","author":"@skillopedia","version":"v1","category":"security","category_label":"Security"},"exact_dupes_collapsed_into_this":0},"license":"GPL-3.0","version":"v1","category":"security","metadata":{"version":"1.1.0","last_verified":"2025-11-27T00:00:00.000Z","review_status":"Complete - Phase 1-14 audit","source_last_updated":"2025-11-21T00:00:00.000Z"},"import_tag":"clean-skills-v1","description":"Develops business applications on SAP Business Technology Platform (BTP) using CAP (Node.js/Java) or ABAP Cloud. \n\nUse when: building cloud applications on SAP BTP, deploying to Cloud Foundry or Kyma runtimes, integrating with SAP HANA Cloud, implementing SAP Fiori UIs, connecting to remote SAP systems, building multitenant SaaS applications, extending SAP S/4HANA or SuccessFactors, setting up CI/CD pipelines, implementing observability, or following SAP development best practices.\n\nKeywords: SAP BTP, Business Technology Platform, CAP, Cloud Application Programming Model, ABAP Cloud, Cloud Foundry, Kyma, SAP HANA Cloud, SAP Fiori, SAPUI5, CI/CD, observability, multitenant, SaaS, SAP BTP ABAP environment, SAP Business Application Studio, SAP Cloud SDK, SAP Integration Suite, SAP Event Mesh, SAP Connectivity Service, SAP Destination Service, XSUAA, OAuth, OpenID Connect, OData, CDS, Core Data Services, ABAP CDS, ABAP RESTful Application Programming Model, RAP, ABAP development, SAP BTP development\n"}},"renderedAt":1782980084569}

SAP BTP Developer Guide Skill Related Skills - sap-btp-cloud-platform : Use for platform fundamentals, account management, and runtime configurations - sap-btp-best-practices : Use for architectural guidance, governance models, and production patterns - sap-cap-capire : Use for CAP development details, service definitions, and database integration - sap-fiori-tools : Use for UI development, Fiori application setup, and frontend deployment - sap-abap : Use for ABAP Cloud development, RAP patterns, and ABAP Environment specifics - sap-btp-connectivity : Use for implementing secure connections t…