Release 2.2.2.202608231259

This commit is contained in:
Erhan Keseli
2026-08-23 14:59:19 +02:00
parent 6e971367bb
commit d6080e5a06
15 changed files with 29 additions and 13 deletions

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@@ -1,4 +1,4 @@
#Sun Aug 23 12:50:54 CEST 2026
#Sun Aug 23 14:59:16 CEST 2026
artifact.repository.factory.order=artifacts.xml.xz,artifacts.xml,\!
metadata.repository.factory.order=content.xml.xz,content.xml,\!
version=1

View File

@@ -11,6 +11,19 @@ AI Client --(HTTP/JSON-RPC)--> Eclipse Plugin --(ADT REST API / SNC)--> SAP
```
## Token-efficient by design
AI assistants are billed by tokens, and most of the bill is not the prompt. Measured on a real ABAP task, 63% of the cost was cache write — everything a tool returns enters the model context — and 29% was cache read, the context re-read on every tool call. The prompt was 3%.
The server therefore keeps tool responses small and call counts low:
- **Member lists without source.** `sap_object_members` returns the members of a 2,000-line class in about 300 tokens.
- **Element-level read and write.** Pull one `METHOD` block instead of the class. Push one method back — the server merges it into the full source and sends it to ADT. The model never holds the class.
- **One-call edit.** `sap_push_source` runs the full lock → write → unlock → activate pipeline in a single call.
- **Compact checks.** `sap_check_object` runs syntax check, ATC, and ABAP Unit in one call and returns findings only — no long text.
- **No silent fallbacks.** A tool never falls back to the full source in silence. It states the fallback in the response, or it returns an error.
## Installation
### Via Eclipse Update Site
@@ -85,9 +98,9 @@ Check the health endpoint in your browser or with curl:
GET http://127.0.0.1:3000/health
```
### Port configuration
### Preferences
**Window > Preferences > ABAP MCP Server** — change the server port or enable auto-start when you connect to a project.
**Window > Preferences > ABAP MCP Server** — change the server port, enable auto-start when you connect to a project, or set the full-source line threshold for element reads (default: 200 lines).
## Multi-System Support
@@ -107,7 +120,7 @@ The `systemId` description in every tool's schema is dynamically populated from
## MCP Tools
The plugin exposes 25 tools covering the full ABAP development workflow:
The plugin exposes 28 tools covering the full ABAP development workflow:
### Search & Navigation
@@ -115,6 +128,7 @@ The plugin exposes 25 tools covering the full ABAP development workflow:
|------|-------------|
| `sap_search_object` | Search for ABAP objects by name pattern and/or type |
| `sap_object_structure` | Get the structure and metadata of an object (includes, links, source URLs) |
| `sap_object_members` | List the members of a class, interface, program, or function group — name, kind, visibility, include — without source. `includeLocal=true` also lists local and test classes |
| `sap_usage_references` | Find all where-used references for an object (parsed JSON) |
| `sap_element_info` | Resolve an element to its signature, type, and documentation |
| `sap_inactive_objects` | List objects that are currently inactive (not yet activated) |
@@ -123,10 +137,11 @@ The plugin exposes 25 tools covering the full ABAP development workflow:
| Tool | Description |
|------|-------------|
| `sap_pull_source` | Read source code of an ABAP object directly into the AI context |
| `sap_pull_source_to_file` | Fetch source from SAP and write it to a local file (preferred for large objects) |
| `sap_push_source` | Write source code from context to an ABAP object in SAP |
| `sap_push_source_from_file` | Save a local file back to SAP (lock → write → unlock → activate pipeline) |
| `sap_pull_source` | Read source code of an ABAP object into the AI context. `element=<member>` returns one `METHOD` block (`part=definition` for the declaration); `includeType` selects a class include — `main` (Global Class, default), `definitions`, `implementations`, `macros`, `testclasses`, `all` |
| `sap_pull_source_to_file` | Fetch source from SAP and write it to a local file (preferred for large objects). Same `element` and `includeType` parameters |
| `sap_push_source` | Write source code from context to an ABAP object in SAP — runs the full lock → write → unlock → activate pipeline in one call |
| `sap_push_source_from_file` | Save a local file back to SAP through the same one-call pipeline |
| `sap_push_element` | Write one member block. The server merges the block into the current full source and pushes it — the model never holds the class. CLAS, INTF, PROG, FUGR |
| `sap_pretty_print` | Format (pretty-print) ABAP source via the server formatter |
### Lifecycle
@@ -154,6 +169,7 @@ The plugin exposes 25 tools covering the full ABAP development workflow:
| `sap_syntax_check` | Run a syntax check and return errors and warnings with line numbers |
| `sap_run_unit_test` | Execute ABAP Unit tests and return pass/fail results |
| `sap_atc_run` | Run ATC (ABAP Test Cockpit) checks and return quality findings |
| `sap_check_object` | Syntax check, ATC, and ABAP Unit in one call. One line per step, findings only — severity, object, method, line, short message |
| `sap_run_class` | Run a class implementing IF_OO_ADT_CLASSRUN (ABAP console / F9) |
| `sap_short_dumps` | List recent ABAP runtime errors / short dumps (ST22) |
@@ -192,4 +208,4 @@ The plugin exposes 25 tools covering the full ABAP development workflow:
## License
Copyright 2025 Erhan Keseli. Licensed under the [Apache License, Version 2.0](https://www.apache.org/licenses/LICENSE-2.0).
Copyright 2025-2026 Erhan Keseli. Licensed under the [Apache License, Version 2.0](https://www.apache.org/licenses/LICENSE-2.0).

View File

@@ -4,10 +4,10 @@
type='org.eclipse.equinox.internal.p2.artifact.repository.CompositeArtifactRepository'
version='1.0.0'>
<properties size='2'>
<property name='p2.timestamp' value='1787482257'/>
<property name='p2.timestamp' value='1787489959'/>
<property name='p2.compressed' value='false'/>
</properties>
<children size='1'>
<child location='2.2.2.202608231050/'/>
<child location='2.2.2.202608231259/'/>
</children>
</repository>

View File

@@ -4,10 +4,10 @@
type='org.eclipse.equinox.internal.p2.metadata.repository.CompositeMetadataRepository'
version='1.0.0'>
<properties size='2'>
<property name='p2.timestamp' value='1787482257'/>
<property name='p2.timestamp' value='1787489959'/>
<property name='p2.compressed' value='false'/>
</properties>
<children size='1'>
<child location='2.2.2.202608231050/'/>
<child location='2.2.2.202608231259/'/>
</children>
</repository>