sap-activate-object
Activates an inactive SAP repository object via SAP GUI Scripting. Routes to the correct transaction by object type: SE38 for…
Generates an ABAP CDS view (Core Data Services) from a spec or a natural-language description and deploys it to a live SAP system WITHOUT ADT — via the RFC-enabled installer FM Z_CDS_DDL_INSTALL (which hosts CL_DD_DDL_HANDLER_FACTORY). Emits classic DDL (DEFINE VIEW with
Claude Code
$ npx -y skills add sapdev-ai/sap-dev --skill sap-gen-cds --agent claude-code
Codex
$ npx skills add sapdev-ai/sap-dev --skill sap-gen-cds -a codex -y
Cursor
$ npx skills add sapdev-ai/sap-dev --skill sap-gen-cds -a cursor -y
Gemini CLI
$ npx skills add sapdev-ai/sap-dev --skill sap-gen-cds -a gemini-cli -y
GitHub Copilot
$ npx skills add sapdev-ai/sap-dev --skill sap-gen-cds -a github-copilot -y
OpenCode
$ npx skills add sapdev-ai/sap-dev --skill sap-gen-cds -a opencode -y
Windsurf
$ npx skills add sapdev-ai/sap-dev --skill sap-gen-cds -a windsurf -y
name: sap-gen-cds description: | Generates an ABAP CDS view (Core Data Services) from a spec or a natural-language description and deploys it to a live SAP system WITHOUT ADT — via the RFC-enabled installer FM Z_CDS_DDL_INSTALL (which hosts CL_DD_DDL_HANDLER_FACTORY). Emits classic DDL (DEFINE VIEW with @AbapCatalog.sqlViewName) on SAP_BASIS 7.50-7.54, and can emit view entities (DEFINE VIEW ENTITY) on 7.55+. Creates the DDL source (DDLS), registers its TADIR entry under a package, activates it (generating the SQL view for classic views), and verifies via RFC (TADIR / DD02L / DD25L). Also supports delete. Part of the D13 clean-core codegen lane. Phase 1 = basic / composite views; RAP behaviour definitions + OData binding are out of scope (demand-gated Phase 2). Prerequisites: SAP profile saved via /sap-login (RFC password required); SAP NCo 3.1 (32-bit, .NET 4.0) in GAC; SAP_BASIS >= 7.50; the installer FM Z_CDS_DDL_INSTALL present + Remote-Enabled (Step 3 bootstraps it if absent). argument-hint: "<VIEW_NAME> [--from <spec-or-desc>] [--sql-view <NAME>] [--base <TABLE>] [--package <PKG>] [--delete] [--activate|--no-activate]"
You generate an ABAP CDS view from a spec / description and deploy it to a live SAP system with **no ADT** — the DDL source is created + activated through the RFC-enabled installer FM `Z_CDS_DDL_INSTALL`.
Task: $ARGUMENTS
---
| File | Token / use | Purpose | |---|---|---| | `<SAP_DEV_CORE_SHARED_DIR>/rules/safety_policy.md` | *(rule)* | **Rule 0 (highest priority)** — environment guard; enforced by Step 0b via `sap_safety_gate.ps1` | | `<SAP_DEV_CORE_SHARED_DIR>/rules/skill_operating_rules.md` | *(rule)* | Mandatory operating rules. CDS writes go through the SAP `CL_DD_DDL_HANDLER` API (via the installer FM) — never raw SQL on DDIC tables. | | `<SAP_DEV_CORE_SHARED_DIR>/rules/tr_resolution.md` | *(rule)* | TR resolution — transportable views delegate to `/sap-transport-request`; `$TMP` needs no TR. | | `<SAP_DEV_CORE_SHARED_DIR>/tables/sap_object_naming_rules.tsv` | *(read)* | `CDS_VIEW` + `CDS_SQL_VIEW` naming rows (validated in Step 1.5). | | `<SAP_DEV_CORE_SHARED_DIR>/scripts/sap_check_object_name.ps1` | *(invoke)* | Shared object-name validator. | | `<SAP_DEV_CORE_SHARED_DIR>/scripts/sap_rfc_lib.ps1` | *(dot-source)* | NCo helpers used by the deploy/verify references. | | `<SAP_DEV_CORE_SHARED_DIR>/scripts/sap_tadir_delete.ps1` | *(invoke)* | Clears the DDLS TADIR orphan the handler's `delete` leaves behind (delete flow). | | `<SKILL_DIR>/references/sap_cds_release_probe.ps1` | *(invoke)* | RFC read of CVERS SAP_BASIS for the Step 0a release gate. | | `<SKILL_DIR>/references/Z_CDS_DDL_INSTALL.abap` | *(deploy source)* | The installer FM source of record (bootstrapped in Step 3). | | `<SKILL_DIR>/references/sap_cds_deploy.ps1` | *(invoke)* | RFC caller for the installer FM (CREATE / DELETE); fails loud if the FM is absent / not Remote-Enabled. | | `<SKILL_DIR>/references/sap_cds_verify.ps1` | *(invoke)* | RFC verification: TADIR(DDLS) + generated SQL view active (DD02L / DD25L). |
---
Resolve `work_dir` via the env-aware helper (never a direct `settings.json` read). Resolve `<SAP_DEV_CORE_SHARED_DIR>` (cross-plugin: 3 levels up from `<SKILL_DIR>`, then `sap-dev-core\shared`). Capture `WORK_DIR` + `RUN_TEMP`:
powershell -NoProfile -ExecutionPolicy Bypass -Command ". '<SAP_DEV_CORE_SHARED_DIR>\scripts\sap_settings_lib.ps1'; . '<SAP_DEV_CORE_SHARED_DIR>\scripts\sap_connection_lib.ps1'; Write-Output ('WORK_DIR=' + (Get-SapWorkDir)); Write-Output ('RUN_TEMP=' + (Get-SapRunTemp)); Write-Output ('CUSTOM_URL=' + (Get-SapSettingValue 'custom_url' ((Get-SapWorkDir) + '\custom')))"Set `{WORK_TEMP}` = `{work_dir}\temp`; write this skill's scratch (generated `.ddl`) under `{RUN_TEMP}`.
powershell -ExecutionPolicy Bypass -File "<SAP_DEV_CORE_SHARED_DIR>\scripts\sap_log_helper.ps1" -Action start -StateFile "{RUN_TEMP}\sap_gen_cds_run.json" -Skill sap-gen-cds -ParamsJson "{\"view\":\"<VIEW_NAME>\"}"---
CDS DDL sources require the DDL handler infrastructure — SAP_BASIS **7.50+**. Classic CDS (`DEFINE VIEW ... @AbapCatalog.sqlViewName`) works 7.50-7.54; **view entities** (`DEFINE VIEW ENTITY`, no SQL view) need **7.55+**. Probe the release (the reader runs from a file — never an inline `-Command` with `$vars`, which the bash host expands to empty before PowerShell parses):
C:\Windows\SysWOW64\WindowsPowerShell\v1.0\powershell.exe -NoProfile -ExecutionPolicy Bypass -File "<SKILL_DIR>\references\sap_cds_release_probe.ps1" -SharedScripts "<SAP_DEV_CORE_SHARED_DIR>\scripts"
Parse the `SAP_BASIS=<release>` line; `RELEASE: ERROR …` → surface it (no RFC destination / read failed) and do not guess a release.
safe on 7.50-7.54) or **view entity** only when `>= 755` AND the caller asked for one.
`NOT_SUPPORTED: CDS views require SAP_BASIS >= 7.50 (this system is <release>). Use classic ABAP (/sap-gen-abap) instead.` Log end `Status SKIPPED`, `ErrorClass CDS_RELEASE_UNSUPPORTED`.
---
This skill deploys and activates a CDS view in the live system (DDLS create + TADIR registration + activation through the installer FM) and can also `--delete`. Generation (Step 2) is local, but the flow continues into deploy — run the environment gate up front:
powershell -NoProfile -ExecutionPolicy Bypass -File "<SAP_DEV_CORE_SHARED_DIR>\scripts\sap_safety_gate.ps1" -Action assert -Skill sap-gen-cds
| Verdict (last line) | Exit | Action | |---|---|---| | `SAFETY: ALLOW ...` | 0 | proceed (log via `-Action step`, step `safety_gate`) | | `
SAP development automation skills for AI coding assistants. Windows-only — the skills drive SAP GUI for Windows via GUI Scripting (plus optional RFC via SAP NCo); there is no macOS/Linux path.
Activates an inactive SAP repository object via SAP GUI Scripting. Routes to the correct transaction by object type: SE38 for…
Natural-language SAP API discovery over RFC (no GUI): turn a goal like "create a sales order" or "post a goods movement" into a…
Runs the SAP ABAP Test Cockpit (ATC) end-to-end as a quality gate: builds an SCI Object Set scoped to the target object(s),…
Executes BDC (Batch Data Communication) sessions in SAP via RFC. Reads SHDB recording files from the bdc/ folder, connects via…
Changes the package (TADIR-DEVCLASS) assignment of an SAP repository object via the "Object Directory Entry" dialog (Goto >…
Validates ABAP source (report / program / FM / class / include) before deployment — one skill, dimension-dispatched: naming…
You MUST use this before any creative work - creating features, building components, adding functionality, modifying behavior, or…
Ask which skill or flow fits your situation. A router over the skills in this repo.