SAPTransport
Manage CTS transport requests: list user transports, create with target, release, delete, reassign owner, remove objects, check package transport needs, and view object history.
Instructions
Manage CTS transport requests (SE09/SE10 equivalent). Actions: list (defaults to current user, modifiable transports — both Workbench and Customizing), get (details with tasks and objects), create (K=Workbench, W=Customizing, T=Transport of Copies), release, delete, remove_object (remove an object, keep the request), reassign (change owner), release_recursive (release tasks first, then parent), check (check if a package requires a transport — provide type, name, package), history (find transports referencing an object — provide type, name; read-only, works without SAP_ALLOW_TRANSPORT_WRITES). Transport IDs look like A4HK900123. Status: D=modifiable, R=released.
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| action | Yes | list: show transports (defaults to current user, modifiable only). Pass summary=true for a headers-only overview that omits each transport's object lists (keeps an objectCount) — far cheaper when many transports are open. get: fetch transport details including tasks and objects. create: create a new transport request (description required). To target another system, pass target=<system | system.client | /group/> (the Transportziel / TR_TARGET, e.g. "/TRG/" or "C11"; the group and system.client forms require extended transport control to be active). Otherwise omit target and pass an optional package to let SAP infer the route (defaults to $TMP). The response reports the resolved transport target; an empty target means a LOCAL request (cannot be transported onward). release: release a single transport or task. delete: delete a transport (use recursive=true to delete tasks first; removeLockedObjects=true to strip locked objects that otherwise block deletion with "...contains locked objects"). remove_object: remove one object from a request, keeping the request — needs the full key pgmid+type+name. reassign: change transport owner (use recursive=true for tasks too). release_recursive: release all unreleased tasks first, then the transport itself. check: check if a transport is needed for a package/object (requires type, name, package). history: list transports referencing an object (reverse lookup; requires type, name; works without SAP_ALLOW_TRANSPORT_WRITES). layers: list the transport layers this system offers (name + description + resolved target where any) — the valid values for create's transportLayer. Use this to discover a real value instead of guessing; works without SAP_ALLOW_TRANSPORT_WRITES. Uses the package value-help endpoint (NW 7.52+); older releases report it's unavailable. targets: list the valid transport targets (Transportziel / TR_TARGET) this system offers — the valid values for create's target. Use this to discover a real target (e.g. before create with target=). Uses the official ADT target value-help; available only on releases whose ADT stack supports explicit targets (NW 7.50/7.51 report it's unavailable). Read-only. | |
| id | No | Transport request ID, e.g. A4HK900123 (required for get/release/delete/reassign/release_recursive/remove_object) | |
| description | No | Transport description text (required for create) | |
| name | No | Object name (for check, history, or remove_object actions) | |
| package | No | Package name. For create: optional — defaults to $TMP, pass an explicit package to influence the transport route (SAP infers K/W/T from the package's TADIR route). For check: required. | |
| target | No | Explicit transport target (Transportziel / TR_TARGET) for create — what the user means by "create a transport with target X". Forms: a system ("C11"), system.client ("C11.021"), or target group ("/TRG/"). The group and system.client forms require extended transport control (CTC) to be active. Created via the tm:root/newrequest endpoint (the only ADT path that sets the target directly) — this needs a newer ABAP Platform / S/4HANA; SAP_BASIS 7.50 rejects it with "user action is not supported" (an ADT-stack limitation, so set the target in SE09/SE10 there instead). SAP validates the target — an unknown target is rejected. Pass the exact value the user gives; do not invent one. | |
| transportLayer | No | Transport layer for create (optional, advanced). Sent as the ?transportLayer= query param to override which consolidation route — and therefore which target — SAP resolves. OMIT IT by default: SAP resolves the target from the package automatically, which is correct for almost all cases. Never invent a value — if you need a specific layer, obtain it from action="layers" or from the user. Only effective when that layer has a classic STMS consolidation route; otherwise the request is local regardless. | |
| user | No | SAP username to filter by (for list). Defaults to the current SAP user. Use "*" to list all users. | |
| status | No | Transport status filter (for list). D=modifiable (default), R=released, "*"=all statuses. | |
| type | No | Object type for check/history/remove_object actions (PROG, CLAS, DDLS, etc.). Not used by create — the SAP backend infers transport type (K/W/T) from the package's TADIR route on the CreateCorrectionRequest endpoint. | |
| pgmid | No | Program ID for remove_object: "R3TR" (whole object) or "LIMU" (sub-object). Required — object type alone does not determine pgmid. | |
| owner | No | New owner SAP username (required for reassign) | |
| recursive | No | Apply recursively to child tasks (for delete/reassign). release_recursive always recurses. | |
| removeLockedObjects | No | For delete only. Strip locked objects from each task before deleting, so a request that still holds a locked object (e.g. a deleted object's lingering record → HTTP 400 "...contains locked objects") can be removed. | |
| summary | No | For list only. Headers-only overview: omit each transport's (and task's) object lists, keeping id/description/owner/status/target plus an objectCount. Use it to scan many open transports cheaply, then action="get" the one you want in full. |