Release 2.2.2.202608231259
This commit is contained in:
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
BIN
2.2.2.202608231259/artifacts.jar
Normal file
BIN
2.2.2.202608231259/artifacts.jar
Normal file
Binary file not shown.
BIN
2.2.2.202608231259/artifacts.xml.xz
Normal file
BIN
2.2.2.202608231259/artifacts.xml.xz
Normal file
Binary file not shown.
BIN
2.2.2.202608231259/content.jar
Normal file
BIN
2.2.2.202608231259/content.jar
Normal file
Binary file not shown.
BIN
2.2.2.202608231259/content.xml.xz
Normal file
BIN
2.2.2.202608231259/content.xml.xz
Normal file
Binary file not shown.
Binary file not shown.
@@ -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,\!
|
artifact.repository.factory.order=artifacts.xml.xz,artifacts.xml,\!
|
||||||
metadata.repository.factory.order=content.xml.xz,content.xml,\!
|
metadata.repository.factory.order=content.xml.xz,content.xml,\!
|
||||||
version=1
|
version=1
|
||||||
Binary file not shown.
32
README.md
32
README.md
@@ -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
|
## Installation
|
||||||
|
|
||||||
### Via Eclipse Update Site
|
### 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
|
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
|
## Multi-System Support
|
||||||
@@ -107,7 +120,7 @@ The `systemId` description in every tool's schema is dynamically populated from
|
|||||||
|
|
||||||
## MCP Tools
|
## 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
|
### 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_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_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_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_element_info` | Resolve an element to its signature, type, and documentation |
|
||||||
| `sap_inactive_objects` | List objects that are currently inactive (not yet activated) |
|
| `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 |
|
| Tool | Description |
|
||||||
|------|-------------|
|
|------|-------------|
|
||||||
| `sap_pull_source` | Read source code of an ABAP object directly into the AI context |
|
| `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) |
|
| `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 |
|
| `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 (lock → write → unlock → activate pipeline) |
|
| `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 |
|
| `sap_pretty_print` | Format (pretty-print) ABAP source via the server formatter |
|
||||||
|
|
||||||
### Lifecycle
|
### 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_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_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_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_run_class` | Run a class implementing IF_OO_ADT_CLASSRUN (ABAP console / F9) |
|
||||||
| `sap_short_dumps` | List recent ABAP runtime errors / short dumps (ST22) |
|
| `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
|
## 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).
|
||||||
|
|||||||
@@ -4,10 +4,10 @@
|
|||||||
type='org.eclipse.equinox.internal.p2.artifact.repository.CompositeArtifactRepository'
|
type='org.eclipse.equinox.internal.p2.artifact.repository.CompositeArtifactRepository'
|
||||||
version='1.0.0'>
|
version='1.0.0'>
|
||||||
<properties size='2'>
|
<properties size='2'>
|
||||||
<property name='p2.timestamp' value='1787482257'/>
|
<property name='p2.timestamp' value='1787489959'/>
|
||||||
<property name='p2.compressed' value='false'/>
|
<property name='p2.compressed' value='false'/>
|
||||||
</properties>
|
</properties>
|
||||||
<children size='1'>
|
<children size='1'>
|
||||||
<child location='2.2.2.202608231050/'/>
|
<child location='2.2.2.202608231259/'/>
|
||||||
</children>
|
</children>
|
||||||
</repository>
|
</repository>
|
||||||
|
|||||||
@@ -4,10 +4,10 @@
|
|||||||
type='org.eclipse.equinox.internal.p2.metadata.repository.CompositeMetadataRepository'
|
type='org.eclipse.equinox.internal.p2.metadata.repository.CompositeMetadataRepository'
|
||||||
version='1.0.0'>
|
version='1.0.0'>
|
||||||
<properties size='2'>
|
<properties size='2'>
|
||||||
<property name='p2.timestamp' value='1787482257'/>
|
<property name='p2.timestamp' value='1787489959'/>
|
||||||
<property name='p2.compressed' value='false'/>
|
<property name='p2.compressed' value='false'/>
|
||||||
</properties>
|
</properties>
|
||||||
<children size='1'>
|
<children size='1'>
|
||||||
<child location='2.2.2.202608231050/'/>
|
<child location='2.2.2.202608231259/'/>
|
||||||
</children>
|
</children>
|
||||||
</repository>
|
</repository>
|
||||||
|
|||||||
Reference in New Issue
Block a user