AbapGit
A source-verified project description is not available yet. Open the detail page or wait for a manual refresh.
Source facts need a manual refresh
The source repository does not currently provide a readable project description. See the README below for project goals and usage guidance.
The source repository does not currently provide a readable project description. See the README below for project goals and usage guidance.
A plug-and-play, expandable collection of generic ABAP / RAP utilities for modern SAP development teams (ABAP on-premise, S/4HANA, and — where noted — ABAP Cloud / clean core).
> New here? Start at docs/recipes.md — a task→tool index > ("I want to send an e-mail → ZCLAUEMAIL", …) — and see ZAUDEMO > for several utilities working together in one report.
Every utility is:
project dependencies, so you can grab just the one you need.
abapGit sub-package per utility. You can pull (or copy) only the folder you want and assign only those objects to your transport request — you never have to take the whole repository. See Install.
copy-paste examples.
verified with abaplint in CI.
Some problems are already solved extremely well by mature community projects. This library references those instead of duplicating them, and focuses on the small, generic helpers that every team otherwise rewrites from scratch.
| Need | Use this established project instead | |------|--------------------------------------| | Excel (XLSX) generation / parsing | abap2xlsx | | Full-featured JSON (cloud-ready, mutable document) | ajson | | Rich application logging UI / framework | ABAP Logger | | Test data from spreadsheets / mocking DB | mockuploader | | Git client inside the system | abapGit | | Curated index of open-source ABAP | dotabap.org · awesome-abap · abap-florilegium — now also augmented by SAP Docs MCP, searchable from Claude / Cursor / Copilot |
The thin wrappers here (e.g. ZCLAUJSON, ZCLAULOGGER) are convenience layers — the per-module READMEs tell you when to graduate to the full library.
Before building anything, search dotabap.org. See docs/related-projects.md for a problem ➜ project map (Excel, JSON, UI5, RTTI, maps, linting, …) so you reuse instead of reinvent.
| Module | Package / folder | Object(s) | Depends on | Cloud-ready | |--------|------------------|-----------|------------|:---:| | Error | ZAUERROR /src/error | ZCXAUERROR | – | ✅ | | String | ZAUSTRING /src/string | ZCLAUSTRING | – | ✅ | | Date | ZAUDATE /src/date | ZCLAUDATE | – | ✅ | | Number | ZAUNUMBER /src/number | ZCLAUNUMBER | – | ✅ | | GUID | ZAUGUID /src/guid | ZCLAUGUID | – | ✅ | | CSV | ZAUCSV /src/csv | ZCLAUCSV | – | ✅ | | Internal tables | ZAUITAB /src/itab | ZCLAUITAB | – | ✅ | | Validation | ZAUVALIDATE /src/validate | ZCLAUVALIDATE | – | ✅ | | Diff (LCS) | ZAUDIFF /src/diff | ZCLAUDIFF | – | ✅ | | Batch/chunking | ZAUBATCH /src/batch | ZCLAUBATCH | ZCXAUERROR | ✅ | | Semantic version | ZAUSEMVER /src/semver | ZCLAUSEMVER | ZCXAUERROR | ✅ | | Message | ZAUMESSAGE /src/message | ZCLAUMESSAGE | – | ✅ | | JSON | ZAUJSON /src/json | ZCLAUJSON | /UI2/CLJSON | ⚠️ | | Logger | ZAULOGGER /src/logger | ZIFAULOG, ZCLAULOGGER | ZCXAUERROR, BAL | ⚠️ | | RAP | ZAURAP /src/rap | ZCLAURAPMSG | RAP runtime | ✅ | | ALV (SALV) | ZAUALV /src/alv | ZCLAUALV (+ ZIFAUALVHANDLER, ZCLAUALVEVENTS for events) | – | ❌ | | SAPscript text | ZAUTEXT /src/text | ZCLAUTEXT | ZCXAUERROR, READTEXT | ⚠️ | | Email | ZAUEMAIL /src/email | ZCLAUEMAIL | ZCXAUERROR, BCS | ⚠️ | | HTTP/REST | ZAUHTTP /src/http | ZCLAUHTTP | ZCXAUERROR | ✅ | | Number range | ZAUNUMRANGE /src/numrange | ZCLAUNUMRANGE | ZCXAUERROR | ⚠️ | | Context | ZAUCONTEXT /src/context | ZCLAUCONTEXT | – | ✅ | | Base64 | ZAUBASE64 /src/base64 | ZCLAUBASE64 | – | ✅ | | Hash | ZAUHASH /src/hash | ZCLAUHASH | ZCXAUERROR | ⚠️ | | Zip | ZAUZIP /src/zip | ZCLAUZIP | ZCXAUERROR | ⚠️ | | Stopwatch | ZAUTIMER /src/timer | ZCLAUTIMER | – | ⚠️ | | Profiler (SAT/SE30-lite) | ZAUPROFILER /src/profiler | ZCLAUPROFILER | – | ⚠️ | | Config/toggles | ZAUCONFIG /src/config | ZCLAUCONFIG | TVARVC | ⚠️ | | Feature flags | ZAUFEATUREFLAG /src/featureflag | ZIFAUFEATUREFLAG, ZCLAUFEATUREFLAG | – | ✅ | | Safe dynamic SQL | ZAUDYNSQL /src/dynsql | ZCLAUDYNSQL | ZCXAUERROR | ✅ | | App-server files | ZAUDATASET /src/dataset | ZCLAUDATASET | ZCXAUERROR, OPEN DATASET | ❌ | | Locking | ZAULOCK /src/lock | ZCLAULOCK | ZCXAUERROR, ENQUEUE | ⚠️ | | Background jobs | ZAUJOB /src/job | ZCLAUJOB | ZCXAUERROR, JOB FMs | ⚠️ | | Doc generator | ZAUDOCGEN /src/docgen | ZCLAUDOCGEN (+ report ZAUDOCGEN) | ZCXAUERROR | ✅ | | Fiori scaffolding | ZAUFIORI /src/fiori | ZCLAUFIORIGEN (+ ZCLAUFIORIFROMALV) | ZCXAUERROR | ✅ | | Released-wrapper gen | ZAUWRAPPER /src/wrapper | ZCLAUWRAPGEN | ZCXAUERROR | ✅ | | Data export gen | ZAUEXPORT /src/export | ZCLAUANALYTICSGEN | ZCXAUERROR | ✅ | | Clock | ZAUCLOCK /src/clock | ZIFAUCLOCK, ZCLAUCLOCK | – | ✅ | | Retry | ZAURETRY /src/retry | ZIFAURUNNABLE, ZCLAURETRY | ZCXAUERROR | ⚠️ | | Guard | ZAUGUARD /src/guard | ZCLAUGUARD | ZCXAUERROR | ✅ | | Test data | ZAUTEST /src/test | ZCLAUTESTDATA | – | ✅ |
\ Cloud-ready = is this object usable in ABAP for Cloud Development (Clean Core)? ✅ = uses only released APIs / cloud-enabled language to the best of our knowledge. ⚠️ = depends on a class/framework whose release state must be checked (the module README names the released alternative). ❌ = SAP GUI / classic Dynpro or statements (OPEN DATASET, dynamic SUBMIT, …) with no cloud equivalent. Final proof is always ATC CLOUDREADINESS on your target — see the Clean Core readiness matrix for the per-object audit (which exact API blocks each ⚠️/❌ and its replacement).
prefix (folder string ➜ sub-package ZAUSTRING, etc.) thanks to FOLDERLOGIC = PREFIX in .abapgit.xml.
Because each utility lives in its own folder and is dependency-free, you can take only what you need:
.clas.abap — for ZCLAUSTRING that is one global class, no includes except the optional test include.
> The per-module README lists the exact object list and any dependency, so > you know precisely what goes into your TR — never the whole repo.
For the two modules that have a dependency (Logger ➜ ZCXAUERROR), grab the Error module first; everything else is standalone.
Objects use the prefix ZCLAU / ZIFAU / ZCXAU. If your team uses a different prefix or a reserved namespace, rename on import (find & replace in the sources, or use abapGit's repo-level rename) — the utilities have no hard-coded references to their own names.
The whole source tree is linted with abaplint:
npm install # installs @abaplint/cli
npm run lint # abaplint, configured by abaplint.jsonABAP Unit tests live next to each class (.clas.testclasses.abap). Run them in ADT (Run As ➜ ABAP Unit Test) or via abapGit ➜ the system's unit runner once the objects are activated in a real system.
> Note on verification scope: abaplint statically parses and style-checks the > code without an SAP backend, so it cannot resolve the standard SAP class > library or execute ABAP Unit. Activation and the unit tests must be run on a > real ABAP system. Every utility was written against released/standard APIs and > documents its dependencies.
Guidance for the things that are patterns, not classes — each with copy-paste before/after ABAP:
| Guide | What it covers | |-------|----------------| | Anti-patterns → remediation playbook | start here — every common ABAP bad habit mapped to a tool here, an external project, or a how-to | | Systemic vs. dev-team scope | which "Part 2" problems a dev team can fix (with what) vs. what's vendor/licensing/org | | Engineering pitfalls cookbook | number ranges, update task, enqueue scoping, job catalog, customizing-as-code, sy-fields, conversions | | Delivery metrics & changelog | rough DORA proxies + Conventional-Commits changelog from git (tools/dev-metrics.js) | | Performance profiling | find the slowest program/SQL — ZCLAUPROFILER (instrument) + ST03N/STAD/SAT/ST05/SQLM (no code) | | Dev workflow | git hooks, Conventional Commits, CI gates, branch/PR flow, ADR/postmortem/review templates | | Clean Core & ATC Cookbook | top ATC findings (SAP-table writes, unreleased APIs, native SQL, sy-fields, Dynpro) with fixes | | RAP / CDS / BTP Modernization | the target stack, migrating reports to CDS+RAP+Fiori, VDM, managed/unmanaged RAP, BTP specifics | | Fiori Conversion Cookbook | turn table maintenance (SM30), ALV reports and selection-screen reports into Fiori tiles (with ZCLAUFIORIGEN) | | Data Export Cookbook | export reports/CDS to Power BI & external systems via OData / analytics / extraction (with ZCLAUANALYTICSGEN) | | BDC → BAPI/RAP Cookbook | replace CALL TRANSACTION / batch input with released BAPIs, RAP (EML) or OData | | Generated API reference | auto-generated method reference for every class/interface (npm run docs; published in CI) | | Internal Tables Cookbook | remove nested loops, sorted vs hashed, table expressions, FOR/REDUCE/FILTER/GROUP BY | | Parallel Processing Cookbook | aRFC & SPTA patterns, throttling, LUW rules, the cloud alternative | | API Usage Cookbook | released replacements cheat-sheet + the released-wrapper pattern | | Auto-documentation | ABAP Doc, enforcing it in CI, generating docs | | Underused standard features | PCRE regex, meshes, enums, RTTI, XCO, codepage, test doubles, … | | Cross-language ideas | DI, TDD, CI linting, fluent APIs, result objects, feature toggles | | Clean Core readiness matrix | per-object audit: cloud-safe set, the API blocking each ⚠️/❌, and its released replacement | | Related projects | "use this instead" map to established dotabap projects (don't reinvent) | | Local AI review with Ollama | free, offline LLM reviewer for your diffs (tools/ollama-review.sh) | | ABAP & MCP integration | the four ABAP MCP options, the recommended path, and the local docs-MCP wired into this repo (docker-compose.sap-docs.yml + .mcp.json) |
See ARCHITECTURE.md for the dependency policy, the cloud-vs- on-premise strategy, the verification approach, and a concrete answer to whether
To keep this page readable, only the first part of the README is shown. Open the original README for the full document.