off-stack-abap
A demonstration of off-stack ABAP development: one class with an add method, linted by abaplintabaplintStatic analysis for ABAP that runs outside a system on serialised source in a repository, so ABAP checks run in a pull request and in CI before the code ever reaches a system.community org, abap, transpiled to JavaScript and run with its ABAP Unit tests on Node.js.
Runs the ABAP quality loop on a laptop with no ABAP system in it: npm run lint puts abaplintabaplintStatic analysis for ABAP that runs outside a system on serialised source in a repository, so ABAP checks run in a pull request and in CI before the code ever reaches a system.community org, abap over src/, npm run transpile turns the class and its test class into JavaScript, and the ABAP Unit tests then execute as a Node.js program. The ABAP under test is one class with one method, add, returning the sum of two integers, so what the repository carries is the pipeline around it. npm start chains lint, transpile, test, coverage and documentation in one command and leaves five files behind: a JUnit XML unit report, an Allure report of the same run, coverage/lcov.info with an HTML report beside it, and the ABAP Doc comments as docs/index.html. What executes is the transpiled JavaScript, so the ABAP available to it is whatever the abaplint runtime and open-abap implement, not what an application server would have supplied.
Facts
Where it sits
Who is behind it
In the atlas: maintains 4, contributes to 12@tobiashofmannmaintainer
What it declares
Every artifact
- Type
- Sample
- Origin
- Independently maintained
- Runtime
- Node.js
As a sample
- Form
- A reference application
Connections
Finding answers in written documentation, and writing what is missing
Catching problems in code before execution
Testing application logic, with test doubles for its dependencies
Static analysis for ABAP source outside a system
A cross-platform JavaScript runtime that servers, command line tools and scripts written in JavaScript are run with. For the things here, the prerequisite a repository names when its build is a set of npm scripts.
Download
README
quoted from tobiashofmann/off-stack-abap under Apache-2.0, readOff-stack ABAP development
This repo serves as a demonstration for off-stack ABAP development. Developing ABAP code without access to an ABAP system. The project depends on abaplint and transpiler as well as related work like open-abap.
Description
A sample ABAP class and Unit Test are in folder src/. The class has one method (add) that returns the sum of two input integers. An ABAP unit test class tests the method. The method add_test is not tested. It serves to demonstrate the unit and coverage feature. The ABAP code can be transpiled to JavaScript and run as a Node.js application. The unit tests can be executed and the results of the test run and code coverage captured. Additionally, the ABAP Doc comments can be transformed to a web page.
Running the app will transpile ABAP code to JavaScript, run unit tests and capture code quality data and generate reports.

Files generated:
- test-results/abap-unit-junit.xml: The unit report (xml)
- docs/index.html: ABAP Doc as HTML
- coverage/lcov.info: Coverage data
- coverage/index.html: Coverage report as HTML
- allure-report/index.html: ABAP Unit test run as Allure report
Installation
Get the source code: either clone the repo, or download it as a zip and unzip it locally. Ensure that you have Node.js LTS installed.
The project is a Node.js app. It uses abaplint to lint and transpile ABAP code. Allure and c8 are used for code quality reporting.
npm ci
Run app
To run all tasks and to get from ABAP code to final reports, run npm start.
npm start
Available Tasks
The tasks available can be used to check the ABAP coding, transform it to JavaScript, run it and the unit tests, as well as capture code quality metrics and reports.
- Linting
Validate the ABAP coding using abaplint.
npm run lint
- Transpile
Generate JavaScript code out of the ABAP code.
npm run transpile
The generated JavaScript sources can be found in folder output/
- Unit tests
npm run test
- Capture unit test data
npm run test:unit
- Generate unit test report
npm run report
Display the generated HTML site in a web browser to see the report.
- Get code coverage data
npm run coverage
Open coverage/index.html in a web browser to see the report. Use lcov.info in your IDE or tool of choice to display the coverage data in an editor.
- Generate ABAP doc report
npm run docs
Open docs/index.html to access the report in a browser.
Details
Sources
Sources are graph entities: the same page may back several entries, and an unreachable source flags every row that rests on it.
Compatibility and provenance
History in the atlas
- First seen.
For your agent
- Ref
artifact:tobiashofmann-off-stack-abap- JSON
- /artifacts/tobiashofmann-off-stack-abap.json
- MCP
- Connecting an agent