Skip to content

abap cli 1.0.0

Choose a tag to compare

@vaibhavgoel-github-1986 vaibhavgoel-github-1986 released this 17 Sep 05:22
· 18 commits to main since this release

First stable release. Built entirely on the SAP ADT REST API — nothing is installed in the SAP system.

Install

pipx install git+https://github.com/vaibhavgoel-github-1986/abap-adt-cli@v1.0.0

Existing installs: abap update.

What changed since 0.2.0

Objects arrive complete. A class now pulls and pushes as five files — main source, local definitions, local implementations, macros and test classes — instead of one. Function groups expand through the repository nodestructure, so includes and function modules are fetched as the separate objects ADT actually edits.

The workspace only holds what can go back. 24 object types are supported for both pull and push; 5 whose only ADT representation is the SAP GUI shim are skipped by design. Run abap types to see the list, or abap types --all to see what is skipped and why. A full package pull now leaves zero files that push would reject.

Metadata types round-trip. DTEL, DOMA, TTYP, ENQU, MSAG and SRVB push back as structured XML against the object URI.

SE80 layout by default. One folder per object, function group children under their group. --flat keeps the old layout.

Fixes worth calling out

  • No more phantom drift. SAP strips the trailing newline on write, so every pushed object reported itself as modified forever. Files are now hashed in canonical form.
  • Message classes uploaded as plain text. A metadata part stores an empty path, which was indistinguishable from unset. Parts are now resolved from the filename.
  • Metadata always looked changed after push, because SAP stamps adtcore:changedAt. Those parts are re-read from the server after upload.
  • 404 on fetch now means absent, not failed — generated CDS views advertise a URI they do not serve.
  • $TMP owner scoping no longer leaks to other local packages.
  • One unpushable file no longer blocks an entire push; it is reported and skipped.

Verified

Pulled 3,906 objects into 3,986 files in 99s with zero failures and a clean status afterwards. Transport recording confirmed against a real request: editing one method records one LIMU entry, not a lock on the whole class. 87 tests, ruff clean.