{"ref":"capability:generators","page":"/capabilities/generators","json":"/capabilities/generators.json","generated":"2026-10-26","drafted_with_ai":true,"entity":{"id":"generators","name":"Generators","domain":"developer-experience","ecosystems":["cap","abap","ui5"],"universal":false,"description":"Getting from nothing to a project that runs, and from a project that runs to one that has the piece you just decided you need. Two different moments: the first is a one-time decision about layout, the second recurs for the life of the project.","short":"Starting a project, and adding pieces to one that runs","core_coverage":{"state":"core-and-community","assessed_at":"2026-09-08","what_core_does":"Both moments, from the CLI. cds init creates the project; cds add expands it a facet at a time — a database, messaging, authentication, a deployment descriptor — which is the grow-as-you-go shape CAP is built around rather than a wizard that asks everything up front.","where_it_stops":"It stops at facets the core knows. It has no opinion about how a service is laid out inside srv, no template for a handler, and nothing to say about the choices a team makes once past the skeleton — which is where the generators here pick up, several of them wrapping cds-dk rather than replacing it.","sources":[{"url":"https://cap.cloud.sap/docs/tools/cds-cli","title":"CDS Command Line Interface — capire","checked":"2026-09-08","quote":"Use cds add to gradually add capabilities ('facets') to projects."}],"relationship":"narrow-by-design","community_adds":"SAP adds the same two moments for CAP Java in the [CAP Java archetype](artifact:cap-java-cds-services-archetype) and the [CDS Maven plugin](artifact:cap-java-cds-maven-plugin), and a prompt-driven path in [Joule in SAP Build Code](artifact:sap-build-code-joule). Community generators such as [@khalidmh/capx](artifact:khalidmh-capx) run cds init and cds add for you and write the starter files that make the chosen facets work together."},"changed_in":[{"version":"@sap/cds-dk 9.1.0","date":"2025-07-02","applies_to":{"ecosystems":["cap"]},"what_changed":"Before this, cds add's facets covered infrastructure — a database, messaging, auth, a deployment descriptor — but nothing about the tests themselves. cds add test arrived, generating test files for CDS services, marked experimental from the start.","invalidates":"Descriptions of cds add as covering only infrastructure facets and never touching test code. That was accurate before mid-2025; since then it does, though still experimental.","source":{"url":"https://cap.cloud.sap/docs/releases/2025/changelog","title":"CAP changelog 2025 — cds-dk@9.1.0","checked":"2026-09-08","quote":"cds add test to generate test files for CDS services [experimental]"}},{"version":"@sap/cds-dk 10.0.3","date":"2026-07-02","applies_to":{"ecosystems":["cap"]},"what_changed":"Before this, cds init --nodejs and cds add --nodejs scaffolded CommonJS projects by default. The default flipped to ESM; a CommonJS project now needs the explicit cds init --add cjs. capire's changelog tags this at cds-dk@10.0.1, but 10.0.0 and 10.0.1 were never published to npm — 10.0.3 is the first version on that line that resolves.","invalidates":"Any generated-project walkthrough that shows require() and module.exports coming out of a bare cds init — on cds-dk 10.0.3 and later, a fresh Node.js project is ESM unless --add cjs was passed.","source":{"url":"https://cap.cloud.sap/docs/releases/2026/changelog","title":"CAP changelog 2026 — cds-dk@10.0.1","checked":"2026-09-08","quote":"cds init/add --nodejs now creates ESM projects by default. For CommonJS projects, use cds init --add cjs."}}],"coverage_by_ecosystem":{"abap":{"state":"core-and-community","assessed_at":"2026-09-14","what_core_does":"ADT's Generate ABAP Repository Objects wizard starts from a database table and writes a draft-enabled RAP business object on it, with its projection, service definition and service binding. SAP names it from SAP S/4HANA 2022 and in the ABAP environments of SAP S/4HANA Cloud and SAP BTP ABAP Environment.","where_it_stops":"At one table and one shape, a RAP service. A team's own starting set, such as a report with its model and view classes copied from a template package, is not something the wizard copies.","sources":[{"url":"https://github.com/SAP-samples/cloud-abap-rap","title":"SAP-samples/cloud-abap-rap — README","checked":"2026-09-14","quote":"there is also an ADT-based generator available which currently only supports one table"},{"url":"https://github.com/SAP-samples/abap-platform-rap-workshops/blob/main/rap6xx/rap620/exercises/ex1/README.md","title":"SAP-samples/abap-platform-rap-workshops — RAP620 exercise 1","checked":"2026-09-14","quote":"The generated business service will be transactional, draft-enabled, and enriched with UI semantics for the generation of the Fiori elements app."}],"relationship":"unassessed","community_adds":"[AbapGenerator](artifact:oberstvongatow-abapgenerator) copies a template package under a new project name, and the [abap2ui5 layout editor](artifact:abap2ui5-layout-editor) generates and regenerates an abap2ui5 view class from a visual layout."},"ui5":{"state":"core-and-community","assessed_at":"2026-09-14","what_core_does":"SAP Fiori tools creates an app from a template: Basic for freestyle SAPUI5, and Worklist, List Report Object Page, Analytical List Page, Overview Page and Form Entry Object Page for SAP Fiori elements.","where_it_stops":"At apps. Every template on SAP's list is an app floorplan; a UI5 library, a custom control, a UI5 tooling extension, and wdi5 added to a project that already exists are not among them.","sources":[{"url":"https://github.com/SAP-docs/sapui5/blob/main/docs/05_Developing_Apps/developing-apps-with-sap-fiori-tools-a460a73.md","title":"SAPUI5 documentation — Developing Apps with SAP Fiori Tools","checked":"2026-09-14","quote":"These templates are available both for SAP Fiori elements apps and freestyle SAPUI5 apps."}],"relationship":"unassessed","community_adds":"SAP's Fiori tools libraries are also published as packages, among them [@sap-ux/ui5-application-writer](artifact:sap-ux-ui5-application-writer) for the first moment and [@sap-ux/fe-fpm-writer](artifact:sap-ux-fe-fpm-writer) and [@sap-ux/create](artifact:sap-ux-create) for adding to an app that runs. Beyond apps, community generators write libraries, custom controls such as [ui5-control-generator](artifact:lemaiwo-ui5-control-generator), and nested frameworks such as [generator-ui5-react-nest](artifact:aydin-ozcan-generator-ui5-react-nest).","note":"Easy-UI5 and its plug-in generators sit in the [UI5 Community](actor:ui5-community) organisation. Easy-UI5 moved there from SAP's GitHub organisation with version 3, and its README says SAP employees still handle its feature requests and bug reports."}},"framing_by_ecosystem":{"abap":{"description":"On the ABAP door a generator writes repository objects into a system: ADT's wizard turns a table into a RAP business service, and [AbapGenerator](artifact:oberstvongatow-abapgenerator) copies a template package under a new project name and fits the model class to the report's selection screen."},"ui5":{"description":"On the UI5 door most generators are Yeoman plug-ins run through [Easy-UI5](artifact:ui5-community-generator-easy-ui5), one per project shape, [generator-ui5-flp-plugin](artifact:ui5-community-generator-ui5-flp-plugin) among them. [@sap/generator-fiori](artifact:sap-generator-fiori) is SAP's generator for Fiori apps, and [create-wdi5](artifact:ui5-community-create-wdi5) adds end-to-end tests to a UI5 app that already exists."}},"drafted_with_ai":true,"history":[{"date":"2026-09-13","field":"name","from":"Generators and scaffolding","to":"Generators","reason":"The map draws every capability as one tile, and a name that spells out its second half ran to three lines at a size nobody could read. The id already carried the short name; the name now matches it. The concern is unchanged: the description and the coverage say what it spans."},{"date":"2026-09-14","field":"ecosystems","from":"cap","to":"cap, abap, ui5","reason":"AbapGenerator scaffolds ABAP objects from a template package. Thirteen UI5 Community repositories generate UI5 projects or add to one: Easy-UI5 and its npm init wrapper, generators for apps, libraries, controls and tooling extensions, and create-wdi5 and generator-ui5-wdi5, which add wdi5 to an existing app."},{"date":"2026-10-26","field":"core_coverage.community_adds","from":"","to":"SAP adds the same two moments for CAP Java in the CAP Java archetype and the CDS Maven plugin, and a prompt-driven path in Joule in SAP Build Code. Community generators such as @khalidmh/capx wrap cds init and cds add.","reason":"Reassessed against the graph (check:capabilities): CAP Java providers, Joule in Build Code and community CAP generators arrived after the assessment and shape the answer."},{"date":"2026-10-26","field":"coverage_by_ecosystem.abap.community_adds","from":"","to":"AbapGenerator and the abap2ui5 layout editor.","reason":"Reassessed against the graph (check:capabilities): the abap2ui5 layout editor arrived after the assessment."},{"date":"2026-10-26","field":"coverage_by_ecosystem.ui5.community_adds","from":"","to":"SAP's Fiori tools libraries as packages (ui5-application-writer, fe-fpm-writer, create); community generators for libraries, controls and nested frameworks.","reason":"Reassessed against the graph (check:capabilities): the Fiori tools packages and further community generators arrived after the assessment."},{"date":"2026-10-26","field":"framing_by_ecosystem.abap.description, framing_by_ecosystem.ui5.description","from":"[AbapGenerator](https://github.com/OberstVonGatow/AbapGenerator), [Easy-UI5](https://github.com/ui5-community/generator-easy-ui5), [create-wdi5](https://github.com/ui5-community/create-wdi5)","to":"[AbapGenerator](artifact:oberstvongatow-abapgenerator), [Easy-UI5](artifact:ui5-community-generator-easy-ui5), [create-wdi5](artifact:ui5-community-create-wdi5)","reason":"Reassessed against the graph (check:capabilities): the atlas holds these entries, so the links point at them and not at their repositories (docs/WRITING.md section 4)."}]},"sap_delivery":{"door":"cap","all":{"built_in":[],"documented_pattern":[],"announced":[],"packages":[{"ref":"artifact:sap-ux-cap-config-writer","name":"@sap-ux/cap-config-writer","json":"/artifacts/sap-ux-cap-config-writer.json"},{"ref":"artifact:sap-ux-fiori-generator-shared","name":"@sap-ux/fiori-generator-shared","json":"/artifacts/sap-ux-fiori-generator-shared.json"},{"ref":"artifact:sap-cds-dk","name":"@sap/cds-dk","json":"/artifacts/sap-cds-dk.json"},{"ref":"artifact:sap-generator-cap-project","name":"@sap/generator-cap-project","json":"/artifacts/sap-generator-cap-project.json"},{"ref":"artifact:sap-generator-cds","name":"@sap/generator-cds","json":"/artifacts/sap-generator-cds.json"},{"ref":"artifact:cap-java-cds-maven-plugin","name":"com.sap.cds:cds-maven-plugin","json":"/artifacts/cap-java-cds-maven-plugin.json"},{"ref":"artifact:cap-java-cds-services-archetype","name":"com.sap.cds:cds-services-archetype","json":"/artifacts/cap-java-cds-services-archetype.json"},{"ref":"artifact:sap-build-code-joule","name":"Joule in SAP Build Code","json":"/artifacts/sap-build-code-joule.json"}]},"by_flavor":{"node":{"built_in":[],"documented_pattern":[],"announced":[],"packages":[{"ref":"artifact:sap-cds-dk","name":"@sap/cds-dk","json":"/artifacts/sap-cds-dk.json"}]},"java":{"built_in":[],"documented_pattern":[],"announced":[],"packages":[{"ref":"artifact:sap-ux-cap-config-writer","name":"@sap-ux/cap-config-writer","json":"/artifacts/sap-ux-cap-config-writer.json"},{"ref":"artifact:cap-java-cds-maven-plugin","name":"com.sap.cds:cds-maven-plugin","json":"/artifacts/cap-java-cds-maven-plugin.json"},{"ref":"artifact:cap-java-cds-services-archetype","name":"com.sap.cds:cds-services-archetype","json":"/artifacts/cap-java-cds-services-archetype.json"}]}}},"edges":{"use_cases":[],"shared_tasks":[],"related_tasks":[],"options":[{"ref":"artifact:cap-handler-generator","name":"@cap-handler/generator","json":"/artifacts/cap-handler-generator.json","ecosystem":"cap","origin_ring":"independent"},{"ref":"artifact:khalidmh-capx","name":"@khalidmh/capx","json":"/artifacts/khalidmh-capx.json","ecosystem":"cap","origin_ring":"independent"},{"ref":"artifact:sap-ux-cap-config-writer","name":"@sap-ux/cap-config-writer","json":"/artifacts/sap-ux-cap-config-writer.json","ecosystem":"cap","origin_ring":"sap-official"},{"ref":"artifact:sap-ux-create","name":"@sap-ux/create","json":"/artifacts/sap-ux-create.json","ecosystem":"ui5","origin_ring":"sap-official"},{"ref":"artifact:sap-ux-fe-fpm-writer","name":"@sap-ux/fe-fpm-writer","json":"/artifacts/sap-ux-fe-fpm-writer.json","ecosystem":"ui5","origin_ring":"sap-official"},{"ref":"artifact:sap-ux-fiori-generator-shared","name":"@sap-ux/fiori-generator-shared","json":"/artifacts/sap-ux-fiori-generator-shared.json","ecosystem":"cap","origin_ring":"sap-official"},{"ref":"artifact:sap-ux-odata-service-writer","name":"@sap-ux/odata-service-writer","json":"/artifacts/sap-ux-odata-service-writer.json","ecosystem":"ui5","origin_ring":"sap-official"},{"ref":"artifact:sap-ux-ui5-application-writer","name":"@sap-ux/ui5-application-writer","json":"/artifacts/sap-ux-ui5-application-writer.json","ecosystem":"ui5","origin_ring":"sap-official"},{"ref":"artifact:sap-cds-dk","name":"@sap/cds-dk","json":"/artifacts/sap-cds-dk.json","ecosystem":"cap","origin_ring":"sap-official"},{"ref":"artifact:sap-generator-cap-project","name":"@sap/generator-cap-project","json":"/artifacts/sap-generator-cap-project.json","ecosystem":"cap","origin_ring":"sap-official"},{"ref":"artifact:sap-generator-cds","name":"@sap/generator-cds","json":"/artifacts/sap-generator-cds.json","ecosystem":"cap","origin_ring":"sap-official"},{"ref":"artifact:abap2ui5-layout-editor","name":"abap2UI5 Layout Editor","json":"/artifacts/abap2ui5-layout-editor.json","ecosystem":"abap","origin_ring":"community-org"},{"ref":"artifact:oberstvongatow-abapgenerator","name":"AbapGenerator","json":"/artifacts/oberstvongatow-abapgenerator.json","ecosystem":"abap","origin_ring":"independent"},{"ref":"artifact:cap-java-cds-maven-plugin","name":"com.sap.cds:cds-maven-plugin","json":"/artifacts/cap-java-cds-maven-plugin.json","ecosystem":"cap","origin_ring":"sap-official"},{"ref":"artifact:cap-java-cds-services-archetype","name":"com.sap.cds:cds-services-archetype","json":"/artifacts/cap-java-cds-services-archetype.json","ecosystem":"cap","origin_ring":"sap-official"},{"ref":"artifact:ui5-community-create-easy-ui5","name":"create-easy-ui5","json":"/artifacts/ui5-community-create-easy-ui5.json","ecosystem":"ui5","origin_ring":"community-org"},{"ref":"artifact:ui5-community-create-wdi5","name":"create-wdi5","json":"/artifacts/ui5-community-create-wdi5.json","ecosystem":"ui5","origin_ring":"community-org"},{"ref":"artifact:ui5-community-generator-easy-ui5","name":"generator-easy-ui5","json":"/artifacts/ui5-community-generator-easy-ui5.json","ecosystem":"ui5","origin_ring":"community-org"},{"ref":"artifact:ui5-community-generator-ui5-add-extension","name":"generator-ui5-add","json":"/artifacts/ui5-community-generator-ui5-add-extension.json","ecosystem":"ui5","origin_ring":"community-org"},{"ref":"artifact:ui5-community-generator-ui5-app","name":"generator-ui5-app","json":"/artifacts/ui5-community-generator-ui5-app.json","ecosystem":"ui5","origin_ring":"community-org"},{"ref":"artifact:ui5-community-generator-ui5-control","name":"generator-ui5-control","json":"/artifacts/ui5-community-generator-ui5-control.json","ecosystem":"ui5","origin_ring":"community-org"},{"ref":"artifact:ui5-community-generator-ui5-library","name":"generator-ui5-library","json":"/artifacts/ui5-community-generator-ui5-library.json","ecosystem":"ui5","origin_ring":"community-org"},{"ref":"artifact:ui5-community-generator-ui5-library-webc","name":"generator-ui5-library-webc","json":"/artifacts/ui5-community-generator-ui5-library-webc.json","ecosystem":"ui5","origin_ring":"community-org"},{"ref":"artifact:ui5-community-generator-ui5-project","name":"generator-ui5-project","json":"/artifacts/ui5-community-generator-ui5-project.json","ecosystem":"ui5","origin_ring":"community-org"},{"ref":"artifact:aydin-ozcan-generator-ui5-react-nest","name":"generator-ui5-react-nest","json":"/artifacts/aydin-ozcan-generator-ui5-react-nest.json","ecosystem":"ui5","origin_ring":"independent"},{"ref":"artifact:ui5-community-generator-ui5-ts-app","name":"generator-ui5-ts-app","json":"/artifacts/ui5-community-generator-ui5-ts-app.json","ecosystem":"ui5","origin_ring":"community-org"},{"ref":"artifact:ui5-community-generator-ui5-ts-app-fcl","name":"generator-ui5-ts-app-fcl","json":"/artifacts/ui5-community-generator-ui5-ts-app-fcl.json","ecosystem":"ui5","origin_ring":"community-org"},{"ref":"artifact:ui5-community-generator-ui5-ts-library","name":"generator-ui5-ts-library","json":"/artifacts/ui5-community-generator-ui5-ts-library.json","ecosystem":"ui5","origin_ring":"community-org"},{"ref":"artifact:ui5-community-generator-ui5-wdi5","name":"generator-ui5-wdi5","json":"/artifacts/ui5-community-generator-ui5-wdi5.json","ecosystem":"ui5","origin_ring":"community-org"},{"ref":"artifact:sap-build-code-joule","name":"Joule in SAP Build Code","json":"/artifacts/sap-build-code-joule.json","ecosystem":"cap","origin_ring":"sap-official"},{"ref":"artifact:btp-build-code","name":"SAP Build Code","json":"/artifacts/btp-build-code.json","ecosystem":"btp","origin_ring":"sap-official"},{"ref":"artifact:lemaiwo-ui5-control-generator","name":"ui5-control-generator","json":"/artifacts/lemaiwo-ui5-control-generator.json","ecosystem":"ui5","origin_ring":"independent"}],"samples":[{"ref":"artifact:abap2ui5-app-template","name":"app-template","json":"/artifacts/abap2ui5-app-template.json"},{"ref":"artifact:cap-js-community-repository-template","name":"repository-template","json":"/artifacts/cap-js-community-repository-template.json"},{"ref":"artifact:sap-samples-teched2025-ad162","name":"teched2025-AD162","json":"/artifacts/sap-samples-teched2025-ad162.json"}],"explained_by":[{"ref":"content:cap-now-supports-reactjs-with-working-demo-ui5-web-components","name":"CAP Now Supports ReactJS - With working demo + UI5 Web components","json":"/content/cap-now-supports-reactjs-with-working-demo-ui5-web-components.json"},{"ref":"content:cap-initializr-generate-sap-cap-projects-in-seconds","name":"CAP Initializr: Generate SAP CAP Projects in Seconds","json":"/content/cap-initializr-generate-sap-cap-projects-in-seconds.json"},{"ref":"content:part-1-how-to-create-a-capm-project-in-bas","name":"Part 1: How to create CAPM project in BAS","json":"/content/part-1-how-to-create-a-capm-project-in-bas.json"},{"ref":"content:receive-events-from-event-mesh-of-integration-suite-to-cap-node-js-applications","name":"Receive Events from Event Mesh of Integration Suite to CAP Node.js Applications","json":"/content/receive-events-from-event-mesh-of-integration-suite-to-cap-node-js-applications.json"},{"ref":"content:ui5-mcp-server-got-extended-for-ui-integration-cards-generation","name":"UI5 MCP Server Got Extended for UI Integration Cards Generation","json":"/content/ui5-mcp-server-got-extended-for-ui-integration-cards-generation.json"},{"ref":"content:prompt-driven-development-building-full-stack-cap-apps-from-user-stories","name":"Prompt-Driven Development: Building Full-Stack SAP CAP Apps from User Stories","json":"/content/prompt-driven-development-building-full-stack-cap-apps-from-user-stories.json"},{"ref":"content:give-your-ai-agent-some-tools-introducing-the-ui5-mcp-server","name":"Give Your AI Agent Some Tools: Introducing the UI5 MCP Server","json":"/content/give-your-ai-agent-some-tools-introducing-the-ui5-mcp-server.json"},{"ref":"content:joule-studio-cap","name":"Joule Studioがリリースされたので早速CAPアプリを自然言語で操作するカスタムスキルを構築してみた","json":"/content/joule-studio-cap.json"},{"ref":"content:sap-fiori-application-generator-available-in-open-source","name":"SAP Fiori Application Generator Available in Open Source","json":"/content/sap-fiori-application-generator-available-in-open-source.json"},{"ref":"content:capm-basics-part-4","name":"CAPM Basics - Part 4","json":"/content/capm-basics-part-4.json"},{"ref":"content:deploying-a-cap-app-with-fiori-app-standalone-html5-repo-host","name":"Deploying a CAP app with Fiori app standalone (HTML5 Repo Host)","json":"/content/deploying-a-cap-app-with-fiori-app-standalone-html5-repo-host.json"},{"ref":"content:capm-basics-part-2","name":"CAPM Basics - Part 2","json":"/content/capm-basics-part-2.json"},{"ref":"content:my-cap-projects-toolbox","name":"My CAP Projects Toolbox","json":"/content/my-cap-projects-toolbox.json"},{"ref":"content:cap-cds-and-fiori-practical-commands","name":"加速开发和部署的CAP CDS和Fiori一些实用命令","json":"/content/cap-cds-and-fiori-practical-commands.json"},{"ref":"content:useful-cap-cds-and-fiori-commands-to-accelerate-development-and-deployment","name":"Useful CAP CDS and Fiori Commands to Accelerate Development and Deployment","json":"/content/useful-cap-cds-and-fiori-commands-to-accelerate-development-and-deployment.json"},{"ref":"content:sap-cloud-application-programming-model-cap-part-1","name":"SAP Cloud Application Programming Model（CAP）：概要およびデモ - Part 1","json":"/content/sap-cloud-application-programming-model-cap-part-1.json"},{"ref":"content:first-java-cap-application","name":"First Java Cap Application","json":"/content/first-java-cap-application.json"},{"ref":"content:cf-create-app-end-to-end-apps-deployed-to-cloud-foundry","name":"cf-create-app: Create End-to-End apps and deploy to Cloud Foundry in minutes","json":"/content/cf-create-app-end-to-end-apps-deployed-to-cloud-foundry.json"}],"normative_context":[]}}