abap-mcp
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
No arguments | |||
Instructions
Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.
This server publishes no instructions, or was last inspected before Glama recorded them.
Capabilities
Features and capabilities supported by this server
Protocol revision2025-11-25
| Capability | Details |
|---|---|
| tools | {
"listChanged": true
} |
| prompts | {
"listChanged": true
} |
| resources | {
"listChanged": true
} |
| completions | {} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| lint_abapA | Run abaplint static analysis over ABAP, CDS or behavior-definition sources and return structured findings (rule key, message, severity, file/line/column, the offending line, and a docs URL per finding). Use this when you have written or modified ABAP code and want style and correctness feedback before it goes anywhere near a system — it runs entirely offline on the provided text. It does not connect to any SAP system, does not run ATC, and cannot judge whether referenced objects exist unless you provide them in the same call (preset "style", the default, skips whole-program checks for that reason; preset "full" enables them when you provide every dependency). A focus tag turns a pass into a themed review (performance / security / Clean ABAP style) without hand-picking rules; rule overrides layer a team's own pack on top. For an ABAP-Cloud migration verdict use check_cloud_readiness instead. When the call contains a .bdef.asbdef or .srvd.srvdsrv file, abap-mcp's own RAP checker also runs over the whole set and its findings are merged in under rap/ rule keys (abaplint does not deep-parse those file types, so without this they would silently produce nothing); set rapCheck:false to opt out, or call check_rap_behavior for the full structured RAP report with hints, confidence and the scope note. Example: lint_abap({ "files": [ { "source": "REPORT ztest.\nDATA foo TYPE i.\nIF foo = 1.\nENDIF." } ] }). |
| fix_abapA | Apply abaplint's own machine-applicable corrections to ABAP sources and return the corrected code: keyword casing, obsolete statements with defined modern replacements (MOVE → =, and every other rule that ships a concrete edit), applied in verified batches — after each batch the result is re-parsed, and a batch that would break the parse is discarded, so the output is parser-guaranteed, never guessed. Findings WITHOUT a machine fix come back in |
| check_cloud_readinessA | Assess how far ABAP source is from ABAP Cloud (Clean Core tier 1) by parsing it twice — once at a classic baseline (default v758) and once at version Cloud — and diffing: findings that appear only at Cloud are genuine cloud blockers (statements ABAP Cloud removed), reported in categories (dynpro, list output, native SQL, report events, …) with a transparent score, an A–D tech-debt grade and a verdict; findings already present at the baseline are reported separately as broken code, not migration work. It also reports snapshot-dated released-API observations for direct table and function-module references the parser can extract; those stay separate from the language-level blocker count and score. Use this when someone asks 'is this code cloud-ready / Clean Core compliant / S/4HANA-cloud safe', before porting classic ABAP into an ABAP Cloud environment, or for a graded tech-debt assessment of an abapGit export. It is static and parser-level: its released-API scan is not exhaustive dependency discovery, it does not connect to any SAP system or run ATC, and a 'ready' verdict means no detected language-level blockers — not a certification. Our A–D grade is blocker density (see gradeMeaning), NOT SAP's own Clean Core Level A–D; a target system's own released-API ATC check ("Usage of Released APIs (Cloudification Repository)" for SAP Cloud ERP Public Edition / "Usage of APIs (Cloudification Repository)" for SAP Cloud ERP Private Edition / on-premise, via variants such as ABAP_CLEAN_CORE_DEVELOPMENT / ABAP_CLEAN_CORE_READINESS) remains authoritative. Example: check_cloud_readiness({ "files": [ { "source": "REPORT zold.\nWRITE: / 'hi'." } ] }). |
| plan_cloud_migrationA | Turn ABAP sources into an ordered, phased ABAP Cloud migration backlog: runs the same dual-parse analysis as check_cloud_readiness, then arranges every blocker into per-object work items across consulting-ordered phases — repair-the-baseline first (broken code is not migration work), then mechanical quick wins, core rework of removed statements, UI/output re-architecture, and a separate snapshot-dated released-API remediation phase. Each work item carries an S/M/L effort band, a remediation recipe and sample locations; each phase carries a goal and objective, re-checkable exit criteria. Use this when someone asks 'plan the migration', 'what do we tackle first', or wants a work breakdown / task backlog instead of raw findings — the natural next call after check_cloud_readiness says rework is needed. It is a deterministic re-arrangement of the readiness analysis: it does not estimate person-days, does not modify any code, and inherits every readiness limitation (static, parser-level, snapshot-dated released-API data — a system's ATC stays authoritative). Example: plan_cloud_migration({ "files": [ { "source": "REPORT zold.\nWRITE: / 'hi'.\nCALL SCREEN 100." } ] }). |
| compare_abapA | Compare a BEFORE and an AFTER version of ABAP source and report what a rework actually changed: lint findings resolved and introduced (matched by content, so moved-but-unchanged code is not noise), cloud-blocker / score / A–D grade movement from the same dual-parse diff as check_cloud_readiness, and structural changes — classes, methods and FORMs added or removed. Use this when reviewing a refactor, a modernization step or an AI-generated rewrite of an existing object and you need an objective better-or-worse verdict instead of eyeballing a diff. It is not a textual diff tool (use git diff to see the edits) and it cannot judge functional equivalence — behavior can change while every number improves; it does not connect to any SAP system. Example: compare_abap({ "before": [ { "source": "REPORT zr.\nWRITE 1." } ], "after": [ { "source": "REPORT zr.\nWRITE 2." } ] }). |
| scaffold_rap_boA | Generate the complete, canonical RAP managed business-object stack for one root entity: root CDS view entity, behavior definition (managed, strict(2), optional draft), behavior implementation class with handler locals, projection view with transactional_query, projection behavior definition, UI metadata extension, and an OData V4 service definition — plus a suggested table DDL, the activation order, and next steps. Use this when starting a new RAP business object in ABAP Cloud or S/4HANA and you want correct boilerplate that follows the SAP /DMO reference shape instead of writing it by hand. Generated classes and CDS views are round-trip validated through abaplint at ABAP-Cloud level before being returned; behavior and service definitions are canonical templates (abaplint does not parse those deeply) and ADT activation is the final check. It does not create the table or the service binding (binding is not a source artifact — create it in ADT), and it generates single-entity BOs: model compositions (parent-child) yourself for now. Example: scaffold_rap_bo({ "entityName": "Travel", "sqlTable": "ztravel", "keyField": "travel_id", "fields": [ { "name": "agency_id", "type": "abap.char(6)" } ], "draft": true }). |
| scaffold_abap_unitA | Generate the local ABAP Unit test-class include (.clas.testclasses.abap) for each global class in the provided sources: a FOR TESTING class (RISK LEVEL HARMLESS, DURATION SHORT) with a setup method that instantiates the class under test and one skeleton test method per public method. Every skeleton fails loudly with cl_abap_unit_assert=>fail('TODO …') so generated-but-empty tests can never masquerade as coverage; abstract classes and parameterized constructors get TODO guidance instead of a blind NEW #( ). Generated code is round-tripped through abaplint together with the class under test before being returned. Use this when a class has no tests yet and you want a correct, ready-to-fill test harness — the natural first step of test-driven rework and the 'add tests before we migrate this' consulting task. It does not invent assertions or test data (the given/when/then substance is yours or the agent's to write), does not create test doubles, and cannot run the tests — ADT/CI does that. Example: scaffold_abap_unit({ "files": [ { "filename": "zcl_travel.clas.abap", "source": "CLASS zcl_travel DEFINITION PUBLIC.\n…" } ] }). |
| get_object_dependenciesA | Build a dependency graph over the provided ABAP sources for migration sequencing and impact reading: nodes are the provided objects plus every DB table / function module they reference (annotated with released-API state and CDS successor from the bundled SAP snapshot); edges are tiered by how they were derived — parser-level db-access and call-function references, structural inherits/implements from class definitions, and word-boundary references-textual matches between the provided objects. Optional Mermaid flowchart output. Use this when deciding what to migrate first (leaves before roots), what a rework might break, or which objects pull non-released tables into the picture — the sequencing companion to plan_cloud_migration. It is not a system where-used list: it only sees the text you pass, textual edges cannot see dynamic calls, and an absent edge is not proof of independence — a system's where-used and ATC remain authoritative. Example: get_object_dependencies({ "files": [ { "filename": "zcl_a.clas.abap", "source": "…" }, { "filename": "zcl_b.clas.abap", "source": "…" } ], "mermaid": true }). |
| check_released_apiA | Look up ABAP repository objects (DB tables, CDS view entities, function modules, classes, interfaces, …) in SAP's published ABAP Cloudification list and report, per object, whether it is a 'released' API (safe to use in ABAP Cloud / Clean Core), 'deprecated' (released but being retired), or 'not-released' (a classic/internal object that is not a public API — e.g. most classic DDIC tables) — with SAP's own successor(s) when the snapshot has any, a curated CDS successor hint otherwise, and a classicAPI/noAPI/internalAPI classification where SAP publishes one. This reflects SAP's official per-edition Cloudification lists as bundled in this package (default edition "s4hc", snapshot 2026-09-10); it ships offline with the server. Use this when you need to know if your code may reference a given object in ABAP Cloud, or which released CDS view to use instead of a classic table. This explicit lookup complements check_cloud_readiness's limited, source-extracted released-API observations and can check objects that do not appear in the supplied source. It does not connect to any SAP system, does not run ATC, and is only as current as the bundled snapshot — a target system's own released-API ATC check ("Usage of Released APIs (Cloudification Repository)" for SAP Cloud ERP Public Edition / "Usage of APIs (Cloudification Repository)" for SAP Cloud ERP Private Edition / on-premise, via variants such as ABAP_CLEAN_CORE_DEVELOPMENT / ABAP_CLEAN_CORE_READINESS) remains authoritative; treat an 'absent from the list' result as 'not-released as of the snapshot', not as proof. Example: check_released_api({ "objects": ["MARA", "I_Product", "BAPI_MATERIAL_GET_DETAIL"] }). |
| list_abap_rulesA | List the abaplint rules this server can check, optionally filtered by a free-text query or a tag, returning key, title, one-line description, tags and a documentation URL per rule. Use this when deciding which rules to enable or override in lint_abap, or to discover what a Clean-ABAP-style check exists for. It does not run any analysis and does not change configuration — it is a read-only catalog. Example: list_abap_rules({ "query": "obsolete" }). |
| explain_abap_ruleA | Explain one abaplint rule in depth: title, description, extended rationale (often citing the Clean ABAP style guide), tags, documentation URL, and good/bad code examples where the rule defines them. Use this when a lint_abap or check_cloud_readiness finding needs justification — to explain to a developer why the finding matters and how to fix it. It does not run analysis and only knows abaplint rules; SAP ATC check documentation is out of scope. Example: explain_abap_rule({ "rule": "exit_or_check" }). |
| format_abapA | Pretty-print one ABAP source: normalize keyword casing and indentation using abaplint's formatter — the offline equivalent of Pretty Printer in ADT/SE80. Use this when generated or hand-written ABAP has inconsistent casing/indentation and you want it normalized before review or commit. It does not reformat CDS views or behavior definitions, does not change any logic, and fails cleanly on source it cannot parse. Example: format_abap({ "source": "report ztest.\nwrite 'hi'." }). |
| get_abap_outlineA | Return the structural outline of ABAP sources — classes (with methods, visibility, attributes, interfaces, inheritance), interfaces, and FORM routines — without you having to read the whole file. Use this when navigating a large class or legacy program to decide which part to read or edit next; it is the cheap first call before pulling thousands of lines into context. Set mermaid: true to also get the structure as a Mermaid classDiagram (inheritance, interface realization, method visibility) for documentation visuals. It does not return method bodies or analyze code quality (use lint_abap for that), and CDS/behavior-definition files yield an empty outline. Example: get_abap_outline({ "files": [ { "filename": "zcl_big.clas.abap", "source": "CLASS zcl_big DEFINITION…" } ] }). |
| explain_abap_releaseA | Look up what changed in ABAP Cloud, CDS, ABAP SQL, RAP, EML, ABAP Unit, ATC and the development tools across the 2502 to 2608 release trains plus ABAP Platform 2025 (SAP_BASIS 816), from a dated knowledge base bundled with this package. Each row carries an original summary, an optional syntax sketch, the release and ABAP release, the products it was verified for, the cited SAP source URL, and a confidence flag ("confirmed" = fact-checked, "reported" = single-source). Use this when you are about to write or review ABAP and need to know whether a language, CDS or RAP feature exists in the target release — for example before using CDS table entities as draft persistence, BUFFER ON, RAP change documents, global side effects, or a feature-control attribute. Filter by sinceRelease to see only what is new since the customer's current level. Rows flagged pre-2502 exist to stop an agent presenting an established feature (business events, late numbering, prechecks, bgPF) as a 2025-26 novelty. It does not connect to any SAP system, does not read release notes live, and is not a complete changelog — it is a curated snapshot (curated 2026-09-10) and the target system's own release notes stay authoritative. For released-API state of a specific object use check_released_api; for Clean Core levels and ATC vocabulary use search_sap_knowledge. Example: explain_abap_release({ "sinceRelease": "2605", "kind": "rap" }). |
| search_sap_knowledgeA | Search one dated, cited knowledge bundle covering three areas: ABAP Cloud / RAP release deltas, Clean Core governance (SAP's extensibility Levels A-D, release contracts C0 to C4, the real ATC check and variant names, and the SAP/abap-atc-cr-cv-s4hc Cloudification Repository file and schema inventory), and decision cards for the SAP AI options an ABAP team can reach (SAP-ABAP-1, the Generative AI Hub orchestration API, the ABAP AI SDK powered by ISLM, Joule for Developers, SAP's official ADT MCP server, the custom code migration agent, and the community MCP ecosystem). Every hit returns its sources, a confidence flag and the full card. Use this when a question is about SAP facts rather than about a piece of source text — which Clean Core level a pattern lands in, what a C1 release contract guarantees, which ATC variant to run, whether SAP-ABAP-1 accepts a system prompt, which classes the ABAP AI SDK exposes, or what SAP's own MCP server can and cannot do. It does not connect to any SAP system, does not run ATC, does not fetch anything live, and is not a substitute for a real ATC run or for SAP's own documentation — it is a curated snapshot (curated 2026-09-10) and the target system and SAP's current documentation stay authoritative. For release-timeline questions prefer explain_abap_release; for the release state of a specific object use check_released_api; to analyze actual source text use lint_abap or check_cloud_readiness. Example: search_sap_knowledge({ "query": "sap-abap-1 system prompt" }). |
| scaffold_abap_ai_sdkA | Generate one validated global ABAP class that calls the SAP Generative AI Hub through the ABAP AI SDK powered by Intelligent Scenario Lifecycle Management (ISLM) — SAP's own client library, not a third-party SDK with a similar name. Seven interaction shapes: "string" (single prompt via EXECUTE_FOR_STRING), "messages" (system/user/assistant turns plus token-count/finish-reason retrieval), "prompt-template" (CL_AIC_ISLM_PROMPT_TPL_FACTORY, never the non-existent CL_AIC_PROMPT_TEMPLATE), "function-calling" (the tool-call DO-loop, with the upstream SAP sample's undeclared-tool_calls bug fixed — the table is declared and populated before ADD_TOOL_RESULTS), "structured-output" (DEFINE_RESPONSE_FORMAT->JSON_SCHEMA->FROM_STRING), "streaming" (IF_AIC_ADT_COMPLETION_API delta loop), and "orchestration" (the separate Orchestration API, which does not yet support structured output, function calling or media input). Every generated class carries an injectable constructor seam (an OPTIONAL api parameter) so it can be unit-tested with cl_abap_testdouble instead of a live ISLM scenario; pass withUnitTest for a FOR TESTING skeleton using that seam. Generated files are round-tripped through abaplint (version Cloud, preset syntax-only) together with abap-mcp's own bundled stub declarations of the referenced IF_AIC_*/CL_AIC_*/CX_AIC_* types, labelled validated:"abaplint-syntax" — this proves the ABAP parses, not that it matches SAP's real API surface exactly. Use this when you are adding a Generative-AI-Hub call to ABAP Cloud code and want correct, cited API shapes instead of guessing class/method names from memory (a common LLM hallucination surface — e.g. inventing CL_AIC_PROMPT_TEMPLATE, or copying SAP's own buggy function-calling sample verbatim). It does NOT call any LLM, does NOT deploy or activate anything, and does NOT create the SAP_COM_0A69 communication arrangement or the Intelligent Scenario (INTS/INTM) itself — those are manual ISLM/BTP-cockpit steps returned in setupSteps that this tool has no way to perform (no SAP system, no credentials, no network). Example: scaffold_abap_ai_sdk({ "scenarioName": "ZDEMO_AI_SCENARIO", "interaction": "string" }). |
| get_abap_agent_rulesA | Generate the ABAP section of a repository's AGENTS.md / CLAUDE.md: the lint-before-commit rule, the ABAP Cloud readiness gate, released-API discipline, scaffold-first, the offline unit-test loop, and the division of labour with an online ADT MCP server. Use this when you set up a new ABAP repo for agentic development or want a team's coding-agent rules to reference the abap-mcp tools consistently. It does not write the file (paste the returned markdown yourself), does not read the workspace, and is not a substitute for the project's own conventions — it encodes the tool contract, nothing project-specific beyond the parameters you pass. Example: { "target": "Cloud", "pairedWith": ["sap-adt-mcp"], "runEnabled": true }. |
| check_rap_behaviorA | Check RAP behavior definitions (.bdef.asbdef) and CDS service definitions (.srvd.srvdsrv) for syntax and structural-consistency defects, offline, using abap-mcp's own BDL/SDL parser — abaplint does not deep-parse either file type (it stores a BDEF behind a single regex and a SRVD not at all), so this is the only static feedback these files get without a system. Reports the draft/etag/lock/authorization/numbering consistency set, strict-mode obligations, action/operation/validation/determination/side-effect coherence, projection 'use' statements against the base BDEF, and service 'expose' sets against the CDS entities you pass in the same call; with abapRelease set, it also flags constructs newer than that release from a bundled, dated copy of SAP's RAP BDL feature table. Use this when you have written or generated a BDEF/SRVD (by hand, from scaffold_rap_bo, or from a model that may have invented RAP syntax) and want it checked before it reaches ADT — and pass the base BDEF and the .ddls.asddls views alongside it, because the cross-file rules only run on files present in the call. It does NOT connect to SAP, does not activate anything, does not run ATC, cannot see DDIC tables, behavior-pool classes or CDS field types, and cannot certify that ADT would accept the file — the grammar is derived from SAP's published feature tables plus a 102-file corpus of Apache-2.0 SAP sample sources, so constructs it does not recognise are reported as info, never as errors. For ABAP classes use lint_abap; for a new BO use scaffold_rap_bo; for what a release added use explain_abap_release. Example: check_rap_behavior({ "files": [ { "filename": "zr_travel.bdef.asbdef", "source": "managed implementation in class zbp_travel unique;\nstrict ( 2 );\nwith draft;\n\ndefine behavior for ZR_Travel alias Travel\npersistent table ztravel\nlock master\n{ create; }\n" } ], "abapRelease": "2508" }). |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
| abap-review | Run a full code review over ABAP the user provides or names: lint, triage, explain each finding's why, propose minimal fixes, and prove the rework with compare_abap. Optionally focused (Performance / Security / Styleguide). |
| abap-mentor | Turn the session into a patient senior-consultant mentoring mode: every snippet the user shares is quietly linted and readiness-checked, findings become plain-language guidance, new objects start from validated scaffolds. |
| abap-migration-plan | Drive plan_cloud_migration over the sources in scope and present a client-ready phased backlog — current state, phases with effort bands and exit criteria, released-API work separated — then offer to execute phase 1. |
| abap-from-spec | Turn a written spec into working, validated modern ABAP/RAP — no blank page: restate the spec as a build plan, scaffold the validated RAP foundation, implement behaviors, gate every file through fix_abap + lint_abap until clean, generate and fill unit tests, and deliver in activation order with an assumptions register. |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
| knowledge-manifest | Curation date, licence posture and the full source list for every bundled knowledge file. bundled knowledge curated 2026-09-10; the target system's release notes are authoritative. |
| knowledge-abap-release-deltas | Every verified release-delta row for the 2502 to 2608 trains plus ABAP Platform 2025, each with an original summary, the cited SAP source URL and a confidence flag. bundled knowledge curated 2026-09-10; the target system's release notes are authoritative. |
| knowledge-clean-core | SAP's Clean Core Level A-D model, the retired 3-tier framing, release contracts C0 to C4, the real ATC check and variant names, and the Cloudification Repository file and schema inventory. bundled knowledge curated 2026-09-10; the target system's release notes are authoritative. |
| knowledge-sap-ai-options | Decision cards for SAP-ABAP-1, the Generative AI Hub orchestration API, the ABAP AI SDK powered by ISLM, Joule for Developers, SAP's official ADT MCP server, the custom code migration agent and the community MCP ecosystem. bundled knowledge curated 2026-09-10; the target system's release notes are authoritative. |
| cds-table-entities-2502 | Persistence can now be declared in ABAP CDS source instead of the Dictionary editor. SAP positions the CDS table entity as the successor artifact to a DDIC database table for new development. |
| writable-cds-view-entities-2502 | A CDS view entity can be flagged writable, so ABAP SQL modifying statements reach the underlying persistence through the view. Before this a view entity was read-only projection only. |
| writable-cds-external-entities-2502 | External entities, which project a remote SQL data source into CDS, gained a writable flavour so that outbound modifying statements are possible, not just remote reads. |
| abap-sql-connection-objects-2502 | A database connection can be represented as an object whose class implements IF_ABAP_SQL_CONNECTION, then handed to an ABAP SQL statement through a CONNECTION addition instead of a static connection name. |
| declare-client-2502 | The FROM clause can name which column of a source acts as the client column, which matters when a data source is not client-annotated in the Dictionary but must still be handled client-dependently. |
| dml-options-addition-2502 | Modifying ABAP SQL statements accept an OPTIONS addition, the same escape hatch reads already had, so ABAP-specific behaviour can be requested on INSERT, UPDATE, MODIFY and DELETE. |
| eml-runtime-type-service-2502 | BDEF-derived types can be built dynamically and type-safely through a runtime type service method, so generic EML code no longer has to hard-code every derived structure it touches. |
| bdef-derived-secondary-keys-2502 | Derived internal table types generated from a behavior definition can carry developer-defined secondary keys, which makes large EML result tables cheaper to read by non-primary-key criteria. |
| expose-method-amdp-2502 | A service definition can expose an AMDP method, widening what a business service may publish beyond CDS entities alone. Sourced from SAP's keyword-documentation delta page rather than the release blog. |
| rap-event-driven-side-effects-2502 | SAP's ABAP 9.14 delta page also lists RAP side effects driven by events, link and unlink actions with inverse functions, editable tree hierarchies and a managed reorder action. Only the keyword page was checked, not a release blog. |
| cds-delegated-buffering-2505 | A CDS entity can delegate its buffer definition to another entity instead of declaring its own, so a projection stack shares one buffer. Sourced from SAP's keyword-documentation delta page only. |
| sql-level-based-hierarchies-2505 | The 9.15 delta adds level-based hierarchy generation in ABAP SQL plus more spatial functions on top of the 9.14 geo work. Keyword-documentation sourced, not confirmed against a release blog. |
| odata-ui-service-from-scratch-2505 | A generator that produces a full OData UI service from a starting point rather than from an existing BO enters the RAP stream. Reported via SAP's RAP What's New page, not a fetched release blog. |
| cds-table-entity-buffering-2508 | A CDS table entity can now be buffered. The entity opts in with an AbapCatalog annotation and a separate buffer definition names the entity it buffers. |
| abap-sql-spatial-functions-2508 | Geospatial predicates and measures become first-class ABAP SQL functions that map onto the database's own spatial constructs, so distance and containment work no longer needs native SQL or AMDP. |
| rap-change-documents-2508 | A managed RAP business object can record who changed which persisted field into a change document object, giving audit history without hand-written logging code in the save sequence. |
| system-classes-random-2508 | New released system classes cover random-number generation and computation with probability distributions, so simulation and sampling logic no longer needs a hand-rolled generator. |
| rap-reorder-action-2508 | A non-standard operation on an association moves a hierarchy node to a chosen position among its siblings, which is what an editable tree view needs. It can be implemented managed or unmanaged. |
| rap-collaborative-draft-2508 | Several users can work on the same draft instance at once. This shipped with 2508; the later cross-business-object extension is a separate 2602 delta and is often mis-dated. |
| rap-cross-bo-transactional-2508 | Behavior definitions can declare a shared cross-business-object context so several BOs commit inside one transaction, instead of each BO owning its own isolated save sequence. |
| rap-factory-action-http-201-2508 | A successful factory action returns status 201 instead of 200 over OData V4. Any client or test that asserts on 200 breaks after upgrade, so treat this as a behavioural change, not a feature. |
| adt-bdef-for-table-entities-2508 | The development tools can generate a behavior definition directly on a CDS table entity, closing the tooling gap that made table entities awkward as RAP persistence when they first shipped. |
| rap-bo-test-double-cid-2508 | The business-object test double framework fills the content ID for a MODIFY EML statement automatically, removing a common source of noisy boilerplate in RAP unit tests. |
| adt-debugger-table-compare-2508 | The debugger gained a side-by-side comparison for two internal tables, which shortens the loop when a RAP determination or a mapping produces almost-but-not-quite the expected rows. |
| atc-released-api-consistency-bdef-2508 | The provider-side ATC checks that police whether a released API changed incompatibly now also inspect BDEF-derived types inside released classes and interfaces. |
| rap-c1-event-logging-2508 | RAP events released under contract C1 can be logged for local consumption, which gives a system-internal audit trail for events that never leave the system as remote APIs. |
| business-event-grouping-filter-2508 | Business events can be grouped into activities, related objects can be viewed together, extensibility status is published in the discovery document, and a source filter can key on payload properties. |
| business-event-log-cds-views-2508 | Released views C_BUEVLGEVTFULLPYLDJSONDEX_2, C_BUSEVTLOGACTIVITYDEX and C_BUSEVTLOGEVENTDEX_3 replace the earlier log views. Code reading the older two must move before they disappear. |
| sql-service-writable-view-dml-2508 | The ODBC-facing SQL service stops being read-only: external clients can insert and delete through a writable CDS view entity, which changes the security posture of any exposed SQL service. |
| outbound-sql-external-entities-2508 | A remote SQL API described by a CSN definition can be imported by an ADT wizard that generates matching CDS external entities, making the remote source queryable with ordinary ABAP SQL. |
| http-server-sent-events-2508 | Both sides of the ABAP HTTP stack understand server-sent events, so a long-running ABAP process can stream progress to a browser or a service without polling. |
| change-document-reuse-ui-2508 | A ready-made user interface for browsing change documents can be embedded in a RAP OData V4 Fiori application, pairing with the 2508 change-document language feature. |
| release-2508-availability | The 2508 release of the BTP ABAP environment became available on 16 August 2025 and replaced 2505. Highlights called out were table entities as RAP persistence, multi-dimensional reporting and the partner add-on product. |
| sql-greatest-least-window-2508 | The 9.16 keyword delta adds GREATEST and LEAST scalar functions, a distinct count as a window function, and null retention in hierarchies. Keyword-documentation sourced, not confirmed against a release blog. |
| rap-hierarchy-copy-auth-2508 | The 9.16 RAP delta lists copying a hierarchy, authorization control on create-by-association, selectively disabling authorization for determinations and validations, draft scope and event delivery retries. |
| call-transformation-json-options-2508 | Serialization gained JSON-specific source and result options, so a transformation can consume or produce JSON without an intermediate XML round trip. Keyword-documentation sourced only. |
| custom-entity-association-rules-2508 | Conditions allowed on associations of a custom entity were tightened in 9.16, alongside static external entities and static caches. Existing custom entities may need adjustment on upgrade. |
| rap-change-docs-as-business-events-2511 | Changes already recorded as RAP change documents can be published as business events, so downstream consumers subscribe to the change stream instead of polling the log tables. |
| eml-read-with-changes-2511 | An EML read can ask for the change operations recorded on a data record, either for all fields or a named subset, returning them in a dedicated result structure alongside the data. |
| rap-global-side-effects-2511 | Interdependencies that span the whole business object can be declared so the user interface reloads as a unit. The end user can also trigger the reload with a dedicated keystroke. |
| atc-usage-of-apis-partner-support-2511 | Certified partners can register their own classic APIs so customer code calling them is not flagged. Enablement runs through SAP Note 3630552 and the check parameter partnerAPIDataSources. |
| fiori-analytical-table-rap-2511 | A read-only analytical table combines transactional data with light analytical capability in a RAP application. Reported from the release blog without an independent fact-check pass. |
| sql-indicators-csv-writer-2511 | The 9.17 keyword delta lists SQL indicators, a CSV writer class and new garbage-collection support. Keyword-documentation sourced, not confirmed against a release blog. |
| release-2511-availability | The 2511 release of the BTP ABAP environment became available on 15 November 2025 as the successor to 2508. |
| rap-collaborative-draft-cross-bo-2602 | Concurrent draft editing, which arrived in 2508 for one business object, now spans cross-business-object scenarios where both participants carry full draft scope. |
| rap-recommendations-islm-2602 | Field-level input assistance can be produced either by deterministic rules or by a language model reached through the ABAP AI SDK under Intelligent Scenario Lifecycle Management. |
| cds-star-schema-generator-2602 | A wizard generates the transactional, cube and dimension views of an embedded-analytics star schema, so the analytical modelling layer no longer has to be hand-written view by view. |
| manage-api-snapshots-app-2602 | A provider of released APIs can export an API snapshot from one system and import it into another, so an incompatible change to a released object is caught during development rather than after transport. |
| test-double-framework-enhancements-2602 | The 2602 notes list unspecified enhancements to the test double frameworks under testability. No individual feature was named, so treat this as a pointer to check the target system's own notes. |
| atc-explain-joule-2602 | Findings can be explained in place by Joule inside the custom code analysis application. The capability needs an extra licence per SAP Note 3571857 and is desktop only. |
| release-2602-availability | The 2602 release of the BTP ABAP environment was delivered on 14 February 2026 as the successor to 2511. |
| rap-draft-on-cds-table-entities-2605 | A managed draft-enabled business object can keep its draft rows in a CDS table entity. Until 2605 a table entity could only serve as active persistence for a business object without draft. |
| rap-feature-control-readonly-create-2605 | Two static feature-control attributes let a field be read-only only while creating, or mandatory only while updating, instead of forcing one blanket rule across every operation. |
| atc-clean-core-readiness-ecc-s4-2605 | The release notes announce running clean-core analysis against ECC and S/4HANA systems with this variant. The variant name itself is older; what changed is the supported target landscape. |
| abap-boolean-expressions-2605 | Boolean expressions become usable directly where previously a comparison had to be wrapped in xsdbool or an IF. Listed in the 2605 release notes without further detail. |
| abap-recursive-type-references-2605 | A structure may reference its own type, which makes tree-shaped and linked-list data expressible directly instead of through generic references plus casting. |
| delete-duplicates-without-sorting-2605 | Duplicate removal on an internal table no longer requires sorting first, which removes the classic sort-then-delete pairing and the bugs that come from forgetting the sort. |
| xco-generation-api-table-entities-2605 | CDS table entities can be created programmatically through the XCO generation API, which is what a generator or a migration tool needs in order to create persistence without the ADT wizard. |
| adt-cds-migration-signature-compare-2605 | The migration tooling compares the signature of the old view with the generated view entity, which surfaces silent field or type drift before the replacement is activated. |
| smbc-tree-table-type-2605 | A business configuration object can be modelled as a tree table, so hierarchical configuration is maintainable in the standard configuration app rather than a custom screen. |
| atc-charm-elastic-scaling-2605 | Check results can be tied into change request management, and check runs can be spread across elastically scaled processes so a large central run finishes in reasonable time. |
| adt-vscode-decoupled-delivery-2605 | SAP states that the first delivery of the VS Code development tools is decoupled from the ABAP backend release and rolls out on its own cadence, unlike the Eclipse plug-in's traditional pairing. |
| btp-abap-runtime-half-acu-2605 | The smallest bookable ABAP runtime drops to half an ABAP compute unit, a multi-availability-zone HANA Cloud option appears, and two Azure regions (Toronto and Frankfurt) are added. |
| sql-set-block-commit-2605 | The connection interface gained a method to block commits on that connection, which matters when a secondary connection must not participate in the surrounding transaction. Keyword-documentation sourced only. |
| rap-dcl-on-draft-tables-2605 | The 9.19 RAP delta reports that data control language can be defined on draft tables themselves, tightening who may read another user's draft rows. Keyword-documentation sourced only. |
| release-2605-availability | The 2605 release of the BTP ABAP environment was delivered on 16 May 2026 as the successor to 2602. |
| adt-vscode-object-types-2608 | The 2608 notes describe a wider object-type footprint for the VS Code extension: dictionary objects, function groups and modules, behavior definition extensions and inline help. Search-snippet sourced; the release blog could not be fetched. |
| cds-external-entity-default-2608 | External entities accept default values for elements in 9.20, which matters when a remote source omits a column the ABAP consumer expects. Keyword-documentation sourced only. |
| type-any-structure-2608 | A generic formal parameter can be constrained to any structured type, optionally one containing named components, which is stricter than plain TYPE ANY. Keyword-documentation sourced only. |
| call-transformation-name-handling-2608 | Serialization gains two options that control how ABAP names are mapped and escaped in the produced document, which helps when a downstream schema demands a specific casing. Keyword-documentation sourced only. |
| btp-2608-highlights | Reported highlights include adjustable start of technical downtime in the upgrade app, migration of business roles to IAM roles, units of measure in custom business configurations, OData binding types in service bindings, and My Home as the single entry page. |
| release-2608-availability | 2608 is reported as delivered on 15 August 2026 and is the current BTP ABAP environment release as of the curation date. The release blog itself was not fetchable, so this rests on search snippets. |
| s4hc-2608-avc-solution-orders | The RAP-based create, read, update, delete and simulation API for solution orders fully supports advanced variant configuration, and the product master API was extended for configuration create and update. |
| s4hc-2608-ai-features | SAP's 35th major cloud ERP release makes seventeen base AI-assisted features generally available, including AI-assisted easy fill for Fiori elements apps, with several agents targeted at the 2608.2 wave. |
| s4hc-2508-delivery-rap-events | Developer extensibility can subscribe to delivery events: created, changed and deleted plus finer-grained ones such as picking status changed or item created for outbound deliveries. |
| abap-platform-2025-basis-816 | The platform under S/4HANA 2025 and S/4HANA Cloud Private Edition 2025 is SAP_BASIS 816, that is ABAP release 8.16 with kernel 916, generally available on 8 October 2025. SAP names platforms by calendar year. |
| abap-release-numbering-lines | The 8.1x releases are based on 7.58 and belong to the on-stack platform, while the 9.x numbers belong to the BTP ABAP environment. There is no product called ABAP 9; 9.16 simply means the 2508 cloud release. |
| abap-cloud-release-mapping | The BTP ABAP environment quarterly trains map to ABAP releases as 9.14/2502, 9.15/2505, 9.16/2508, 9.17/2511, 9.18/2602, 9.19/2605 and 9.20/2608. Cloud and S/4HANA trains are related but not interchangeable. |
| rap-generators-odata-ui-2025 | On-stack generators produce an OData UI service from an existing RAP business object, with or without AI assistance, so the service and projection layer no longer has to be typed by hand. |
| cds-table-entities-as-rap-persistence-2025 | On ABAP Platform 2025 a managed business object without draft can persist into a CDS table entity instead of a classic dictionary table. Draft persistence on table entities is a separate, later cloud delta. |
| rap-collaborative-draft-2025 | Concurrent multi-user editing of one draft instance is part of the 2025 on-stack RAP investment, matching the capability the cloud line received in its 2508 train. |
| rap-cross-bo-associations-2025 | Associations that cross business-object boundaries can be made transactionally aware on ABAP Platform 2025, so a composite scenario commits as one unit rather than as chained independent saves. |
| rap-tree-views-2025 | Hierarchical RAP user interfaces gained drag and drop, cut and paste, reordering and cascading delete, which is what makes a tree usable for maintenance rather than display only. |
| rap-event-driven-side-effects-2025 | Side effects can be triggered by events so a user interface refreshes after asynchronous work completes, instead of only after a synchronous round trip finished. |
| eml-privileged-context-propagation-2025 | A privileged execution context now carries into the reading and modifying EML calls that follow, removing the pattern of re-declaring privileged mode at every hop of a call chain. |
| amdp-test-double-framework-2025 | A dedicated framework for doubling AMDP methods arrives with ABAP Platform 2025. Before it, database procedure logic was one of the hardest parts of an application to unit test offline. |
| cds-test-double-hierarchy-views-2025 | CDS hierarchies join the set of entities the CDS test double framework can replace, which makes hierarchy-based reporting logic testable without live hierarchy data. |
| cds-test-double-supported-doubles | Doubles exist for dictionary tables and views, CDS views and view entities with parameters, projection and external views, table functions, currency and unit conversion, shared tables, session variables, hierarchies, table entities and static external entities. |
| adt-memory-debugger-views-2025 | The debugger gained a memory view and a snapshot list, plus the internal-table comparison tool that had already reached the cloud line in its 2508 train. |
| cds-updatable-view-entities-2025 | An updatable view entity can wrap a dictionary table or a CDS table entity and expose a native CDS signature that ABAP SQL and access control can use, which is a practical bridge for classic persistence. |
| cds-static-external-entities-2025 | Static external entities let a remote data source be consumed with a fixed, design-time-known signature, complementing the writable external entities the cloud line received in 2502. |
| cds-hierarchy-generation-wizard-2025 | A wizard automates creating hierarchically structured CDS artifacts. The cloud line received an equivalent hierarchy generation wizard in its 2508 train. |
| cds-explain-ai-2025 | Development tools can produce semantic context about a CDS entity on demand. It is an explanation aid, not a code generator, and it is one of the Joule-family capabilities rather than a language feature. |
| rap-business-events-established | Events are declared in a behavior definition and raised in the late save phase after the point of no return; an event binding maps them to a namespace, object and operation. This dates to the 2208 stream, not to 2508. |
| rap-event-release-contracts | A local event may be exposed under release contract C1 when the business object interface is released. For remote events it is the event binding that carries the C2 remote-API contract. |
| rap-late-numbering-established | Late numbering assigns the final key only just before the record is written, which is what gap-free business identifiers such as invoice numbers require. It sits alongside early and managed numbering and is not a 2025-26 novelty. |
| rap-bo-interfaces-established | Business object interfaces entered the RAP stream around 2205. Later releases widened generation and extension scenarios around them, so do not present them as new in this window. |
| rap-precheck-established | The precheck concept predates the 2502 to 2608 window. Attribute it to a specific narrower enhancement or leave it out of a release-delta answer entirely. |
| rap-large-objects-established | Handling of large objects in RAP predates the window. Newer releases add surrounding service and runtime capability rather than introducing the concept itself. |
| bgpf-established | The background processing framework provides transactional, queued asynchronous execution and integrates with RAP transaction control. It is an existing platform capability, not a 2608 arrival. |
| clean-core-level-a | The cleanest grade. Extensions are built on stack with the ABAP Cloud development model, or side by side on SAP BTP with any SAP Build option, and they consume only released APIs or custom wrappers over them. |
| clean-core-level-b | Classic ABAP development that follows SAP's recommendations for classic technologies and frameworks offered as classic SAP APIs. Level B is not "BTP with some legacy calls" - side-by-side BTP work is Level A. |
| clean-core-level-c | Classic ABAP that cannot qualify for Level B because it reaches arbitrary SAP internal objects. SAP calls it conditionally clean: acceptable only if changelog checks for the used SAP objects run before every upgrade. |
| clean-core-level-d | Not clean core. Modifications, use of objects SAP does not recommend, and not-recommended extension technologies such as implicit enhancements land here, and they carry the highest upgrade risk. |
| levels-replace-three-tier | SAP's August 2025 extensibility guide update swapped a binary clean or not-clean tier framing for four graded levels, because the old model was too restrictive for landscapes carrying large amounts of classic custom code. |
| three-tier-model-historical | Tier 1 was ABAP Cloud on stack plus SAP Build side by side; tier 2 was cloud API enablement, custom wrappers released for tier-1 consumption; tier 3 was classic ABAP. Historical since August 2025 - do not present it as current guidance. |
| tier-two-wrappers-survive | SAP still recommends keeping custom wrappers in separate, governed packages. What was dropped is the word layer: tier 2 described a practice, not a technical tier, so the practice continues under the A-D model. |
| package-guidance-cloud-vs-classic | Put ABAP Cloud objects in packages of a software component whose language version is ABAP for Cloud Development, and keep classic ABAP - including the wrappers - in a Standard ABAP software component such as HOME. |
| release-contract-c0 | Stability is guaranteed at dedicated extension points only. It applies to objects meant to be enhanced with the enhancement tools of the ABAP Dictionary or ABAP CDS. |
| release-contract-c1 | A technically stable public interface for use inside the system. Visible components must not change incompatibly, optional components may be added later, and it is the contract relevant to objects consumed from another ABAP language version. |
| release-contract-c2 | Everything C1 guarantees, plus an assurance that external consumers need no adjustment after an upgrade. It is relevant only where an object really is consumed from outside the system. |
| release-contract-c3 | Stable persistence for a customer's own configuration content, exportable, importable and editable through dedicated APIs. Keys and existing fields must not change; non-key fields may be added. Relevant to business configuration tooling. |
| release-contract-c4 | Like C1 but stricter: no optional components may be added later and no changes are allowed. It applies to AMDP methods that other AMDP methods call, such as BAdI methods implemented as AMDP. |
| c1-is-the-consumption-gate | Objects under C0 or C1 can be made visible to the restricted language versions ABAP for Cloud Development and ABAP for Key Users, but for actually accessing a released API from another repository object only C1 counts. |
| released-api-type-rule | When a data object is passed to an API in another software component, its type generally need not be released for that API to inspect it. A passed reference can be accessed, but the pointed-to data object cannot unless its type is released. |
| abap-language-versions | Standard ABAP carries id X, ABAP for Cloud Development id 5 and ABAP for Key Users id 2. The cloud version allows only a restricted element set, forces most code into methods, enforces client isolation and applies the strictest available SQL syntax check. |
| abap-cloud-access-rule | Beyond a few allowed cases such as access inside the same software component, only objects that are a released API for that language version may be used. Most SAP tables are therefore unreachable and a released CDS abstraction must be used instead. |
| atc-check-usage-of-released-apis | This is the check name used for SAP Cloud ERP, the public edition. Activate it under Cloud Readiness and point it at objectReleaseInfoLatest.json in SAP's Cloudification Repository. |
| atc-check-usage-of-apis | The private-edition and clean-core variant of the same idea. Its technical check object is SYCM_USAGE_OF_APIS; after implementing SAP Note 3565942 you must import its parameters in the development tools before it works. |
| atc-usage-of-apis-replaces-released | The replacement is scoped to the classic-ABAP clean-core development variant, where the three ABAP Cloud checks are excluded. It is not a global deprecation of the released-API check. |
| atc-variant-abap-clean-core-development | The clean-core development variant, for remote ATC on the BTP ABAP environment and for ATC on S/4HANA 2025 FPS01 or higher, private cloud or on premise. |
| atc-variant-abap-clean-core-readiness | The preconfigured variant for checking existing code on ECC systems and on S/4HANA below 2023, which have no native clean-core checks. Run it from ATC on SAP BTP against those systems. |
| atc-variant-deprecations | SAP's own released-object feed records ABAP_CLOUD_DEVELOPMENT_3TIER superseded by ABAP_CLEAN_CORE_DEVELOPMENT, SAP_CP_READINESS by ABAP_CLOUD_READINESS, and SAP_CLOUD_PLATFORM_ATC_DEFAULT by ABAP_CLOUD_DEVELOPMENT_DEFAULT. |
| atc-sap-cp-readiness-legacy | It differs from its successor ABAP_CLOUD_READINESS only in two parameters of the sortedness check, and SAP's feed marks it deprecated. Do not describe it as the check that validates released-API usage. |
| atc-no-api-release-state-check | That identifier appears in no SAP source. The real display names are Usage of Released APIs (Cloudification Repository), Usage of APIs (Cloudification Repository), Usage of APIs and Allowed Enhancement Technologies. |
| atc-provider-side-release-checks | A separate family, message class ARS_CMP_ATC, polices whether the provider of a released API changed it incompatibly. It is the closest real thing to an "API release state" check but it is not a consumer check. |
| atc-recommended-variant-recipe | Copy the variant ABAP_CLOUD_DEVELOPMENT_DEFAULT and add three checks: CI_CRITICAL_STATEMENTS, CI_SEARCH_CUST_MODIFICATIONS and SYCM_USAGE_OF_APIS. This is the recipe quoted from the extensibility guide. |
| atc-four-recommended-checks | Usage of APIs, Allowed SAP enhancement technologies, Search for customer modifications and Critical statements. Code vulnerability analysis is optional and needs its own licence. |
| atc-blocking-mode-governance | SAP's guidance is to configure blocking mode in development systems so Priority 1 and 2 findings cannot be transported, with a five-step rollout from a central ATC system through variant, analysis app, exemptions and enforcement. |
| atc-partner-classic-apis | Certified partners generate a namespace classification file with report SYCM_API_CLASSIFICATION_MANAGR after implementing SAP Note 3630552, then contribute it by pull request to the repository's partner folder. |
| atc-partner-folder-inventory | As of 2026-09-09 the partner folder held 29 objectClassifications files, the largest being SAAR at about 155 KB and OTX at about 86 KB, plus a 25-byte NAMESPACE template. |
| cloudification-repository-overview | SAP's Apache-2.0 repository of released and classic API lists for the ATC cloud-readiness and clean-core checks. It is actively maintained and is the machine-readable source of truth those checks consume. |
| cloudification-src-inventory | Sixteen entries: objectClassifications_SAP.json, objectReleaseInfoLatest.json, objectReleaseInfo_BTPLatest.json, ten per-FPS private-cloud files, objectReleaseInfo_PCELatest.json, a PCELatest TOON file, plus the partner and archive folders. |
| cloudification-no-src-classifications-toon | The README links it, but the file returns 404. The TOON classification file lives only under src/archive. Any tool that fetches the linked path will fail. |
| cloudification-archive-inventory | Files are named by year and month: 2208, 2302, 2308, 2402 and 2408 exist as both CSV and JSON, while 2502, 2508 and 2602 are JSON only. Dated classification snapshots and the old 3-tier model files sit alongside them. |
| cloudification-no-2608-archive | The public-edition archive series ends at 2602. The August 2026 file was genuinely absent even though the repository had been pushed to that same morning, so do not assume a 2608 file exists. |
| cloudification-edition-file-mapping | objectReleaseInfoLatest.json for SAP Cloud ERP public edition, objectReleaseInfo_BTPLatest.json for the BTP ABAP environment, objectReleaseInfo_PCELatest.json for private cloud. Private-cloud files refresh per feature pack stack, not per support package. |
| cloudification-readme-broken-fps-url | It tells you to use objectReleaseInfo_PCE2025.json for release 2025 FPS00, but no such file exists. The real names carry a stack suffix: PCE2025_0 and PCE2025_1. |
| object-release-info-schema | formatVersion "1" with a single objectReleaseInfo array. Each entry carries tadirObject, tadirObjName, objectType, objectKey, softwareComponent, applicationComponent and state, plus optional successorClassification, successors and successorConceptName. |
| object-release-info-states | States seen are released, notToBeReleased and deprecated. successorClassification takes an empty string, oneObject, multipleObjects or concept, and is absent entirely on a few hundred entries. |
| object-classifications-schema | A draft-07 JSON schema is published as schema/classicAPI-schema.json. formatVersion is fixed at "2", state is one of classicAPI, noAPI or internalAPI, optional labels are remote-enabled and transactional-consistent, and additionalProperties is false at every level. |
| object-classifications-generated-from | The schema carries a comment saying the file is autogenerated from ABAP interface IF_YCM_CLASSIC_API_LIST_V2. There is no published schema for the objectReleaseInfo files, so their shape must be inferred from the data. |
| cloudification-feed-statistics | The public-edition feed held 37,030 entries, the BTP feed 7,023 and the classification feed 8,588. The classification feed had zero internalAPI rows even though the schema permits that state. |
| state-to-level-to-priority | Released gives Level A and no finding; deprecated and classic API give Level B at Priority 3; not to be released gives Level C at Priority 2; no API means maximum technical debt, Level D at Priority 1. |
| state-precedence-rule | Classic API together with released resolves to released, so Level A and no message. Classic API together with not to be released resolves to classic, so Level B at Priority 3 with a move to the named successor. |
| cloudification-viewer | A browser view over the same data at sap.github.io, switchable between feeds with a version query parameter and filterable by state and label, which is how you find candidates for a wrapper. |
| cloudification-tools-repo | SAP's only sibling repository ships an abapGit-installable ABAP program that migrates existing cloud-readiness check exemptions to the new clean-core checks. There is no separate cloud or BTP data repository; editions are files. |
| project-kernseife | An actively maintained Apache-2.0 SAP open-source custom ATC check that scores the use of SAP objects against an adjustable classification, which is the tool behind Kernseife references in clean-core material. |
| clean-core-kpis | Two KPIs on the RISE methodology dashboard in SAP Cloud ALM: the distribution of custom objects across the A-D levels, and a severity-weighted debt score with a three-month trend. |
| clean-core-kpi-import-constraints | Results must be imported by hand, the global variant has to include Allowed SAP enhancement technologies, Usage of APIs and Critical Statements, extra checks are ignored and only bloat the export, and the import file is capped at 100 MB. |
| custom-code-app-split | From the 2508 releases and S/4HANA 2025 there are two tiles: Analyze Custom Code for the analysis role and Custom Code Migration for the project role. Three project types exist: S/4HANA migration, BTP analysis and custom code analysis. |
| edition-names | SAP Cloud ERP public edition and the BTP ABAP environment use ABAP for Cloud Development. SAP Cloud ERP private edition and on-premise S/4HANA also permit Standard ABAP; their 2025 platform is ABAP Platform 2025, SAP_BASIS 816. |
| abap-mcp-grade-is-not-sap-level | This server grades blocker density in supplied source text. SAP's levels classify an object's extensibility approach and map to ATC priorities. Never present one as the other; only a real ATC run produces a SAP level. |
| abapdocu-url-retirement | Pages such as the release-contract glossary entry now return not found. Content moved under help.sap.com/docs/abap-cloud/abap-keyword/, so any tool hard-coding the old abenXXX.htm links will break. |
| clean-core-sap-notes | 3565942 introduces the new checks, 3627152 tracks corrections through the Note Analyzer, 3630552 adds partner classic APIs, 3679781 filters technical-only modifications, and 3571857 governs the Joule licence for ATC Explain. |
| sap-abap-1 | An SAP-hosted model fine-tuned on SAP's own ABAP and CDS code base, reachable only through the Generative AI Hub orchestration service. It is an explain-first model: SAP labels its code generation experimental and not recommended for production. |
| generative-ai-hub-orchestration | SAP AI Core's harmonised entry point to many vendors' models behind one request shape, with optional content filtering, data masking, document grounding and translation modules in the same call. |
| abap-ai-sdk-islm | SAP's official ABAP reuse library for calling models on the Generative AI Hub from custom ABAP Cloud code. Design-time artifacts called intelligent scenarios and intelligent scenario models carry the connection, the model choice and any prompt templates. |
| joule-for-developers | SAP's in-IDE AI toolset for ABAP developers, distinct from the ABAP AI SDK. It covers chat, predictive completion, explanation, ABAP Unit and CDS test generation, CDS annotations, custom code migration assistance and the agentic capabilities layered on the ADT MCP server. |
| official-adt-mcp-server | An MCP server on SAP's new ABAP Language Server, shipped inside ADT for Eclipse and for VS Code. Twenty tools across eight toolsets let any MCP-capable coding agent create, activate, transport, test and check ABAP in a live system. |
| custom-code-migration-agent | SAP's first custom code migration agent, generally available since Q2 2026. It runs readiness checks over a package, categorises findings, applies deterministic quick fixes, then attempts AI fixes with a confidence score, and re-runs the checks. |
| community-servers | Around two dozen community MCP servers cover the ground SAP's official server left open. Most drive the ADT REST layer from outside the system; one is an SDK for building MCP servers inside ABAP itself. |
TDQS
Scored across 18 tools
Each tool targets a distinct action+artifact: lint_abap vs check_rap_behavior vs check_cloud_readiness vs check_released_api are explicitly delineated, and the three scaffold_* tools (RAP BO, AI SDK, unit test) cover separate generation targets. The knowledge cluster (explain_abap_rule, list_abap_rules, explain_abap_release, search_sap_knowledge) is related but the descriptions add explicit routing rules ("for release-timeline questions prefer explain_abap_release"). Overlap is minimal and always resolved by the descriptions.
All 18 names use consistent snake_case with a verb-led prefix (compare_, fix_, explain_, list_, format_, get_, lint_, check_, plan_, scaffold_, search_). The pattern is predictable throughout — verb_abap_noun or verb_noun — with no camelCase or stylistic mixing.
18 tools is slightly on the heavy side, but each occupies a genuinely distinct slot in an offline ABAP development workflow (lint/format/fix, cloud assessment, migration planning, scaffolding, knowledge lookups). Nothing is redundant enough to remove, though the surface is broader than the typical 3-15 sweet spot.
The offline toolchain is unusually complete: static analysis, formatting, fixes, outline, cloud-readiness assessment, migration backlog, dependency graph, released-API lookup, RAP/BDEF checking, and scaffolding for BOs, AI-SDK classes and unit tests. Gaps are mostly intentional (no live SAP connection, no artifact CRUD — system access is deliberately delegated to a paired ADT MCP server), so the surface is cohesive for its stated offline scope.