Skip to main content

Command Reference

Run erpl-adt --help for the live listing; this page documents the same surface offline. The CLI is organised as erpl-adt [global-flags] <group> <action> [args]. Every command accepts --json for machine-readable output.


search <pattern>                        Search for ABAP objects
--type <type> Object type: CLAS, PROG, TABL, INTF, FUGR, DTEL, …
--max <n> Maximum number of results

OBJECT

Read, create, delete, lock/unlock ABAP objects.

object create                           Create an ABAP object
--type <type> Object type (required, e.g. CLAS/OC, PROG/P)
--name <name> Object name (required)
--package <pkg> Target package (required)
--description <text> Object description
--transport <id> Transport request number
object delete <uri> Delete an ABAP object
--handle <handle> Lock handle (skips auto-lock if provided)
--transport <id> Transport request number
object lock <uri> Lock an object for editing
--session-file <path> Save session for later unlock
object read <name-or-uri> Read object structure
object run <class-name-or-uri> Run an ABAP console class (IF_OO_ADT_CLASSRUN)
object unlock <uri> Unlock an object
--handle <handle> Lock handle (required)
--session-file <path> Session file for stateful workflow

SOURCE

Read, write, and check ABAP source code.

source check <name-or-uri>              Check syntax
source edit <name-or-uri> Open in $EDITOR and write back
--type <type> Object type for name resolution
--section <section> main | localdefinitions | localimplementations | testclasses
--transport <id> Transport request number
--activate Activate after writing
--no-write Open editor but do not write back
source read <name-or-uri> Read source code
--version <version> active (default) | inactive
--section <section> main (default) | localdefinitions | localimplementations | testclasses | all
--type <type> Disambiguate name resolution
--color / --no-color ANSI syntax highlighting
--editor Open in $VISUAL/$EDITOR (plain text)
source write <name-or-uri> Write source code
--file <path> Path to local source file (required)
--section <section> main (default) | localdefinitions | localimplementations | testclasses
--handle <handle> Lock handle (skips auto-lock if provided)
--transport <id> Transport request number
--session-file <path> Session file for stateful workflow
--activate Activate after writing
--optimistic Try lockless write first (pre-7.51 SAP)

ACTIVATE

activate <name-or-uri>                  Activate an inactive ABAP object

TEST / CHECK

test <name-or-uri>                      Run ABAP Unit tests
check <name-or-uri> Run ATC quality checks
--variant <name> ATC variant (default: DEFAULT)

TRANSPORT

transport create                        Create a transport
--desc <text> Transport description (required)
--package <pkg> Target package (required)
transport list List transports
--user <user> Filter by user (default: DEVELOPER)
transport release <number> Release a transport

DATA DICTIONARY

ddic cds <name>                         Get CDS source
ddic table <name> Get table definition (fetches abap_type + check_table by default)
--no-resolve-types Skip data-element lookup; show field names and types only (fast)
--raw Print raw SAP XML response

PACKAGE

package exists <name>                   Check if package exists
package list <name> List package contents (one level)
package tree <name> List package contents recursively (BFS)
--type <type> Filter: CLAS, PROG, TABL, INTF, FUGR, …
--max-depth <n> Maximum recursion depth (default: 50)

DISCOVER

discover services                       Discover ADT services
--workspace <name> Filter by workspace (e.g. "Object Repository")

BW

SAP BW/4HANA Modeling operations. See the BW guide for usage. Each subcommand below is documented as a top-level command; flags are listed exactly as erpl-adt bw <action> --help prints them.

bw activate

Activate BW objects.

bw activate <type> <name>
--validate Pre-check only, don't activate
--simulate Dry run of activation
--background Run as background job
--force Force activation even with warnings
--exec-check Set execChk=true in activation payload
--with-cto Set withCTO=true in activation payload
--sort Validate mode: sort dependency order
--only-ina Validate mode: only inactive objects
--transport <corrnr> Transport request

bw adturi

Show BW-to-ADT URI mappings.

bw adturi

bw applog

Read BW repository application logs.

bw applog
--username <user> Filter by user
--start <timestamp> Filter by start timestamp
--end <timestamp> Filter by end timestamp

bw changeability

Show BW changeability settings.

bw changeability

bw create

Create a BW object.

bw create <type> <name>
--package <pkg> Target package
--copy-from-name <name> Copy source object name
--copy-from-type <type> Copy source object type
--file <path> Optional XML payload file for create request body

bw datavolumes

Read BW data volumes.

bw datavolumes
--infoprovider <name> InfoProvider filter
--max <n> Max rows

bw dbinfo

Show HANA database info.

bw dbinfo

bw delete

Delete a BW object.

bw delete <type> <name>
--lock-handle <handle> Lock handle (required)
--transport <corrnr> Transport request number
--transport-lock-holder <corrnr> Explicit Transport-Lock-Holder header
--foreign-objects <value> Foreign-Objects header
--foreign-object-locks <value> Foreign-Object-Locks header
--foreign-correction-number <corrnr> Foreign-Correction-Number header
--foreign-package <pkg> Foreign-Package header

bw discover

Discover BW modeling services.

bw discover

bw export-area

Export all objects in a BW InfoArea to JSON or Mermaid.

bw export-area <infoarea>
--mermaid Output Mermaid dataflow diagram instead of JSON
--shape <catalog|openmetadata> JSON output shape: catalog (default) or openmetadata
--max-depth <n> Max recursion depth for nested infoareas (default: 10)
--types <T1,T2,...> Comma-separated TLOGO type filter (e.g. ADSO,DTPA). Default: all
--no-lineage Skip DTP lineage graph collection (faster)
--no-queries Skip query graph collection
--no-search Skip search supplement, use BFS tree only (faster)
--no-xref-edges Skip xref-based INFOPROVIDER→QUERY edge collection
--no-elem-edges Skip orphan ELEM XML parsing for provider edge recovery
--iobj-edges Show InfoObject nodes (dimensions, filters, variables) in Mermaid
--version <a|m> Object version: a (active, default) or m (modified)
--out-dir <dir> Save {name}_catalog.json and {name}_dataflow.mmd to directory
--service-name <name> Service name for openmetadata FQN (default: erpl_adt)
--system-id <id> System ID for openmetadata FQN prefix

bw export-cube

Export a single BW InfoProvider and its connected graph to JSON or Mermaid.

bw export-cube <cube-name>
--mermaid Output Mermaid dataflow diagram instead of JSON
--shape <catalog|openmetadata> JSON output shape: catalog (default) or openmetadata
--no-lineage Skip DTP lineage graph collection (faster)
--no-xref-edges Skip xref-based edge collection (faster, fewer API calls)
--no-elem-edges Skip orphan ELEM XML parsing for provider edge recovery
--iobj-edges Show InfoObject nodes (dimensions, filters, variables) in Mermaid
--version <a|m> Object version: a (active, default) or m (modified)
--out-dir <dir> Save {name}_catalog.json and {name}_dataflow.mmd to directory
--service-name <name> Service name for openmetadata FQN (default: erpl_adt)
--system-id <id> System ID for openmetadata FQN prefix

bw export-query

Export a single BW query and its connected graph to JSON or Mermaid.

bw export-query <query-name>
--mermaid Output Mermaid dataflow diagram instead of JSON
--shape <catalog|openmetadata> JSON output shape: catalog (default) or openmetadata
--no-lineage Skip DTP lineage graph collection (faster)
--no-queries Skip query graph collection
--no-xref-edges Skip xref-based edge collection (faster, fewer API calls)
--no-elem-edges Skip orphan ELEM XML parsing for provider edge recovery
--iobj-edges Show InfoObject nodes (dimensions, filters, variables) in Mermaid
--version <a|m> Object version: a (active, default) or m (modified)
--out-dir <dir> Save {name}_catalog.json and {name}_dataflow.mmd to directory
--service-name <name> Service name for openmetadata FQN (default: erpl_adt)
--system-id <id> System ID for openmetadata FQN prefix

bw favorites

List or clear BW backend favorites.

bw favorites

bw job

BW background job operations.

bw job <action>

bw lineage

Build a canonical BW lineage graph rooted at a DTP. Returns typed nodes, typed edges, and per-call provenance. JSON output is intended to round-trip into OpenMetadata, DataHub, or a custom catalog.

bw lineage <dtp_name>
--trfn <name> Optional explicit transformation name
--version <v> Version: a (active, default), m (modified), d (delivery)
--max-xref <n> Maximum xref neighbors to include (default: 100)
--no-xref Disable xref expansion for a strict DTP/TRFN graph

bw lock

Lock a BW object for editing. Stateful — pair with bw save and bw unlock.

bw lock <type> <name>
--activity <code> Activity: CHAN (default), DELE, MAIN
--parent-name <name> Parent object name (lock context)
--parent-type <type> Parent object type (lock context)
--transport-lock-holder <corrnr> Explicit Transport-Lock-Holder header
--foreign-objects <value> Foreign-Objects header
--foreign-object-locks <value> Foreign-Object-Locks header
--foreign-correction-number <corrnr> Foreign-Correction-Number header
--foreign-package <pkg> Foreign-Package header
--session-file <path> Save session state for multi-step workflow

bw locks

Monitor and break BW object locks.

bw locks <list|delete>
--user <name> Filter / specify lock owner user
--search <pattern> Search pattern for list
--max <n> Maximum results (default: 100)
--table-name <name> Table name from list (for delete)
--arg <base64> Encoded arg from list (for delete)
--mode <code> Lock mode, default: E (for delete)
--scope <n> Lock scope, default: 1 (for delete)
--owner1 <base64> Owner1 from list (for delete)
--owner2 <base64> Owner2 from list (for delete)

bw message

Resolve a BW message text.

bw message <identifier> <textype>
--msgv1 <value> Message variable 1
--msgv2 <value> Message variable 2
--msgv3 <value> Message variable 3
--msgv4 <value> Message variable 4

bw move

List BW move requests.

bw move

bw nodepath

Resolve a BW object node path.

bw nodepath
--object-uri <uri> BW object URI (e.g. /sap/bw/modeling/adso/…) (required)

bw nodes

Show BW object node structure.

bw nodes <type> <name>
--datasource Use DataSource structure path instead of InfoProvider
--child-name <name> Filter by child name
--child-type <type> Filter by child type

bw qprops

Read BW query properties rules.

bw qprops

bw read

Generic BW object reader. Use the family-specific readers (bw read-adso, bw read-dtp, …) when you want a parsed view.

bw read <type> <name>
--version <v> Version: a (active, default), m (modified), d (delivery)
--source-system <name> Source system (required for RSDS, APCO)
--uri <path> Direct URI from search results (overrides type/name path)
--raw Output raw XML

bw read-adso

Read BW ADSO field structure.

bw read-adso <name>
--version <v> Version: a (active, default), m (modified), d (delivery)

bw read-dmod

Read BW DMOD topology.

bw read-dmod <name>
--version <v> Version: a (active, default), m (modified), d (delivery)

bw read-dtp

Read BW DTP connection details (source, target, mode, runtime settings).

bw read-dtp <name>
--version <v> Version: a (active, default), m (modified), d (delivery)

bw read-query

Read a BW query-family component. Defaults to a Mermaid-rendered graph; switch to --format table or --json for structured output.

bw read-query <name>
--version <v> Version: a (active, default), m (modified), d (delivery)
--format <f> Non-JSON output format: mermaid (default) or table
--layout <l> Mermaid layout: detailed (default) or compact
--direction <d> Mermaid direction: TD (default) or LR
--max-nodes-per-role <n> Reduce fan-out: keep at most n nodes per role; add summary nodes
--focus-role <r> Limit reduction to a specific role (rows|columns|free|filter|member|subcomponent|component)
--json-shape <s> JSON output shape: legacy (default), catalog (flat), or truth (lineage v3)
--upstream <m> Upstream resolution mode: explicit (default) or auto
--upstream-dtp <name> Compose query graph with upstream BW lineage rooted at DTP
--upstream-no-xref Disable xref expansion for upstream lineage composition
--upstream-max-xref <n> Maximum xref neighbors in upstream lineage composition (default: 100)
--lineage-max-steps <n> Maximum auto-upstream planner expansion steps (default: 4)
--lineage-strict Fail when auto-upstream resolution is ambiguous or incomplete
--lineage-explain Emit upstream resolution warnings/decisions for troubleshooting

bw read-rsds

Read BW RSDS field structure.

bw read-rsds <name>
--source-system <logsys> Source system (required, e.g. ECLCLNT100)
--version <v> Version: a (active, default), m (modified), d (delivery)

bw read-trfn

Read BW transformation definition.

bw read-trfn <name>
--version <v> Version: a (active, default), m (modified), d (delivery)

bw reporting

Read BW reporting metadata.

bw reporting <compid>
--dbgmode Set dbgmode=true query parameter
--metadata-only MetadataOnly header
--incl-metadata InclMetadata header
--incl-object-values InclObjectValues header
--incl-except-def InclExceptDef header
--compact-mode CompactMode header
--from-row <n> FromRow header
--to-row <n> ToRow header

bw save

Save a modified BW object. Pair with bw lock (to acquire the handle) and bw unlock (after save).

bw save <type> <name>
--lock-handle <handle> Lock handle from bw lock (required)
--transport <corrnr> Transport request number
--timestamp <ts> Server timestamp from lock response
--transport-lock-holder <corrnr> Explicit Transport-Lock-Holder header
--foreign-objects <value> Foreign-Objects header
--foreign-object-locks <value> Foreign-Object-Locks header
--foreign-correction-number <corrnr> Foreign-Correction-Number header
--foreign-package <pkg> Foreign-Package header

Search BW objects across the catalog. Supports rich metadata filtering by type, subtype, status, change history, InfoArea assignment, and reverse dependency lookup.

bw search <pattern>
--type <code> Object type (ADSO, HCPR, IOBJ, TRFN, DTPA, RSDS, …)
--subtype <code> Object subtype (REP, SOB, RKF, …)
--max <n> Maximum results (default: 100)
--status <code> Object status: ACT, INA, OFF
--changed-by <user> Last changed by filter
--changed-from <date> Changed on or after date
--changed-to <date> Changed on or before date
--created-by <user> Created by filter
--created-from <date> Created on or after date
--created-to <date> Created on or before date
--depends-on-name <name> Filter by dependency object name
--depends-on-type <type> Filter by dependency object type
--infoarea <name> Filter by InfoArea assignment (e.g. 0D_NW_DEMO)
--search-desc Also search in descriptions
--search-name Search in names (default: true)

bw search-md

Show BW search metadata.

bw search-md

bw sysinfo

Show BW system properties.

bw sysinfo

bw transport

Transport lifecycle for BW objects.

bw transport <check|write|list|collect>
--transport <corrnr> Transport number (for write/collect)
--package <pkg> Package name (for write)
--own-only Show only own transport requests
--rddetails <mode> Check/list detail mode: off|objs|all (default: all)
--rdprops Check/list include properties section
--allmsgs Include all messages where supported
--simulate Dry run (write only)
--mode <code> Collection mode (e.g. 000, 001, 002, 003, 004, 005, 033)
--transport-lock-holder <corrnr> Explicit Transport-Lock-Holder header
--foreign-objects <value> Foreign-Objects header
--foreign-object-locks <value> Foreign-Object-Locks header
--foreign-correction-number <corrnr> Foreign-Correction-Number header
--foreign-package <pkg> Foreign-Package header

bw unlock

Release a BW object lock.

bw unlock <type> <name>

bw validate

Validate (lint) a BW object.

bw validate <type> <name>
--action <name> Validation action name (default: validate)

bw valuehelp

BW value-help lookup.

bw valuehelp <domain>
--query <qs> Raw query string (k=v&k2=v2)
--max <n> Max rows
--pattern <text> Pattern filter
--type <code> Object type filter
--infoprovider <name> InfoProvider filter

bw virtualfolders

Read BW virtual folders.

bw virtualfolders
--package <pkg> Package filter
--type <type> Object type filter
--user <user> User filter

bw xref

Show BW cross-references.

bw xref <type> <name>
--version <v> Object version: A (active), M (modified)
--association <code> Filter by association code (001, 002, 003, …)
--assoc-type <type> Filter by associated object type (IOBJ, ADSO, …)
--max <n> Maximum number of results to return

MCP SERVER

mcp                                     Start MCP server (JSON-RPC over stdio)

See the MCP guide for client wiring and the full tool catalogue.


CREDENTIALS

login                                   Save connection credentials (~/.adt.creds, chmod 600)
logout Remove saved credentials

GLOBAL FLAGS

--host <host>                           SAP hostname (default: localhost)
--port <port> SAP port (default: 50000)
--user <user> SAP username (default: DEVELOPER)
--password <pass> SAP password
--password-env <var> Read password from env var (default: SAP_PASSWORD)
--client <num> SAP client (default: 001)
--https Use HTTPS
--insecure Skip TLS verification
--json Machine-readable JSON output
--timeout <sec> Request timeout in seconds
--session-file <path> Persist session for lock/write/unlock workflows
--color / --no-color ANSI colored output (auto-detects TTY)
-v Verbose logging (INFO level)
-vv Debug logging (DEBUG level)

Credential resolution: explicit --password flag > --password-env > .adt.creds (via login) > SAP_PASSWORD env var.


EXIT CODES

CodeMeaning
0Success
1Connection / authentication error
2Not found (object, package, etc.)
3Clone error (deploy workflow)
4Pull error (deploy workflow)
5Activation error
6Lock conflict
7Test failure
8ATC check error
9Transport error
10Timeout
99Internal error

Tip: erpl-adt <group> <action> --help prints command-specific examples and the latest flag listing — useful when a release adds something this page hasn't picked up yet.