PackagePackagetypeA library you install and call yourself.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 →

ABAP-AI-CODE-TOOLS

An optional abapGit package that adds create, modify and delete tools to ABAP AI Code, for ABAP programs and classes, with each diff block approved before it is saved.

ABAP AI Code reads and reviews code and cannot change it; this package adds the tools that create, modify and delete programs and classes. It is a separate repository so that write access is decided per system: installed in a sandbox, left out of a production or audited one, where the model is never told the write tools exist. Changes go through standard SAP APIs with a syntax check, a transport entry through RS_CORR_INSERT and activation, and nothing is saved until each block of the diff is approved. Only PROG and CLAS are supported, and the delete tool refuses to register until its prompt fragment delete_sap_object.md, which is not shipped, is added.

Facts

Last pushLicenceMIT

Where it sits

Lives in
Provides
Agent access to your codeABAPAgent access to your codecapabilityLetting a coding agent read the project or the system you actually have, reach its model, its objects and its checks, and act on it. In file-based environments that works out of the box; complex systems need dedicated access capabilities. Whatever the environment, the agent also needs project- and framework-specific context, so it understands the thing in front of it rather than guessing from what it remembers of its training data. The transport is incidental: an MCP server, a language server or a CLI answer the same question, and what differs between them is how much of the real thing the agent can see. Distinct from [MCP servers](capability:mcp-servers), which is a protocol adapter on your own running service, and from [agent guidance](capability:agent-guidance), which is knowledge handed over as files rather than read from the thing itself.
Requires
ABAP AI CodeABAP AI CodeartifactThe write tools are plugins that ABAP AI Code discovers at runtime; without the base installed first there is nothing to plug into.

Who is behind it

Yurii SychovYurii SychovPersonMaintains this
In the atlas: maintains 9, contributes to 10
@ysichov
maintainer

Before choosing this

Conditions

PolicySAP API Policy 4.2026a§ 1.1, 1.2, 2.2.2from Agent access to your codeAn MCP server calls ADT or another SAP API of a running system for an agent.
  • § 1.1 Published APIs. Published APIs are made available for the documented purposes identified by SAP, including integration, extensions and data exchange.
  • § 1.2 Non-Published APIs. Customer and third-party applications must not access non-published APIs except where documentation permits it or SAP otherwise authorizes it.
  • § 2.2.2 AI call sequences and data extraction. Outside SAP-endorsed architectures, data services or expressly identified pathways, the policy prohibits specified agentic API use and systematic or large-scale extraction.

An agent that plans and executes ADT calls is the case section 2.2.2 names. Check that the endpoints are published for the intended use, and that the design runs within a pathway SAP identifies for it.

SAP API Policy 4.2026a →

What it declares

Every artifact

Type
Package
Origin
Independently maintained

As a package

Where it runs
does not say
Distributed through
abapGit

Connections2

README

quoted from ysichov/ABAP-AI-CODE-TOOLS under MIT, read
ysichov/ABAP-AI-CODE-TOOLS/README.mdOn GitHub

ABAP AI Code — write tools

Optional write / code-mutation add-on for ABAP AI Code.

The base platform is deliberately read-only: it can read, explain and review ABAP code, but it cannot change a single line. This package is what turns it into an assistant that creates, modifies and deletes ABAP repository objects — and it is a separate abapGit repository precisely so that granting that power is an explicit, per-system decision.

Start with the base repository: https://github.com/ysichov/ABAP-AI-Code Installation, provider setup, API-key encryption, the UI and the tool-plugin pattern are all documented there. This README only covers what the add-on adds.


Table of contents


1. Why it is a separate package

"AI can read my code" and "AI can rewrite my code" are two very different conversations with a security officer. Splitting them into two repositories means the answer can be different per system:

SystemBaseThis add-onResult
PROD / audited✔✘AI can explain and review code, and physically cannot write
DEV / sandbox✔✔Full assisted development

The split is not just packaging. Because the base has no compile-time dependency on this package, a system without it is not a system with a disabled feature — it is a system where the capability does not exist. The LLM is never told about create_sap_object, modify_sap_object or delete_sap_object, so it never proposes them and never fails trying.


2. What you get

  • Create a new program or class from a natural-language requirement.
  • Modify an existing object: add a method, change a signature, refactor a block, remove a FORM, strip header comments — anything that leaves the object in place.
  • Delete a whole program or class, with a mandatory confirmation.
  • All of it through standard SAP APIs, with a syntax check before saving, a normal transport entry (RS_CORR_INSERT) and activation (RS_WORKING_OBJECTS_ACTIVATE) — the same path a human developer's change takes.
  • All of it behind the base platform's per-hunk diff review: nothing is written until you approve it.

3. How it plugs in — the plugin pattern

Every tool in ABAP AI Code is a three-layer plugin, and this package simply ships three more of them:

Layer 1  <tool_name>.json   OpenAI function definition — the contract the LLM sees
Layer 2  <tool_name>.md     prompt fragment — behaviour rules for that tool
Layer 3  ZCL_AITOOL_<X>     ABAP class (ZIF_AI_TOOL via ZCL_AITOOL_BASE) — does the work

ZCL_AI_TOOL_FACTORY in the base discovers implementers at runtime through SEOMETAREL, and builds both the tools JSON array and the tool section of the system prompt from the same registry. Consequences:

  • Installing this package is all it takes. No core class is modified, no CASE branch is extended, no prompt in the base is edited.
  • Uninstalling it removes the capability from the toolset and from the prompt in one step.
  • The runner and the code UI call the saver only by dynamic name (CALL METHOD ('ZCL_CODE_OBJECT_SAVER')=>…), so the base compiles and runs perfectly without this repository; write paths simply report "read-only platform".

Full description of the pattern, including how to write your own tool: base README §3 and §8.


4. Installation

4.1 Install order

abapGit does not resolve dependencies, so the order matters:

  1. ABAP-AI-Code — the read-only base (core, engine, UI, read/review tools). Required. Pull and activate first.
  2. ABAP-AI-CODE-TOOLS — this repository, into a second Z package.

Installing this package first will not activate: its classes inherit from ZCL_AITOOL_BASE and call ZCL_AI_CODE_READER, both of which live in the base.

4.2 Companion prompt files

Each tool needs its <tool_name>.json (schema) and <tool_name>.md (prompt fragment) copied into the same frontend folder the base already uses (p_tools on the Z_ABAP_AI_CODE2 selection screen):

ToolFiles to copy
create_sap_objectcreate_sap_object.json, create_sap_object.md
modify_sap_objectmodify_sap_object.json, modify_sap_object.md, plus modify_user_template.md
delete_sap_objectdelete_sap_object.json, delete_sap_object.md, plus delete_misuse_redirect.md

Registration is fail-closed: if either companion file is missing, the factory refuses to register the tool and issues a message naming the missing file. A forgotten copy shows up as an explicit warning, never as a tool that silently misbehaves.

modify_user_template.md and delete_misuse_redirect.md are read by the modify tool and by the runner directly (not by the factory), so they are not covered by that guard — copy them too.


5. Contents

ObjectRole
ZCL_AITOOL_CREATETool plugin create_sap_object. Asks the LLM for a full source from the requirements, hands the result to the runner for review + save
ZCL_AITOOL_MODIFYTool plugin modify_sap_object. Reads the current source, asks the LLM for a <code_modified> envelope containing only the changed parts, merges them into the full current source, then hands both old and new source to the runner for the diff
ZCL_AITOOL_DELETETool plugin delete_sap_object. No LLM call — it only validates (CLAS / PROG only) and builds a <code_deleted> envelope; the confirmation and the deletion are the runner's job
ZCL_CODE_OBJECT_SAVERThe engine. Performs the actual write / delete / activate via RPY_PROGRAM_INSERT, RPY_INCLUDE_UPDATE, SEO_CLASS_CREATE_COMPLETE, SEO_CLASS_DELETE_COMPLETE, RS_DELETE_PROGRAM, RS_CORR_INSERT, RS_WORKING_OBJECTS_ACTIVATE. Also exposes build_full_class_source( ), which assembles a complete class out of the LLM's block output without saving, so the diff can show the whole class including the frame

6. The write flow, end to end

Taking "add a method CALCULATE to ZCL_MATH" as the example:

  1. The orchestrator picks modify_sap_object (the base prompt forces a read_sap_object first, and forbids delete_sap_object for partial changes).
  2. ZCL_AITOOL_MODIFY reads the current class source.
  3. A focused sub-agent LLM call returns a <code_modified> envelope with only the changed section and method blocks.
  4. Those blocks are merged into the full current source. Both versions — original_source and final_source — go back to the runner.
  5. The runner shows a diff in the right pane. Each hunk has approve / decline, a note field, and an AI thread for arguing about that specific hunk.
  6. On approval, ZCL_CODE_OBJECT_SAVER runs a syntax check, writes through the SAP APIs, records the transport entry and activates.
  7. Everything above — every LLM call, every tool call, the diff, the save result — lands in the session log folder.

create_sap_object follows the same path minus the read and merge; delete_sap_object skips the LLM entirely and goes straight to confirmation.


7. Safety rails

  • Nothing writes without approval. save_required only requests the review; the runner owns confirmation and saving. A tool cannot bypass it.
  • Delete is narrow by design. Only CLAS and PROG are accepted, and only for a whole object. A request to remove something inside an object (a FORM, a method, comments, lines) is redirected to modify_sap_object through delete_misuse_redirect.md — the base prompt states this rule three separate ways because it is the single most damaging thing an LLM could get wrong here.
  • Syntax check before save. A source that does not compile is rejected before it reaches the repository.
  • Normal transport and activation. Changes are visible to SE03, to your colleagues and to your release process like any other change — no side channel.
  • Merge, not overwrite. modify_sap_object merges changed blocks into the current source read moments earlier, rather than letting the LLM re-emit a whole object from memory.

8. Removing write access again

Delete the package (or just this repository's objects) via abapGit. The base keeps working unchanged: the dynamic saver calls fail gracefully, and the three write tools disappear from both the LLM toolset and the system prompt on the next run. Optionally remove the create_* / modify_* / delete_* files from the frontend prompt folder as well — with the classes gone they are inert either way.


9. Known gaps

  • delete_sap_object.md is not shipped. The schema (delete_sap_object.json) exists in the base repository's TOOLS folder, but the prompt fragment does not. Under the fail-closed rule, ZCL_AITOOL_DELETE therefore refuses to register until that file is created. Add it (or accept that delete is unavailable — an acceptable default for many systems).
  • Supported object types are PROG and CLAS. Function groups, DDIC objects, CDS and BDEF are not handled by the saver.

MIT, read
Agent access to ABAP code
  1. @abap2ui5/mcp-serverMCP server for the abap2UI5 check, deploy and run loop
  2. arc-1-bopf-enharc-1 extension for reading and maintaining BOPF enhancements
  3. HammerNative macOS code editor for ABAP and CDS
  4. arc-1-lspEdition of ARC-1 that runs ADT calls through adt-ls
  5. arc-1MCP server over the ADT REST API for ABAP objects
  6. arc1-abap-bridgeVS Code bridge between arc-1 and ADT for VS Code
  7. arc1-adt-abap-mcp-extEclipse add-on enabling the ADT MCP server with read-only tools
  8. ABAP Accelerator MCP ServerAWS's ABAP MCP server for Amazon Q Developer and Kiro
  9. Modernization Agents for SAP on AWSAWS agents for ABAP, PI/PO and BW modernisation work
  10. @mcp-abap-adt/coreABAP ADT MCP server published as an npm scope and plugin
  11. chandrashekhar-mahajan/abap-mcp-serverABAP MCP server with ADT tools and five authentication strategies
  12. dassian-adtFork of mcp-abap-abap-adt-api with 25 tools and session recovery
  13. erpl-adtC++ binary speaking the ADT REST API as a CLI and MCP server
  14. bw-modeling-mcpMCP server for BW/4HANA modelling objects
  15. EPOD ADT MCP ServerMCP server for ABAP on the ADT session, in Eclipse or standalone
  16. ZARC1_EXTENSION_FORMSarc-1 extension for SAPscript and Smart Forms objects
  17. fgalastri/MCP_ABAPValidates an ABAP class before it is deployed by converting the global class to a local one and syntax-checking that — plus CDS DDL and table metadata retrieval.
  18. fr0ster/mcp-abap-adtABAP MCP server with full CRUD on on-premise and ABAP Cloud
  19. abapsmithABAP MCP server over ADT with a local journal that can undo writes
  20. sap-ai-dev-toolkitMCP proxy pinning an agent's ABAP tools to one SAP system
  21. aibap.mcpGo MCP server that writes, activates and runs ABAP classes via ADT
  22. BellaEclipse plugin bringing Claude into ABAP Development Tools
  23. Maherd18/sap-mcp-serverPolicy-checked MCP server for ABAP development over ADT
  24. sapdumpmcpMCP server reading ABAP short dumps over ADT
  25. ABAP remote filesystemVS Code extension editing ABAP systems over ADT as a filesystem
  26. mcp-abap-abap-adt-apiWrite-oriented MCP server over abap-adt-api
  27. mcp-abap-adtRead-oriented MCP server fetching ABAP programs, classes, tables
  28. SAP MCP Connection ManagerWindows desktop manager handing SAP connections to assistants over MCP
  29. ABAPilotMCP connector for ECC and on-premise S/4HANA with a licensed SAP side
  30. vibing-steampunkADT-to-MCP bridge in Go reaching past what ADT exposes
  31. ADT MCP ServerLocal HTTP MCP server started from ABAP Development Tools for VS Code
  32. ABAP Development Tools for VS CodeSAP's ABAP tools in VS Code for editing, debugging, ATC and transports
  33. SAP Joule for Developers, ABAP AI capabilitiesSAP's AI for ABAP development in ADT for Eclipse and VS Code
  34. ABAPDocMCPMCP server turning a transport request into a WRICEF specification
  35. claude-sap-kitClaude Code plugin adding Custom_* tools to arc-1
  36. Skybuffer AI MCP serverABAP add-on serving business data and transactions as MCP tools
  37. abap-adt-cliCLI that pulls and pushes ABAP packages as local files over ADT
  38. workskong/mcp-abap-adtLight MCP adapter for ABAP over ADT, documented in Korean
  39. KlystronMCP server in ABAP inside the application server, with agent skills
  40. pyrfc-mcpMCP server calling RFC-enabled function modules behind an allowlist
  41. ABAP AI CodeAgentic coding assistant in ABAP that runs as an SAP GUI report
  42. VERTEXADT extension for Eclipse and VS Code showing three SAP GUI tools

Details

Sources3
Added by handdiscovered herechecked
github.com/ysichov/ABAP-AI-CODE-TOOLStree, 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, ai-and-agents
History in the atlas1
  1. First seen.
For your agent
Ref
artifact:ysichov-abap-ai-code-tools
JSON
/artifacts/ysichov-abap-ai-code-tools.json
MCP
Connecting an agent