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 #

  1. When you open or modify an ABAP file, abaplint analyzes the source
  2. Analysis runs with a 300ms debounce — it waits for you to pause typing
  3. Results appear in two places:
    • Monaco editor — squiggly underlines on lines with issues
    • Problems panel — full list with severity, message, and line:column
  4. 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:

SourceDescription
abaplintClient-side, instant, works offline
SAPServer-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 #

  1. Open an ABAP object in the editor
  2. Switch to the Transpiler tab in the bottom panel (Ctrl+J to toggle)
  3. Click Transpile — JavaScript output appears in the left pane
  4. Click Run — execution output appears in the right pane
  5. 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:

ColumnDescription
SeverityError (circle), Warning (triangle), Info (info icon)
MessageDescription of the issue
CodeRule identifier (abaplint)
LocationLine and column number
Sourceabaplint 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 #

FeatureOffline
Open files from GitHubYes
abaplint lintingYes
Transpile to JavaScriptYes
Format code (SAP pretty printer)No
Server-side syntax checkNo
Save / Activate objectsNo
Code completion from SAPNo
Unit testsNo