AppApptypeAn application you deploy and use, installed into a system or loaded into an application as a component, rather than a library whose functions you call.See every one →What this type is →independently maintainedindependently maintainedoriginPublished by one person or a small company outside SAP. Says nothing about quality; the readings say that.See every one →

Smart Debugger

A debugger script for the SAP GUI New Debugger that records every step and variable change of an ABAP program, so execution can be stepped backwards with F5 and F8.

The standard ABAP debugger shows one variable at a time, at the current step. Smart Debugger runs from the Script tab of the New Debugger and opens its own workspace: locals, globals, parameters and object instances in trees, any number of internal tables in their own ALV windows, and a recorded history of steps and value changes, so F5 steps back and F8 runs back to the previous stop condition. It also marks executed lines as coverage and, with abapMermaid installed, draws the calls made so far. Nothing has to be installed: a generated single file of about 9,000 lines is pasted into the Script tab, and the abapGit install adds the classes and an AI panel. It runs in SAP GUI only, not in ADT, on ABAP 7.40 and later.

Facts

Last pushLicenceMIT

Where it sits

Lives in
Provides
DebuggingABAPDebuggingcapabilitySeeing what running code did between an input arriving and a result coming out: which code ran, what the values were at each point, and why a value ended up as it did.
Requires
ABAP AI CodeABAP AI CodeartifactOnly for the AI panel of the abapGit install, which reads its LLM client, tool factory and provider configuration from ABAP AI Code; the standalone file has no AI support.

Who is behind it

Yurii SychovYurii SychovPersonMaintains this
In the atlas: maintains 9, contributes to 10
@ysichov
maintainerChristian GünterPersonContributes to this
In the atlas: maintains 1, contributes to 12
@christianguenter2
Lars HvamPersonContributes to this
In the atlas: maintains 13, contributes to 92, wrote 1
@larshp
Alice V.PersonContributes to this
In the atlas: maintains 6, contributes to 12
@oisee
Daniel WegnerPersonContributes to this
In the atlas: maintains 3, contributes to 10
@WegnerDan
4 contributors

What it declares

Every artifact

Type
App
Origin
Independently maintained

As an app

Where it runs
Inside the system it serves
Distributed through
abapGitCopied into the project

Connections3

README

quoted from ysichov/Smart-Debugger under MIT, read
ysichov/Smart-Debugger/README.mdOn GitHub

Smart Debugger

Project ARIADNA — Advanced Reverse Engineering ABAP Debugger with New Analytics Version: beta 0.9.600 · SAP GUI debugger script · no modification of the inspected code

Smart Debugger

Smart Debugger is a debugger script for the SAP GUI New Debugger. It opens its own multi-window workspace that shows all variables, structures, internal tables and object instances of the current program at once — and, while you run, it records every step and every variable change, so you can also step backwards through the execution you already passed.


Why you need it

The standard ABAP debugger shows you one variable at a time, in the present moment only. Smart Debugger gives you the whole picture and the whole timeline.

Everyday pain in the standard debuggerWhat Smart Debugger does
You add variables to the watch list one by oneAll locals, globals, parameters, SY, CLASS-DATA and LDB variables are already there, in hierarchical trees
Deep structures and object instances take endless clickingFull tree drill-down, objects split into public / private / protected attributes
Only one internal table on screen at a timeDouble-click any table → its own ALV window. No limit — open ten tables side by side
You stepped one line too far → restart the whole transactionStep back. History of every step and every value change is recorded
"Where did this value come from?"Double-click a variable = watchpoint; jump to the previous/next stop condition, forward or backward
Screen full of empty and irrelevant variablesInitials hides empty values; Locals / Globals / SYST / CLASS-DATA / LDB toggle whole groups
No idea of the call flow you just executedMermaid call-flow diagram, live calls graph, control-structure scheme of the include
"Which branches actually ran?"Coverage highlights every executed line, on every stack level
Installing tooling into a customer systemNothing to install: paste one script into the debugger. abapGit install is optional

Bottom line: fewer debug restarts, fewer "let me run it again with another breakpoint" cycles. Time is money.


Table of contents


Requirements

SAP GUIRequired. Smart Debugger is built on CL_GUI_* controls and runs inside the New Debugger, not in ADT/Eclipse
ReleaseABAP 7.40+ (inline declarations, VALUE/COND, string templates). The generated standalone file is additionally patched for 7.50
AuthorizationStandard debugging authorization (S_DEVELOP with activity DEBUG)
abapMermaidOptional. Needed only for the diagram buttons. Use the scroll-enabled fork: ysichov/abapMermaid (original: WegnerDan/abapMermaid). Without it the Diagram / Live Debug buttons are simply not shown

Installation

Option A — copy & paste (nothing to install)

Take src/z_smart_debugger_standalone.prog.abap — one self-contained file (~9 000 lines) with every class merged in — and paste it into the debugger Script tab. Nothing is created in the system, nothing is transported.

The AI panel is not part of the standalone build (it depends on a separate repository). Everything else is identical to the modular version.

Option B — abapGit (modular classes)

Clone this repository with abapGit into any package. You get the ZCL_SMD_* classes plus two programs:

ObjectPurpose
Z_SMART_DEBUGGERThe thin debugger script that instantiates the classes — paste this one in the Script tab
Z_SMART_DEBUGGER_STANDALONEThe merged single-file variant (generated, do not edit)

Use this option if you want the AI panel, or if several developers should share one installed version.


Quick start

  1. Set break-points anywhere in the ABAP code you want to inspect and start the transaction/report.
  2. When a break-point triggers, switch to the last tab of the New Debugger — Script.
  3. Paste the program source (see Installation), or press Load script if you saved it before. Tip: paste once, press Save script, and afterwards just load it by name.
  4. Select the radio button Execute directly and press Start Script.
Script tab

Window layout

Main window
AreaContent
TopToolbar (see below)
CenterSource code viewer of the current include. Click the left border of a line to set/delete a session break-point, Ctrl + click for an external one
Right, upperVariables — locals, globals, SY, class data, LDB
Right, lower leftImporting parameters
Right, lower rightExporting & Returning parameters
BottomCall stack / execution history ALV
LeftAI panel — hidden until the AI button is pressed

Importing and exporting/returning parameters live in their own panels on purpose: when you debug a method or function module, that is exactly the split you care about.

Import and export parameters

Toolbar reference

Buttons that carry a state show the current state in their label (pressing History On turns recording off and the label becomes History OFF).

Run control
ButtonMeaning
Step into (F5)One step ahead
Step over (F6)One operation ahead
Step out (F7)Leave the current stack level
Continue (F8)To the next break-point or watchpoint
Forward / BackwardDirection switch. In Backward mode F6/F7 disappear, F5 becomes Step back and F8 becomes to the previous stop condition
Forward buttons Backward buttons
Recording
ButtonMeaningDefault
History On/OFFRecord the step/stack historyOn
Vars History On/OFFRecord every variable changeOn
Depth NHow many stack levels below the current one are recorded, 0…9. Depth 0 = current level only; Depth 1 = current level plus the forms/methods/functions it calls; and so on. Click cycles the value9
Only Z / Z & StandardRecord Z code only, or standard SAP code as wellOnly Z
Alpha / BetaAnalysis engine. Alpha parses the executed statement and refreshes variables only after value-changing operations — much faster, may skip exotic changes. Beta re-reads everything on every step — slower, more preciseAlpha
Analysis
ButtonMeaning
DiagramMermaid diagram of all calls performed so far (needs abapMermaid)
Live DebugSeparate window with its own F5/F6/F7/F8 and a calls graph that redraws as you run (needs abapMermaid)
Calculations FlowMermaid scheme of the control structure of the current include: IF/ELSEIF/ELSE, CASE/WHEN, LOOP/DO/WHILE, TRY/CATCH, with plain statements collapsed into "N operations" nodes
CoveragePaint every executed line of the current include; double-click a stack row to switch include
StepsOpen the recorded step table as an ALV
HistoryOpen the recorded variable-change history as an ALV
Display and utilities
ButtonMeaning
Visualization OFF/ONWhen ON, the source view follows execution line by line during long runs (light refresh only — variables and trees are not rebuilt on every step)
Clear varsRemove all selected variables / watchpoints
AI, AI LogSee AI assistant. Hidden when no AI configuration is present
DebugActivate the internal BREAK-POINTs of the debugger script itself — for developing Smart Debugger, not for debugging your program
Info (globe icon)Opens the documentation links in a browser

Variable trees

Every variable is a tree node: structures, deep structures and object instances can be expanded down to the leaf. Object attributes are grouped and colour-coded — 🟢 public, 🔴 private, 🟡 protected.

Tables with header lines and tables declared with OCCURS appear as variable_name[] next to their header structure variable.

Functions available in the Variables tree toolbar:

FunctionMeaning
InitialsShow/hide variables with initial (empty) values — on/off switch
LocalsShow/hide local variables
GlobalsShow/hide global variables
SYSTShow/hide the SY structure (sy-datum, sy-uname, …)
CLASS-DATAShow/hide static (global) attributes of the active classes
LDBShow/hide Logical Database globals — hidden by default, because in the standard debugger this noise cannot be switched off
RefreshRe-read the current step and rebuild the trees

Tables, strings and popups

Double-click on a variable:

  • an internal table opens in its own ALV window — as many windows as you like, side by side;
  • a string opens in a text viewer window.
Tables in separate windows

Each table window offers:

FunctionMeaning
Select-Options panelFilter the table with real select-options, per column
Tech namesToggle technical field names / descriptions
Language buttonsRe-translate column headers into another logon language
Show empty columnsShow or hide columns that contain no data
Standard ALV functionsToggle the standard ALV toolbar (sort, filter, layout, export)

Open table windows follow navigation: when you step forward or backward, they refresh themselves with the table content of the step you are standing on.


Watchpoints

Creating a watchpoint is a double-click on the variable — it is highlighted and added to the selected-variables table. Double-click again removes it. Clear vars removes all of them.

Watchpoints are what Continue (F8) and to the previous stop condition stop at — in both directions. A selected variable also drags in its dependants: values written into it by called forms, methods and functions are tracked as well.

Watchpoints Calculations flow

Time machine: backward debugging

With History On and Vars History On (both default) Smart Debugger stores every step and every variable change while the program runs. Switch the direction button to Backward and walk into the past: Step back for one step, to the previous stop condition for the previous break-point or watchpoint. Switch back to Forward and continue as usual.

The recorded data is what feeds the Steps and History tables, the Coverage view and the diagrams.

Internally, table snapshots are stored as deltas with a full snapshot every 20 changes, so a long run with large internal tables stays affordable in memory. What is recorded is controlled by Depth N and Only Z / Z & Standard.


Diagrams (Mermaid)

All three diagram views need abapMermaid (scroll-enabled fork). If the class is not installed, the diagram buttons are hidden.

ViewWhat it draws
DiagramCalls flow — every call performed during the recorded execution
Live DebugLive calls graph — same graph, but in its own window with its own step buttons, redrawn whenever the current frame changes
Calculations FlowControl-structure scheme of the include on display, built from the ABAP scanner: branches, loops and TRY blocks in their real nesting
Mermaid calls diagram

Coverage

Coverage paints every line of the current include that was actually executed. The bottom ALV switches to the list of includes that were touched — double-click a row to see the coverage of that include. So you get code coverage across all stack levels, from a normal debugging session.

Coverage

AI assistant (optional)

The AI button opens a panel where an LLM analyses the current step, the stack, the variables and the change history and proposes the most likely cause of the bug. It can set its own guard break-point and drive the debugger, and every call and action is written to a log (AI Log).

  • Requires the separate ABAP-AI-Code project, which supplies the LLM client and the tool factory, and writes the provider/model/API-key configuration that Smart Debugger reads at start-up.
  • Without that configuration the AI button is not displayed at all.
  • The tool contract used by the agent is documented in TOOLS/set_breakpoint.md.
  • The generated standalone file contains no AI support.

This part is the youngest and least finished piece of the project.


Performance tips

Recording everything on every step costs time. When a run feels slow:

  1. Lower Depth — Depth 0…Depth 2 is usually enough, Depth 9 records nine stack levels below you.
  2. Keep Only Z — Z & Standard records standard SAP code as well and multiplies the volume.
  3. Stay on Alpha — switch to Beta only when you suspect a change was missed.
  4. Switch Vars History OFF when you only need the call flow, not the values.
  5. Use Visualization deliberately: it is a light per-step source refresh, useful to watch execution, but it still costs a frontend round trip per step.

Repository layout

src/
  z_smart_debugger.prog.abap             thin debugger script (entry point)
  z_smart_debugger_standalone.prog.abap  generated single-file build - do not edit
  zcl_smd_debugger_base.clas.abap        step engine, history, watchpoints
  zcl_smd_window.clas.abap               main window, toolbar, source viewer
  zcl_smd_rtti_tree.clas.abap            variable trees (RTTI based)
  zcl_smd_table_viewer.clas.abap         table popups + select-options
  zcl_smd_sel_opt.clas.abap              select-options control
  zcl_smd_source_parser.clas.abap        statement/keyword scanner
  zcl_smd_code_scheme.clas.abap          control-structure scheme (Calculations Flow)
  zcl_smd_mermaid.clas.abap              diagram windows
  zcl_smd_ai_agent.clas.abap             AI agent (modular install only)
  zcl_smd_*.clas.abap                    text viewer, popups, RTTI, HTML, helpers
TOOLS/                                   AI tool contracts
docs/                                    code review and analysis documents
generate_standalone.sh / .bat            standalone build

For developers

Edit the ZCL_SMD_* classes only; z_smart_debugger_standalone.prog.abap is regenerated from them.

Written by Yurii Sychov — blog · LinkedIn · ysichov@gmail.com

External resources and inspiration:

Example used in the screenshots — iterator pattern: http://zevolving.com/2012/01/iterator-design-pattern-to-access-linked-list/

Iterators example

License

MIT

MIT, read
Debugging
  1. dbg_value_statementDebugger script generating a VALUE statement for a variablefrom ABAP
  2. dump_infoDisplays the variables of ABAP short dumpsfrom ABAP
  3. com.sap.cds:cds-feature-consoleConnects a running CAP Java app to CAP console for monitoringfrom CAP
  4. com.sap.cds:cds-feature-dev-dashboardBrowser dashboard for a running CAP Java service during developmentfrom CAP
  5. @cap-js/consoleConnects a running CAP application to the CAP consolefrom CAP
  6. @cap-js/data-inspectorInspects database entities and contents at CAP service levelfrom CAP
  7. abapsmithABAP MCP server over ADT with a local journal that can undo writesfrom ABAP
  8. sap-cap-debuggerAttaches a debugger to a CAP app running on Cloud Foundryfrom CAP
  9. ABAP-Object-VisualizerDebugger script exporting an object hierarchy as Graphvizfrom ABAP
  10. abap_debugger_object_graph_extensionABAP debugger extension drawing objects as a Graphviz graphfrom ABAP
  11. Graphviz-browserStatic page drawing Graphviz graphs for the ABAP debugger extensionfrom ABAP
  12. ABAP remote filesystemVS Code extension editing ABAP systems over ADT as a filesystemfrom ABAP
  13. @sap/cds-dkCommand line client and development toolkit for CAPfrom CAP
  14. @saptools/cf-debuggerNode.js inspector tunnel over cf ssh to Cloud Foundry appsfrom BTP/BAIP
  15. @saptools/cf-explorerFile search in apps deployed to SAP BTP Cloud Foundry over cf sshfrom BTP/BAIP
  16. @saptools/cf-function-traceStep-by-step state recorder for one JavaScript function in Node.jsfrom BTP/BAIP
  17. @saptools/cf-hanaSQL runner against the SAP HANA Cloud database bound to a CF appfrom BTP/BAIP
  18. @saptools/cf-inspectorShell debugger for remote Node.js over the Chrome DevTools Protocolfrom BTP/BAIP
  19. @saptools/cf-live-traceHTTP trace hook streaming a running CF Node.js app's trafficfrom BTP/BAIP
  20. @saptools/cf-request-runnerEndpoint discovery for CAP services deployed to Cloud Foundryfrom CAP
  21. @saptools/service-flowStatic end-to-end tracer of one CAP operation across repositoriesfrom CAP

Details

Sources3
Added by handdiscovered herechecked
github.com/ysichov/Smart-Debuggertree, pushes, contributors, CIchecked
README.mdquoted, and what the entry declareschecked

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
discovered viaAdded by hand
first seen in the atlas
ecosystem and domainabap, developer-experience
abaplint
issues under its own abaplint configuration7,102
lines20,158
statements13,782
objects23
files44
analysed, master
abaplint version2.120.84
Flavors1
Standard ABAP
“| **Release** | ABAP 7.40+ (inline declarations, `VALUE`/`COND`, string templates). The generated standalone file is additionally patched for 7.50 |” — ysichov/Smart-Debugger — READMEchecked
Contributors4

From the repository’s contributor list, .

History in the atlas1
  1. First seen.
For your agent
Ref
artifact:ysichov-smart-debugger
JSON
/artifacts/ysichov-smart-debugger.json
MCP
Connecting an agent