Offline Development #
ABAPer provides several features that work without a live SAP system connection — useful for quick syntax checks, code quality reviews, and experimentation.
Client-Side Linting (abaplint) #
ABAPer embeds abaplint directly in your browser. It runs as a Web Worker so it never blocks the editor UI.
How It Works #
- When you open or modify an ABAP file, abaplint analyzes the source
- Analysis runs with a 300ms debounce — it waits for you to pause typing
- Results appear in two places:
- Monaco editor — squiggly underlines on lines with issues
- Problems panel — full list with severity, message, and line:column
- The status bar shows total error and warning counts
Enabling / Disabling #
Offline linting is enabled by default. Toggle it via SAP menu > Connection Settings > Enable offline linting (abaplint in-browser).
What abaplint Checks #
- Syntax errors — missing periods, unmatched keywords, invalid statements
- Style warnings — naming conventions, indentation, line length
- Obsolete statements — deprecated ABAP constructs
- Best practice violations — sequential declarations, magic numbers, empty blocks
Limitations #
abaplint runs entirely in the browser with no SAP data dictionary access. It cannot resolve:
- Custom data elements, domains, and table types
- Structures from other includes
- Standard SAP classes and interfaces
Some warnings may be false positives when they depend on system-specific types. For definitive validation, use the server-side syntax check (Ctrl+Shift+B).
Server-Side Syntax Check #
When connected to SAP, press Ctrl+Shift+B for a full syntax check. This resolves all types, includes, and dependencies against your actual SAP system.
Results appear as Monaco editor markers, Problems panel entries, and Output panel messages.
Combining Both #
The Problems panel merges diagnostics from both sources. Each entry shows its origin:
| Source | Description |
|---|---|
| abaplint | Client-side, instant, works offline |
| SAP | Server-side, requires connection, fully accurate |
Use abaplint for immediate feedback while typing, and server-side checks before activating.
ABAP-to-JavaScript Transpiler #
The bottom panel includes a Transpiler tab that converts ABAP to JavaScript using the @abaplint/transpiler package.
Usage #
- Open an ABAP object in the editor
- Switch to the Transpiler tab in the bottom panel (Ctrl+J to toggle)
- Click Transpile — JavaScript output appears in the left pane
- Click Run — execution output appears in the right pane
- Click Clear to reset
What It Supports #
- Basic data types and assignments
- Control structures (IF, CASE, LOOP, DO, WHILE)
- String operations
- Internal tables (basic operations)
- WRITE statements (converted to console output)
- Method calls on local classes
What It Does Not Support #
- SAP system calls (RFC, database operations)
- Standard SAP classes or function modules
- Complex dynamic calls and field-symbol assignments
The transpiler is useful for logic validation, learning, and prototyping — not for running production ABAP.
Problems Panel #
The Problems panel (toggle with Ctrl+J) lists all diagnostics:
| Column | Description |
|---|---|
| Severity | Error (circle), Warning (triangle), Info (info icon) |
| Message | Description of the issue |
| Code | Rule identifier (abaplint) |
| Location | Line and column number |
| Source | abaplint or SAP |
Click any entry to jump the cursor to that line. The Fix button on error entries sends the error to the AI assistant for a suggested fix.
What Works Without SAP #
| Feature | Offline |
|---|---|
| Open files from GitHub | Yes |
| abaplint linting | Yes |
| Transpile to JavaScript | Yes |
| Format code (SAP pretty printer) | No |
| Server-side syntax check | No |
| Save / Activate objects | No |
| Code completion from SAP | No |
| Unit tests | No |