sap-abap-mcp 0.4.1 → 0.7.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +83 -0
- package/README.md +67 -19
- package/out/extension.js +50 -27
- package/out/mcp-server.js +60 -37
- package/package.json +7 -5
package/CHANGELOG.md
CHANGED
|
@@ -3,6 +3,89 @@
|
|
|
3
3
|
All notable changes to **SAP ABAP MCP** (npm + VS Code extension — same
|
|
4
4
|
codebase, same version).
|
|
5
5
|
|
|
6
|
+
## 0.7.0 — 2026-05-23
|
|
7
|
+
|
|
8
|
+
### Added — 6 more DDIC primitives & framework helpers
|
|
9
|
+
|
|
10
|
+
- **`sap_create_shlp`** — Elementary Search Help (SHLP) via
|
|
11
|
+
`DDIF_SHLP_PUT` and activation. Selection method = transparent
|
|
12
|
+
table/view, positional field list with input/output/selection
|
|
13
|
+
flags.
|
|
14
|
+
- **`sap_create_enqu`** — Lock Object (ENQU) via `DDIF_ENQU_PUT`.
|
|
15
|
+
Wraps a primary table with named key fields; lock mode E/S/X/O.
|
|
16
|
+
- **`sap_create_view`** — Classic DDIC view (VIEW, projection type)
|
|
17
|
+
via `DDIF_VIEW_PUT`. Single base table with positional view-field
|
|
18
|
+
↔ table-field mapping.
|
|
19
|
+
- **`sap_create_msag`** — Message Class (MSAG) via direct
|
|
20
|
+
`T100/T100A/T100T/T100U` maintenance. Bulk-loads a list of
|
|
21
|
+
numbered messages with German master language.
|
|
22
|
+
- **`sap_create_bp`** — Business Partner via
|
|
23
|
+
`BAPI_BUPA_CREATE_FROM_DATA`. Person/Organization/Group categories;
|
|
24
|
+
optional role assignment via `BAPI_BUPA_ROLE_ADD_2`. Auto-commits
|
|
25
|
+
via `BAPI_TRANSACTION_COMMIT`.
|
|
26
|
+
- **`sap_publish_odata`** — Register/publish an OData service in the
|
|
27
|
+
Gateway hub via `/IWFND/CL_MED_SRV_RUNTIME=>register_service` —
|
|
28
|
+
the programmatic equivalent of `/IWFND/MAINT_SERVICE` "Add Service".
|
|
29
|
+
|
|
30
|
+
Tool count: 23 → 29.
|
|
31
|
+
|
|
32
|
+
## 0.6.0 — 2026-05-22
|
|
33
|
+
|
|
34
|
+
### Added — DDIC primitives (Domain / DataElement / Structure / Append)
|
|
35
|
+
|
|
36
|
+
- **`sap_create_domain`** — Create or update a DDIC Domain via
|
|
37
|
+
`DDIF_DOMA_PUT` and activate it. Supports single fixed values
|
|
38
|
+
(`values: [{value, description}]`) and fixed-value intervals
|
|
39
|
+
(`intervals: [{low, high, description}]`); auto-sets `valexi='X'`
|
|
40
|
+
when either list is non-empty. Atomic: TADIR registration +
|
|
41
|
+
domain header (`DD01V`) + value table (`DD07V`) + activation in a
|
|
42
|
+
single round-trip.
|
|
43
|
+
- **`sap_create_dtel`** — Create or update a DDIC Data Element via
|
|
44
|
+
`DDIF_DTEL_PUT` and activate it. Required: name, referenced
|
|
45
|
+
`domain`, and the three field labels (short/medium/long); optional
|
|
46
|
+
`header_text`. Domain must exist first (use `sap_create_domain`).
|
|
47
|
+
- **`sap_create_struct`** — Create a standalone DDIC structure
|
|
48
|
+
(`tabclass=INTTAB`) via `DDIF_TABL_PUT`. Same field-list contract
|
|
49
|
+
as `sap_create_table`, but without auto-MANDT and without a
|
|
50
|
+
database table being generated. Use for include structures, RFC
|
|
51
|
+
payload structs, etc.
|
|
52
|
+
- **`sap_create_append`** — Create an append structure
|
|
53
|
+
(`tabclass=APPEND`) attached to an existing parent table. Activates
|
|
54
|
+
both the append and the parent so the parent picks up the new
|
|
55
|
+
fields. Use to extend standard tables (e.g. SAP ICM
|
|
56
|
+
`YYYALL_A_CUST_COND` for custom condition technique fields).
|
|
57
|
+
|
|
58
|
+
Closes the long-standing gap that required falling back to
|
|
59
|
+
hand-crafted `DDIF_*_PUT` calls inside `sap_run_abap` snippets — which
|
|
60
|
+
suffered from `if_oo_adt_classrun~main` compile failures on complex
|
|
61
|
+
nested DDIC structures and from non-atomic partial-failure states
|
|
62
|
+
(e.g. data element activated against a non-existent domain).
|
|
63
|
+
|
|
64
|
+
Tool count: 19 → 23.
|
|
65
|
+
|
|
66
|
+
## 0.5.0 — 2026-05-22
|
|
67
|
+
|
|
68
|
+
### Added
|
|
69
|
+
- **`sap_create_tcode`** — Create or replace an ABAP transaction code
|
|
70
|
+
idempotently. Writes `TSTC` + `TSTCT` via a transient classrun.
|
|
71
|
+
Default `cinfo='80'` (report-execution bit); supports `dypno`,
|
|
72
|
+
`cinfo`, and `languages` parameters. Existing entries are deleted
|
|
73
|
+
first, so the call is safe to re-run.
|
|
74
|
+
- **`sap_insert_rows`** — Mass-insert rows into a DDIC table via an
|
|
75
|
+
internal table + `INSERT FROM TABLE`. Field names are
|
|
76
|
+
case-insensitive (lower-cased for ABAP), `MANDT` is auto-set to
|
|
77
|
+
`sy-mandt` when absent, booleans become `'X'`/`' '`, and an optional
|
|
78
|
+
`clear_where` clause deletes matching rows first for idempotent
|
|
79
|
+
re-seeding.
|
|
80
|
+
|
|
81
|
+
These two tools close the last MCP-side gaps that previously required
|
|
82
|
+
falling back to the separate Python helper library
|
|
83
|
+
(`adt_client.create_tcode` / `adt_client.insert_rows`). The Python
|
|
84
|
+
helpers remain useful for batch demo orchestration but are no longer
|
|
85
|
+
required for single-tool MCP calls.
|
|
86
|
+
|
|
87
|
+
Tool count: 17 → 19.
|
|
88
|
+
|
|
6
89
|
## 0.4.1 — 2026-05-22
|
|
7
90
|
|
|
8
91
|
### Documentation
|
package/README.md
CHANGED
|
@@ -20,20 +20,68 @@ and Claude Desktop on first run, so you don't need to maintain two configs.
|
|
|
20
20
|
|
|
21
21
|
## Features
|
|
22
22
|
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
|
30
|
-
|
|
|
31
|
-
| `
|
|
32
|
-
| `
|
|
33
|
-
| `
|
|
34
|
-
| `
|
|
35
|
-
| `
|
|
36
|
-
| `
|
|
23
|
+
**29 tools** covering the full ABAP development lifecycle: read, search,
|
|
24
|
+
deploy, DDIC primitives, framework helpers (OData publish, BP creation),
|
|
25
|
+
RAP, transactions, condition data.
|
|
26
|
+
|
|
27
|
+
### Read tools (7)
|
|
28
|
+
|
|
29
|
+
| Tool | What it does |
|
|
30
|
+
| ---------------------- | --------------------------------------------------------------- |
|
|
31
|
+
| `sap_ping` | Test the ADT connection. |
|
|
32
|
+
| `sap_sql` | Run an ABAP-SQL `SELECT` on any table. |
|
|
33
|
+
| `sap_table_info` | DDIC structure of a table. |
|
|
34
|
+
| `sap_read_object` | Read source of PROG / CLAS / INTF / FUGR / DDLS. |
|
|
35
|
+
| `sap_search_objects` | Repository search with type filter. |
|
|
36
|
+
| `sap_list_package` | List all objects in an ABAP package. |
|
|
37
|
+
| `sap_syntax_check` | Run the ADT syntax/semantic check. |
|
|
38
|
+
|
|
39
|
+
### Write tools — Core (5)
|
|
40
|
+
|
|
41
|
+
| Tool | What it does |
|
|
42
|
+
| ---------------------- | --------------------------------------------------------------- |
|
|
43
|
+
| `sap_deploy_program` | Create or update an ABAP report. Idempotent. |
|
|
44
|
+
| `sap_deploy_class` | Create or update an ABAP class. |
|
|
45
|
+
| `sap_activate` | Activate one object. |
|
|
46
|
+
| `sap_delete_object` | Delete an object. |
|
|
47
|
+
| `sap_run_abap` | Run an ABAP snippet via `if_oo_adt_classrun`. |
|
|
48
|
+
|
|
49
|
+
### Write tools — DDIC primitives (8)
|
|
50
|
+
|
|
51
|
+
| Tool | What it does |
|
|
52
|
+
| ---------------------- | --------------------------------------------------------------- |
|
|
53
|
+
| `sap_create_table` | DDIC transparent table. Auto-prepends MANDT. |
|
|
54
|
+
| `sap_create_struct` | Standalone DDIC structure (`tabclass=INTTAB`). |
|
|
55
|
+
| `sap_create_append` | Append structure attached to an existing parent table. |
|
|
56
|
+
| `sap_create_domain` | DDIC Domain with optional fixed values + intervals. |
|
|
57
|
+
| `sap_create_dtel` | DDIC Data Element referencing an existing domain. |
|
|
58
|
+
| `sap_create_shlp` | Elementary Search Help (selection method = table/view). |
|
|
59
|
+
| `sap_create_enqu` | Lock Object wrapping a primary table with key fields. |
|
|
60
|
+
| `sap_create_view` | Classic DDIC projection view (single base table). |
|
|
61
|
+
|
|
62
|
+
### Write tools — Framework helpers (4)
|
|
63
|
+
|
|
64
|
+
| Tool | What it does |
|
|
65
|
+
| ---------------------- | --------------------------------------------------------------- |
|
|
66
|
+
| `sap_create_msag` | Message Class (MSAG) with bulk message list. |
|
|
67
|
+
| `sap_create_bp` | Business Partner via `BAPI_BUPA_CREATE_FROM_DATA` + roles. |
|
|
68
|
+
| `sap_create_tcode` | Transaction code (TSTC/TSTCT). Idempotent. |
|
|
69
|
+
| `sap_publish_odata` | Register OData service in Gateway hub (`/IWFND/MAINT_SERVICE`). |
|
|
70
|
+
|
|
71
|
+
### Write tools — RAP (3)
|
|
72
|
+
|
|
73
|
+
| Tool | What it does |
|
|
74
|
+
| ---------------------- | --------------------------------------------------------------- |
|
|
75
|
+
| `sap_deploy_ddls` | CDS view (DDLS). |
|
|
76
|
+
| `sap_deploy_bdef` | Behavior Definition (BDEF) for RAP. |
|
|
77
|
+
| `sap_deploy_srvd` | Service Definition (SRVD). |
|
|
78
|
+
| `sap_deploy_srvb` | Service Binding (SRVB). |
|
|
79
|
+
|
|
80
|
+
### Write tools — Data (2)
|
|
81
|
+
|
|
82
|
+
| Tool | What it does |
|
|
83
|
+
| ---------------------- | --------------------------------------------------------------- |
|
|
84
|
+
| `sap_insert_rows` | Bulk-insert rows via internal table + `INSERT FROM TABLE`. |
|
|
37
85
|
|
|
38
86
|
Toggle **SAP ABAP: Toggle Read-Only Mode** to hide all write tools from
|
|
39
87
|
Copilot.
|
|
@@ -116,12 +164,12 @@ For GitHub Copilot Chat or Cursor running inside VS Code 1.99+.
|
|
|
116
164
|
|
|
117
165
|
```bash
|
|
118
166
|
curl -L -o /tmp/sap-abap-mcp.vsix \
|
|
119
|
-
https://github.com/Lomtech/sap-abap-
|
|
167
|
+
https://github.com/Lomtech/sap-abap-mcp/releases/latest/download/sap-abap-mcp.vsix
|
|
120
168
|
code --install-extension /tmp/sap-abap-mcp.vsix
|
|
121
169
|
```
|
|
122
170
|
|
|
123
171
|
Or manually from
|
|
124
|
-
[Releases](https://github.com/Lomtech/sap-abap-
|
|
172
|
+
[Releases](https://github.com/Lomtech/sap-abap-mcp/releases/latest):
|
|
125
173
|
download the `.vsix`, then in VS Code `Cmd+Shift+P` → **Extensions: Install
|
|
126
174
|
from VSIX...** → pick the file.
|
|
127
175
|
|
|
@@ -163,7 +211,7 @@ your machine (independent of any MCP client), run this from a directory
|
|
|
163
211
|
**other than this repo's source checkout** — see the warning below:
|
|
164
212
|
|
|
165
213
|
```bash
|
|
166
|
-
cd /tmp # any directory that is NOT the sap-abap-
|
|
214
|
+
cd /tmp # any directory that is NOT the sap-abap-mcp source repo
|
|
167
215
|
echo '{"jsonrpc":"2.0","id":1,"method":"initialize","params":{"protocolVersion":"2024-11-05","capabilities":{},"clientInfo":{"name":"t","version":"1"}}}' \
|
|
168
216
|
| SAP_HOST="https://sap.example.com:44300" SAP_CLIENT="800" \
|
|
169
217
|
SAP_USER="YOURUSER" SAP_PASSWORD="yourpassword" SAP_VERIFY_SSL=false \
|
|
@@ -288,8 +336,8 @@ subprocess. Sensitive values (`password`) live in OS keychain via
|
|
|
288
336
|
## Development
|
|
289
337
|
|
|
290
338
|
```bash
|
|
291
|
-
git clone https://github.com/Lomtech/sap-abap-
|
|
292
|
-
cd sap-abap-
|
|
339
|
+
git clone https://github.com/Lomtech/sap-abap-mcp.git
|
|
340
|
+
cd sap-abap-mcp
|
|
293
341
|
npm install
|
|
294
342
|
npm run typecheck # tsc -p . --noEmit
|
|
295
343
|
npm run compile # esbuild → out/extension.js + out/mcp-server.js
|