sap-activate-object
Activates an inactive SAP repository object via SAP GUI Scripting. Routes to the correct transaction by object type: SE38 for reports/programs/function- group…
Builds and verifies Transports of Copies (ToC) headlessly over RFC — for teams that test in QA before releasing dev TRs. Creates a type-T request targeted at QA, copies every source TR's (and its tasks') object list into it, and makes the E071 union check — ToC contents == union
$ npx -y skills add sapdev-ai/sap-dev --skill sap-transport-copies --agent claude-codeHow it fires
How this skill gets triggered: by you, by Claude, or both.
/sap-transport-copiesContext preview
The summary Claude sees to decide when to auto-load this skill.
Builds and verifies Transports of Copies (ToC) headlessly over RFC — for teams that test in QA before releasing dev TRs. Creates a type-T request targeted at QA, copies every source TR's (and its tasks') object list into it, and makes the E071 union check — ToC contents == union
name: sap-transport-copies description: | Builds and verifies Transports of Copies (ToC) headlessly over RFC — for teams that test in QA before releasing dev TRs. Creates a type-T request targeted at QA, copies every source TR's (and its tasks') object list into it, and makes the E071 union check — ToC contents == union of the sources — a HARD GATE before release, which a human in SE01 practically never does. Optional `--release` (gated) and `--import` (delegates /sap-stms). Also `verify` (standalone union check), `list` (my modifiable ToCs), and `cleanup` (stale ToCs → delegated /sap-se01 delete). Pure RFC: reads via RFC_READ_TABLE (E070/E071/E07T), writes via the CTS FMs TR_INSERT_REQUEST_WITH_TASKS / TR_COPY_COMM / TR_RELEASE_REQUEST through the dev-init wrapper Z_GENERIC_RFC_WRAPPER_TBL — no GUI, no golden-screen recording, one code path on ECC 6 + S/4HANA. Releasing a ToC never closes the source TRs, so the risk profile is low. Prerequisites: pinned RFC profile via /sap-login; the dev-init wrapper (via /sap-dev-init — never deployed here); SAP NCo 3.1 (32-bit). argument-hint: "<TR1[,TR2,...]> | --current [--target <SID>] [--desc \"...\"] [--release] [--import] | verify <TOC> --sources <TRs> | list [--user U] | cleanup"
You assemble a Transport of Copies from one or more source TRs and **prove the E071 union is complete before release** — never releasing a ToC whose object list doesn't cover its sources.
Task: $ARGUMENTS
---
| File | Token / call | Purpose | |---|---|---| | `<SAP_DEV_CORE_SHARED_DIR>/rules/safety_policy.md` + `<SAP_DEV_CORE_SHARED_DIR>/scripts/sap_safety_gate.ps1` | Rule 0 | Environment guard — Steps 3/4 runs `-Action assert` before the write | | `<SKILL_DIR>/references/sap_transport_copies_rfc.ps1` | `-Action create\|include\|verify\|list\|release` | ToC build + E071 union + release (RFC + wrapper) | | `<SAP_DEV_CORE_SHARED_DIR>/scripts/sap_rfc_lib.ps1` | dot-sourced | NCo 3.1 connect/disconnect | | `<SAP_DEV_CORE_SHARED_DIR>/scripts/sap_object_resolver.ps1` | dot-sourced | `Read-SapTableRows` (E070/E071/E07T) | | `<SAP_DEV_CORE_SHARED_DIR>/scripts/sap_artifact_lib.ps1` | dot-sourced | ToC manifest + union-diff registration | | `/sap-login` · `/sap-dev-init` | sub-skills | Pinned profile · deploys the wrapper (this skill never does) | | `/sap-se01` · `/sap-stms` | sub-skills | `cleanup` delete · `--import` (their own gates) |
`--current` resolves the session dev-default TR. `--target` falls back to userConfig `toc_default_target`; blank + no default = hard ERROR (never guess a target).
---
Resolve `work_dir` + `{RUN_TEMP}` (canonical one-liner — `sap_connection_lib.ps1` is dot-sourced there — with `Write-Output ('RUN_TEMP=' + (Get-SapRunTemp))` appended). `{RUN_TEMP}` = the per-run scratch dir holding the log state file; mint it once here and reuse (re-minting breaks the `-Action end` state-file lookup). Start logging (`sap_log_helper.ps1`, state `{RUN_TEMP}\sap_transport_copies_run.json`). Pure RFC — no GUI session.
First token = a TR list or `--current` → **build**; else `verify` | `list` | `cleanup`. Resolve `--target` (arg → `toc_default_target` → hard ERROR). Render the description (`toc_desc_template`, placeholders `{SOURCES}/{TARGET}/{YYYYMMDD}/{USER}`, 60-char truncate).
Pinned RFC profile required (`/sap-login`) — missing → `RFC_LOGON_FAILED`, STOP. Pre-check each source over RFC (E070 exists, type K/W, same system); enumerate tasks via `STRKORR`. Any miss → hard ERROR naming the bad TR. Echo the build plan (sources, task counts, target, desc).
**Rule 0 first** (`safety_policy.md`; build writes: it creates a type-T request and copies object lists into it): `powershell -NoProfile -ExecutionPolicy Bypass -File "<SAP_DEV_CORE_SHARED_DIR>\scripts\sap_safety_gate.ps1" -Action assert -Skill sap-transport-copies` — `SAFETY: ALLOW` (0) proceed; `TYPED_CONFIRM_REQUIRED` (3) -> the operator types the shown `PROD <SID>/<CLIENT>` token, re-run with `-ConfirmationText '<their verbatim answer>'`, proceed only on `ALLOW_CONFIRMED`; `REFUSED class=<C>` (1) / `ERROR` (2) -> **STOP**, end `FAILED` with `-ErrorClass <C>`, relay the remediation lines — never bypass or work around it manually.
# create the type-T request ... sap_transport_copies_rfc.ps1 -Action create -Text "<desc>" -Target "<SID>" -SharedDir "..." # -> TOC:create toc=<TOC> # copy each source's (and its tasks') object list in ... -Action include -Toc <TOC> -Sources "<TR1,TR2>" # HARD GATE: E071 union == union of sources+tasks ... -Action verify -Toc <TOC> -Sources "<TR1,TR2>" -OutTsv "<dir>\toc_union_diff.tsv"
`create` uses `TR_INSERT_REQUEST_WITH_TASKS` (IV_TYPE='T') via the wrapper, parses the new TRKORR from `ES_REQUEST_HEADER`, and re-reads E070 (`TRFUNCTION='T'`) to confirm — else `TOC_CREATE_FAILED`. `include` copies each source via `TR_COPY_COMM` (whole object list, scalar TRKORR→TRKORR) — run it ONCE into a fresh ToC (TR_COPY_COMM appends, so re-including duplicates E071 rows). `verify` set-diffs `(PGMID,OBJECT,OBJ_NAME)`: `MISSING>0` → report every missing object + `TOC_UNION_MISMATCH` and STOP before release.
**Rule 0 first** (`safety_policy.md`; `--release` only): `powershell -NoProfile -ExecutionPolicy Bypass -File "<SAP_DEV_CORE_SHARED_DIR>\scripts\sap_safety_gate.ps1" -Action assert -Skill sap-transport-copies` — `SAFETY: ALLOW` (0) proceed; `TYPED_CONFIRM_REQUIRED` (3) -> the operator types the shown `PROD <SID>/<CLIENT>` token, re-run with `-ConfirmationText '<their verbatim answer>'`, proceed only on `ALLOW_CONFIRMED`; `REFUSED class=<C>` (1) / `ERROR` (2) -> **STOP**, end `FAILED` with `-ErrorClass <C>`, relay the remediation lines — never bypass or work around it manually. The release confirm
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.
Repo: sapdev-ai/sap-dev
Activates an inactive SAP repository object via SAP GUI Scripting. Routes to the correct transaction by object type: SE38 for reports/programs/function- group…
Natural-language SAP API discovery over RFC (no GUI): turn a goal like "create a sales order" or "post a goods movement" into a ranked, trap-annotated,…
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), creates an ATC Run Series bound to…
Executes BDC (Batch Data Communication) sessions in SAP via RFC. Reads SHDB recording files from the bdc/ folder, connects via SAP NCo 3.1, calls…
Changes the package (TADIR-DEVCLASS) assignment of an SAP repository object via the "Object Directory Entry" dialog (Goto > Object Directory Entry). Routes by…
Validates ABAP source (report / program / FM / class / include) before deployment — one skill, dimension-dispatched: naming (variable conventions), type (DDIC…