@mcp-abap-adt/core 6.11.2 → 6.11.3
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 +8 -0
- package/README.md +1 -1
- package/dist/handlers/include/readonly/handleGetInclude.d.ts +1 -1
- package/dist/handlers/include/readonly/handleGetInclude.js +1 -1
- package/dist/handlers/include/readonly/handleGetInclude.js.map +1 -1
- package/dist/handlers/program/readonly/handleReadProgram.d.ts +1 -1
- package/dist/handlers/program/readonly/handleReadProgram.js +1 -1
- package/dist/handlers/program/readonly/handleReadProgram.js.map +1 -1
- package/dist/lib/handlers/groups/ReadOnlyHandlersGroup.d.ts.map +1 -1
- package/dist/lib/handlers/groups/ReadOnlyHandlersGroup.js +0 -5
- package/dist/lib/handlers/groups/ReadOnlyHandlersGroup.js.map +1 -1
- package/docs/architecture/TOOLS_ARCHITECTURE.md +1 -2
- package/docs/development/roadmaps/HANDLER_BUILD_ERRORS_ROADMAP.md +2 -3
- package/docs/development/roadmaps/TEST_REFACTORING_ROADMAP.md +1 -4
- package/docs/user-guide/AVAILABLE_TOOLS.md +5 -18
- package/docs/user-guide/AVAILABLE_TOOLS_COMPACT.md +1 -1
- package/docs/user-guide/AVAILABLE_TOOLS_HIGH.md +1 -1
- package/docs/user-guide/AVAILABLE_TOOLS_LEGACY.md +5 -20
- package/docs/user-guide/AVAILABLE_TOOLS_LOW.md +1 -1
- package/docs/user-guide/AVAILABLE_TOOLS_READONLY.md +4 -17
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -2,6 +2,14 @@
|
|
|
2
2
|
|
|
3
3
|
## [Unreleased]
|
|
4
4
|
|
|
5
|
+
## [6.11.3] - 2026-05-30
|
|
6
|
+
|
|
7
|
+
### Removed
|
|
8
|
+
- **`GetProgFullCode` removed as a redundant read path.** A program or function group with includes can already be read through one canonical path — `ReadProgram` / `ReadFunctionGroup` (main) → `GetIncludesList` → `GetInclude` per include — and an explicit `GetInclude` is required anyway (includes can live outside any single object's tree). Two overlapping strategies made LLM and RAG-based tool selection non-deterministic. The piecemeal path covers function groups as well (`GetIncludesList` accepts `FUGR`), so no capability is lost. (#100)
|
|
9
|
+
|
|
10
|
+
### Changed
|
|
11
|
+
- **Sharpened source-read tool descriptions for clearer LLM / semantic tool selection.** `ReadProgram` now reads as "Read a MAIN ABAP program … NOT for includes — use `GetInclude`" (dropping the misleading "Create, Update" lead-in on a read-only tool), and `GetInclude` now reads as "Read ANY single ABAP include source by name, from anywhere in the repository … the correct tool for include names (PROG/I)". `GetIncludesList` is unchanged. (#100)
|
|
12
|
+
|
|
5
13
|
## [6.11.2] - 2026-05-29
|
|
6
14
|
|
|
7
15
|
### Fixed
|
package/README.md
CHANGED
|
@@ -134,7 +134,7 @@ See [Handlers Management → EmbeddableMcpServer dedup strategies](docs/user-gui
|
|
|
134
134
|
Key examples of high-value workflows and tools:
|
|
135
135
|
|
|
136
136
|
- **Repository and impact analysis**: `GetWhereUsed`, `DescribeByList`, `GetObjectStructure`, `GetObjectInfo`, `SearchObject`, `GetPackageTree`, `GetPackageContents`
|
|
137
|
-
- **Code and semantic introspection**: `GetAbapAST`, `GetAbapSemanticAnalysis`, `GetIncludesList
|
|
137
|
+
- **Code and semantic introspection**: `GetAbapAST`, `GetAbapSemanticAnalysis`, `GetIncludesList`
|
|
138
138
|
- **RAP development**: `CreateBehaviorDefinition`, `UpdateBehaviorDefinition`, `CreateBehaviorImplementation`, `UpdateBehaviorImplementation`, `CreateServiceDefinition`, `UpdateServiceDefinition`, `CreateMetadataExtension`, `UpdateMetadataExtension`
|
|
139
139
|
- **CDS/View development**: `CreateView`, `UpdateView`, `GetView`, `DeleteView`
|
|
140
140
|
- **ABAP OO CRUD**: `CreateClass`, `UpdateClass`, `GetClass`, `DeleteClass`, `CreateInterface`, `UpdateInterface`, `GetInterface`, `DeleteInterface`
|
|
@@ -3,7 +3,7 @@ import type { HandlerContext } from '../../../lib/handlers/interfaces';
|
|
|
3
3
|
export declare const TOOL_DEFINITION: {
|
|
4
4
|
readonly name: "GetInclude";
|
|
5
5
|
readonly available_in: readonly ["onprem", "cloud", "legacy"];
|
|
6
|
-
readonly description: "[read-only]
|
|
6
|
+
readonly description: "[read-only] Read ANY single ABAP include source by name, from anywhere in the repository (an include may live outside any single program tree). This is the correct tool for include names (PROG/I) — ReadProgram does not read includes.";
|
|
7
7
|
readonly inputSchema: {
|
|
8
8
|
readonly include_name: z.ZodString;
|
|
9
9
|
};
|
|
@@ -44,7 +44,7 @@ const utils_1 = require("../../../lib/utils");
|
|
|
44
44
|
exports.TOOL_DEFINITION = {
|
|
45
45
|
name: 'GetInclude',
|
|
46
46
|
available_in: ['onprem', 'cloud', 'legacy'],
|
|
47
|
-
description: '[read-only]
|
|
47
|
+
description: '[read-only] Read ANY single ABAP include source by name, from anywhere in the repository (an include may live outside any single program tree). This is the correct tool for include names (PROG/I) — ReadProgram does not read includes.',
|
|
48
48
|
inputSchema: {
|
|
49
49
|
include_name: z.string().describe('Name of the ABAP Include'),
|
|
50
50
|
},
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"handleGetInclude.js","sourceRoot":"","sources":["../../../../src/handlers/include/readonly/handleGetInclude.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAwBA,4CAuCC;AA/DD,uCAAyB;AAEzB,8CAK4B;AAE5B,yCAAyC;AACzC,0FAA0F;AAC1F,8CAA8C;AAC9C,6DAA6D;AAEhD,QAAA,eAAe,GAAG;IAC7B,IAAI,EAAE,YAAY;IAClB,YAAY,EAAE,CAAC,QAAQ,EAAE,OAAO,EAAE,QAAQ,CAAU;IACpD,WAAW,EACT,
|
|
1
|
+
{"version":3,"file":"handleGetInclude.js","sourceRoot":"","sources":["../../../../src/handlers/include/readonly/handleGetInclude.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAwBA,4CAuCC;AA/DD,uCAAyB;AAEzB,8CAK4B;AAE5B,yCAAyC;AACzC,0FAA0F;AAC1F,8CAA8C;AAC9C,6DAA6D;AAEhD,QAAA,eAAe,GAAG;IAC7B,IAAI,EAAE,YAAY;IAClB,YAAY,EAAE,CAAC,QAAQ,EAAE,OAAO,EAAE,QAAQ,CAAU;IACpD,WAAW,EACT,2OAA2O;IAC7O,WAAW,EAAE;QACX,YAAY,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,0BAA0B,CAAC;KAC9D;CACO,CAAC;AAEJ,KAAK,UAAU,gBAAgB,CAAC,OAAuB,EAAE,IAAS;IACvE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC;IACvC,IAAI,CAAC;QACH,IAAI,CAAC,IAAI,EAAE,YAAY,EAAE,CAAC;YACxB,MAAM,IAAI,gBAAQ,CAAC,iBAAS,CAAC,aAAa,EAAE,0BAA0B,CAAC,CAAC;QAC1E,CAAC;QACD,MAAM,GAAG,GAAG,iCAAiC,IAAA,2BAAmB,EAAC,IAAI,CAAC,YAAY,CAAC,cAAc,CAAC;QAClG,MAAM,EAAE,IAAI,CAAC,qBAAqB,IAAI,CAAC,YAAY,EAAE,CAAC,CAAC;QACvD,MAAM,QAAQ,GAAG,MAAM,IAAA,iCAAyB,EAC9C,UAAU,EACV,GAAG,EACH,KAAK,EACL,SAAS,CACV,CAAC;QACF,MAAM,SAAS,GAAG,QAAQ,CAAC,IAAI,CAAC;QAChC,MAAM,EAAE,IAAI,CAAC,2BAA2B,IAAI,CAAC,YAAY,EAAE,CAAC,CAAC;QAC7D,OAAO;YACL,OAAO,EAAE,KAAK;YACd,OAAO,EAAE;gBACP;oBACE,IAAI,EAAE,MAAM;oBACZ,IAAI,EAAE,SAAS;iBAChB;aACF;SACF,CAAC;IACJ,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,EAAE,KAAK,CACX,yBAAyB,IAAI,EAAE,YAAY,IAAI,EAAE,KAAK,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAC/G,CAAC;QACF,OAAO;YACL,OAAO,EAAE,IAAI;YACb,OAAO,EAAE;gBACP;oBACE,IAAI,EAAE,MAAM;oBACZ,IAAI,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC;iBAC7D;aACF;SACF,CAAC;IACJ,CAAC;AACH,CAAC"}
|
|
@@ -2,7 +2,7 @@ import type { HandlerContext } from '../../../lib/handlers/interfaces';
|
|
|
2
2
|
export declare const TOOL_DEFINITION: {
|
|
3
3
|
readonly name: "ReadProgram";
|
|
4
4
|
readonly available_in: readonly ["onprem", "legacy"];
|
|
5
|
-
readonly description: "
|
|
5
|
+
readonly description: "[read-only] Read a MAIN ABAP program (report) source code and metadata by name. Works ONLY for main programs (adtcore type PROG/P); NOT for includes — use GetInclude for include source. Include names (PROG/I) and other object types are rejected with error \"invalid_object_type\". Answers: \"show program code\", \"display report source\", \"view program X\", \"get program source\". Returns source code, package, responsible, description.";
|
|
6
6
|
readonly inputSchema: {
|
|
7
7
|
readonly type: "object";
|
|
8
8
|
readonly properties: {
|
|
@@ -7,7 +7,7 @@ const utils_1 = require("../../../lib/utils");
|
|
|
7
7
|
exports.TOOL_DEFINITION = {
|
|
8
8
|
name: 'ReadProgram',
|
|
9
9
|
available_in: ['onprem', 'legacy'],
|
|
10
|
-
description: '
|
|
10
|
+
description: '[read-only] Read a MAIN ABAP program (report) source code and metadata by name. Works ONLY for main programs (adtcore type PROG/P); NOT for includes — use GetInclude for include source. Include names (PROG/I) and other object types are rejected with error "invalid_object_type". Answers: "show program code", "display report source", "view program X", "get program source". Returns source code, package, responsible, description.',
|
|
11
11
|
inputSchema: {
|
|
12
12
|
type: 'object',
|
|
13
13
|
properties: {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"handleReadProgram.js","sourceRoot":"","sources":["../../../../src/handlers/program/readonly/handleReadProgram.ts"],"names":[],"mappings":";;;AA+BA,8CA4FC;AA3HD,kDAAuD;AAEvD,8CAI4B;AAEf,QAAA,eAAe,GAAG;IAC7B,IAAI,EAAE,aAAa;IACnB,YAAY,EAAE,CAAC,QAAQ,EAAE,QAAQ,CAAU;IAC3C,WAAW,EACT
|
|
1
|
+
{"version":3,"file":"handleReadProgram.js","sourceRoot":"","sources":["../../../../src/handlers/program/readonly/handleReadProgram.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ReadOnlyHandlersGroup.d.ts","sourceRoot":"","sources":["../../../../src/lib/handlers/groups/ReadOnlyHandlersGroup.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"ReadOnlyHandlersGroup.d.ts","sourceRoot":"","sources":["../../../../src/lib/handlers/groups/ReadOnlyHandlersGroup.ts"],"names":[],"mappings":"AAoGA,OAAO,EAAE,gBAAgB,EAAE,MAAM,6BAA6B,CAAC;AAC/D,OAAO,KAAK,EAAE,cAAc,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AACrE,OAAO,EACL,KAAK,sBAAsB,EAE5B,MAAM,uBAAuB,CAAC;AAE/B;;;;;;;;;GASG;AACH,qBAAa,qBAAsB,SAAQ,gBAAgB;IACzD,SAAS,CAAC,SAAS,SAAsB;IACzC,OAAO,CAAC,QAAQ,CAAC,mBAAmB,CAAsB;IAC1D,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAyB;gBAGrD,OAAO,EAAE,cAAc,EACvB,mBAAmB,GAAE,WAAW,CAAC,MAAM,CAAa,EACpD,aAAa,GAAE,sBAA8C;IAO/D;;OAEG;IACH,WAAW,IAAI,YAAY,EAAE;IAM7B,OAAO,CAAC,aAAa;CA4GtB"}
|
|
@@ -17,7 +17,6 @@ const handleReadInterface_1 = require("../../../handlers/interface/readonly/hand
|
|
|
17
17
|
const handleReadMetadataExtension_1 = require("../../../handlers/metadata_extension/readonly/handleReadMetadataExtension");
|
|
18
18
|
const handleGetPackageContents_1 = require("../../../handlers/package/readonly/handleGetPackageContents");
|
|
19
19
|
const handleReadPackage_1 = require("../../../handlers/package/readonly/handleReadPackage");
|
|
20
|
-
const handleGetProgFullCode_1 = require("../../../handlers/program/readonly/handleGetProgFullCode");
|
|
21
20
|
const handleReadProgram_1 = require("../../../handlers/program/readonly/handleReadProgram");
|
|
22
21
|
const handleReadServiceBinding_1 = require("../../../handlers/service_binding/readonly/handleReadServiceBinding");
|
|
23
22
|
const handleReadServiceDefinition_1 = require("../../../handlers/service_definition/readonly/handleReadServiceDefinition");
|
|
@@ -93,10 +92,6 @@ class ReadOnlyHandlersGroup extends BaseHandlerGroup_js_1.BaseHandlerGroup {
|
|
|
93
92
|
toolDefinition: handleListTransports_1.TOOL_DEFINITION,
|
|
94
93
|
handler: (args) => (0, handleListTransports_1.handleListTransports)(this.context, args),
|
|
95
94
|
},
|
|
96
|
-
{
|
|
97
|
-
toolDefinition: handleGetProgFullCode_1.TOOL_DEFINITION,
|
|
98
|
-
handler: (args) => (0, handleGetProgFullCode_1.handleGetProgFullCode)(this.context, args),
|
|
99
|
-
},
|
|
100
95
|
// Read object source + metadata handlers
|
|
101
96
|
{
|
|
102
97
|
toolDefinition: handleReadClass_1.TOOL_DEFINITION,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ReadOnlyHandlersGroup.js","sourceRoot":"","sources":["../../../../src/lib/handlers/groups/ReadOnlyHandlersGroup.ts"],"names":[],"mappings":";;;AAAA,8HAGqF;AACrF,0IAG6F;AAC7F,sFAG0D;AAC1D,yGAGuE;AACvE,yFAG4D;AAC5D,8GAGyE;AACzE,8GAGyE;AACzE,wGAGsE;AACtE,+GAG2E;AAC3E,kHAG6E;AAC7E,0FAG6D;AAC7D,oGAGkE;AAClE,kGAGkE;AAClE,2HAGmF;AACnF,0GAGqE;AACrE,4FAG8D;AAC9D,
|
|
1
|
+
{"version":3,"file":"ReadOnlyHandlersGroup.js","sourceRoot":"","sources":["../../../../src/lib/handlers/groups/ReadOnlyHandlersGroup.ts"],"names":[],"mappings":"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"}
|
|
@@ -145,7 +145,6 @@ import { TOOL_DEFINITION as GetClass_Tool } from '../handlers/class/handleGetCla
|
|
|
145
145
|
const DYNAMIC_IMPORT_TOOLS: ToolDefinition[] = [
|
|
146
146
|
GetObjectsByType_Tool,
|
|
147
147
|
GetObjectsList_Tool,
|
|
148
|
-
GetProgFullCode_Tool,
|
|
149
148
|
GetObjectNodeFromCache_Tool,
|
|
150
149
|
DescribeByList_Tool
|
|
151
150
|
];
|
|
@@ -206,7 +205,7 @@ this.server.setRequestHandler(CallToolRequestSchema, async (request) => {
|
|
|
206
205
|
```
|
|
207
206
|
|
|
208
207
|
**Note:** Most handlers are statically imported, but some use dynamic imports to avoid circular dependencies or improve startup performance:
|
|
209
|
-
- `GetObjectsList`, `GetObjectsByType`, `
|
|
208
|
+
- `GetObjectsList`, `GetObjectsByType`, `GetObjectNodeFromCache`, `DescribeByList` (marked in `DYNAMIC_IMPORT_TOOLS`)
|
|
210
209
|
- `GetAdtTypes`, `GetObjectStructure` (also use dynamic import but are in main `ALL_TOOLS` array)
|
|
211
210
|
|
|
212
211
|
## Benefits
|
|
@@ -86,7 +86,7 @@ In `mcp_handlers.ts` lines 784-802, dynamic imports call handlers with only 1 ar
|
|
|
86
86
|
return await handleXxx(args); // Missing connection argument
|
|
87
87
|
```
|
|
88
88
|
|
|
89
|
-
## Affected Files (
|
|
89
|
+
## Affected Files (72 total)
|
|
90
90
|
|
|
91
91
|
### behavior_definition/low/ (3 files)
|
|
92
92
|
- `handleLockBehaviorDefinition.ts`
|
|
@@ -147,14 +147,13 @@ return await handleXxx(args); // Missing connection argument
|
|
|
147
147
|
- `handleUnlockPackage.ts`
|
|
148
148
|
- `handleValidatePackage.ts`
|
|
149
149
|
|
|
150
|
-
### program/ (
|
|
150
|
+
### program/ (6 files)
|
|
151
151
|
- `low/handleActivateProgram.ts`
|
|
152
152
|
- `low/handleCreateProgram.ts`
|
|
153
153
|
- `low/handleDeleteProgram.ts`
|
|
154
154
|
- `low/handleUnlockProgram.ts`
|
|
155
155
|
- `low/handleUpdateProgram.ts`
|
|
156
156
|
- `low/handleValidateProgram.ts`
|
|
157
|
-
- `readonly/handleGetProgFullCode.ts`
|
|
158
157
|
|
|
159
158
|
### structure/ (8 files)
|
|
160
159
|
- `high/handleCreateStructure.ts`
|
|
@@ -233,7 +233,6 @@ interface HandlerContext {
|
|
|
233
233
|
- [x] `handleGetFunction`
|
|
234
234
|
- [x] `handleGetFunctionGroup`
|
|
235
235
|
- [x] `handleGetObjectInfo`
|
|
236
|
-
- [x] `handleGetProgFullCode`
|
|
237
236
|
- [x] `handleGetServiceDefinition`
|
|
238
237
|
- [x] `handleGetTransport`
|
|
239
238
|
- [x] `handleGetAbapSystemSymbols`
|
|
@@ -415,7 +414,6 @@ describe('Class High-Level Handlers Integration', () => {
|
|
|
415
414
|
- Search: `handleSearchObject`, `handleGetObjectsList`, `handleGetObjectsByType`
|
|
416
415
|
- Transport: `handleGetTransport`
|
|
417
416
|
- Include: `handleGetIncludesList`, `handleGetInclude`
|
|
418
|
-
- Program: `handleGetProgFullCode`
|
|
419
417
|
- ServiceDefinition: `handleGetServiceDefinition`
|
|
420
418
|
- **BehaviorDefinition Handlers (7/7)** ✅:
|
|
421
419
|
- High-level: `handleCreateBehaviorDefinition`
|
|
@@ -432,10 +430,9 @@ describe('Class High-Level Handlers Integration', () => {
|
|
|
432
430
|
- **Interface Handlers (10/10)** ✅:
|
|
433
431
|
- High-level: `handleCreateInterface`, `handleUpdateInterface`
|
|
434
432
|
- Low-level: `handleCreateInterface`, `handleUpdateInterface`, `handleDeleteInterface`, `handleLockInterface`, `handleUnlockInterface`, `handleActivateInterface`, `handleCheckInterface`, `handleValidateInterface`
|
|
435
|
-
- **Program Handlers (
|
|
433
|
+
- **Program Handlers (10/10)** ✅:
|
|
436
434
|
- High-level: `handleCreateProgram`, `handleUpdateProgram`
|
|
437
435
|
- Low-level: `handleCreateProgram`, `handleUpdateProgram`, `handleDeleteProgram`, `handleLockProgram`, `handleUnlockProgram`, `handleActivateProgram`, `handleCheckProgram`, `handleValidateProgram`
|
|
438
|
-
- Read-only: `handleGetProgFullCode`
|
|
439
436
|
- **Structure Handlers (10/10)** ✅:
|
|
440
437
|
- High-level: `handleCreateStructure`, `handleUpdateStructure`
|
|
441
438
|
- Low-level: `handleCreateStructure`, `handleUpdateStructure`, `handleDeleteStructure`, `handleLockStructure`, `handleUnlockStructure`, `handleActivateStructure`, `handleCheckStructure`, `handleValidateStructure`
|
|
@@ -4,8 +4,8 @@ Generated from code in `src/handlers/**` (not from docs).
|
|
|
4
4
|
|
|
5
5
|
## Summary
|
|
6
6
|
|
|
7
|
-
- Total tools:
|
|
8
|
-
- Read-only tools:
|
|
7
|
+
- Total tools: 306
|
|
8
|
+
- Read-only tools: 55
|
|
9
9
|
- High-level tools: 127
|
|
10
10
|
- Low-level tools: 124
|
|
11
11
|
|
|
@@ -51,7 +51,6 @@ Generated from code in `src/handlers/**` (not from docs).
|
|
|
51
51
|
- [GetPackageContents](#getpackagecontents-read-only-package)
|
|
52
52
|
- [ReadPackage](#readpackage-read-only-package)
|
|
53
53
|
- [Program](#read-only-program)
|
|
54
|
-
- [GetProgFullCode](#getprogfullcode-read-only-program)
|
|
55
54
|
- [ReadProgram](#readprogram-read-only-program)
|
|
56
55
|
- [Search](#read-only-search)
|
|
57
56
|
- [GetObjectsByType](#getobjectsbytype-read-only-search)
|
|
@@ -548,7 +547,7 @@ Generated from code in `src/handlers/**` (not from docs).
|
|
|
548
547
|
|
|
549
548
|
<a id="getinclude-read-only-include"></a>
|
|
550
549
|
#### GetInclude (Read-Only / Include)
|
|
551
|
-
**Description:** [read-only]
|
|
550
|
+
**Description:** [read-only] Read ANY single ABAP include source by name, from anywhere in the repository (an include may live outside any single program tree). This is the correct tool for include names (PROG/I) — ReadProgram does not read includes.
|
|
552
551
|
|
|
553
552
|
**Source:** `src/handlers/include/readonly/handleGetInclude.ts`
|
|
554
553
|
|
|
@@ -630,21 +629,9 @@ Generated from code in `src/handlers/**` (not from docs).
|
|
|
630
629
|
<a id="read-only-program"></a>
|
|
631
630
|
### Read-Only / Program
|
|
632
631
|
|
|
633
|
-
<a id="getprogfullcode-read-only-program"></a>
|
|
634
|
-
#### GetProgFullCode (Read-Only / Program)
|
|
635
|
-
**Description:** [read-only] Returns the full code for a program or function group, including all includes, in tree traversal order.
|
|
636
|
-
|
|
637
|
-
**Source:** `src/handlers/program/readonly/handleGetProgFullCode.ts`
|
|
638
|
-
|
|
639
|
-
**Parameters:**
|
|
640
|
-
- `name` (string, required) - [read-only] Technical name of the program or function group (e.g., '/CBY/MM_INVENTORY')
|
|
641
|
-
- `type` (string, required) - [read-only] 'PROG/P' for program or 'FUGR' for function group
|
|
642
|
-
|
|
643
|
-
---
|
|
644
|
-
|
|
645
632
|
<a id="readprogram-read-only-program"></a>
|
|
646
633
|
#### ReadProgram (Read-Only / Program)
|
|
647
|
-
**Description:**
|
|
634
|
+
**Description:** [read-only] Read a MAIN ABAP program (report) source code and metadata by name. Works ONLY for main programs (adtcore type PROG/P); NOT for includes — use GetInclude for include source. Include names (PROG/I) and other object types are rejected with error "invalid_object_type". Answers: "show program code", "display report source", "view program X", "get program source". Returns source code, package, responsible, description.
|
|
648
635
|
|
|
649
636
|
**Source:** `src/handlers/program/readonly/handleReadProgram.ts`
|
|
650
637
|
|
|
@@ -4948,4 +4935,4 @@ Generated from code in `src/handlers/**` (not from docs).
|
|
|
4948
4935
|
|
|
4949
4936
|
---
|
|
4950
4937
|
|
|
4951
|
-
*Last updated: 2026-05-
|
|
4938
|
+
*Last updated: 2026-05-30*
|
|
@@ -5,8 +5,8 @@ Generated from code in `src/handlers/**` (not from docs).
|
|
|
5
5
|
Tools available on legacy SAP systems (BASIS < 7.50).
|
|
6
6
|
Legacy systems support a subset of tools — primarily Class, Interface, View, Program, Function Group/Module, Package (read/update/delete), Include, Unit Test, and common utilities.
|
|
7
7
|
|
|
8
|
-
- Total tools:
|
|
9
|
-
- Read-Only:
|
|
8
|
+
- Total tools: 134
|
|
9
|
+
- Read-Only: 11
|
|
10
10
|
- High-Level: 62
|
|
11
11
|
- Low-Level: 61
|
|
12
12
|
|
|
@@ -28,7 +28,6 @@ Legacy systems support a subset of tools — primarily Class, Interface, View, P
|
|
|
28
28
|
- [GetPackageContents](#getpackagecontents-read-only-package)
|
|
29
29
|
- [ReadPackage](#readpackage-read-only-package)
|
|
30
30
|
- [Program](#read-only-program)
|
|
31
|
-
- [GetProgFullCode](#getprogfullcode-read-only-program)
|
|
32
31
|
- [ReadProgram](#readprogram-read-only-program)
|
|
33
32
|
- [System](#read-only-system)
|
|
34
33
|
- [SearchSource](#searchsource-read-only-system)
|
|
@@ -240,7 +239,7 @@ Legacy systems support a subset of tools — primarily Class, Interface, View, P
|
|
|
240
239
|
|
|
241
240
|
<a id="getinclude-read-only-include"></a>
|
|
242
241
|
#### GetInclude (Read-Only / Include)
|
|
243
|
-
**Description:** [read-only]
|
|
242
|
+
**Description:** [read-only] Read ANY single ABAP include source by name, from anywhere in the repository (an include may live outside any single program tree). This is the correct tool for include names (PROG/I) — ReadProgram does not read includes.
|
|
244
243
|
|
|
245
244
|
**Source:** `src/handlers/include/readonly/handleGetInclude.ts`
|
|
246
245
|
|
|
@@ -317,23 +316,9 @@ Legacy systems support a subset of tools — primarily Class, Interface, View, P
|
|
|
317
316
|
<a id="read-only-program"></a>
|
|
318
317
|
### Read-Only / Program
|
|
319
318
|
|
|
320
|
-
<a id="getprogfullcode-read-only-program"></a>
|
|
321
|
-
#### GetProgFullCode (Read-Only / Program)
|
|
322
|
-
**Description:** [read-only] Returns the full code for a program or function group, including all includes, in tree traversal order.
|
|
323
|
-
|
|
324
|
-
**Source:** `src/handlers/program/readonly/handleGetProgFullCode.ts`
|
|
325
|
-
|
|
326
|
-
**Available in:** `onprem`, `legacy`
|
|
327
|
-
|
|
328
|
-
**Parameters:**
|
|
329
|
-
- `name` (string, required) - [read-only] Technical name of the program or function group (e.g., '/CBY/MM_INVENTORY')
|
|
330
|
-
- `type` (string, required) - [read-only] 'PROG/P' for program or 'FUGR' for function group
|
|
331
|
-
|
|
332
|
-
---
|
|
333
|
-
|
|
334
319
|
<a id="readprogram-read-only-program"></a>
|
|
335
320
|
#### ReadProgram (Read-Only / Program)
|
|
336
|
-
**Description:**
|
|
321
|
+
**Description:** [read-only] Read a MAIN ABAP program (report) source code and metadata by name. Works ONLY for main programs (adtcore type PROG/P); NOT for includes — use GetInclude for include source. Include names (PROG/I) and other object types are rejected with error "invalid_object_type". Answers: "show program code", "display report source", "view program X", "get program source". Returns source code, package, responsible, description.
|
|
337
322
|
|
|
338
323
|
**Source:** `src/handlers/program/readonly/handleReadProgram.ts`
|
|
339
324
|
|
|
@@ -2410,4 +2395,4 @@ Legacy systems support a subset of tools — primarily Class, Interface, View, P
|
|
|
2410
2395
|
|
|
2411
2396
|
---
|
|
2412
2397
|
|
|
2413
|
-
*Last updated: 2026-05-
|
|
2398
|
+
*Last updated: 2026-05-30*
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
Generated from code in `src/handlers/**` (not from docs).
|
|
4
4
|
|
|
5
5
|
- Level: Read-Only
|
|
6
|
-
- Total tools:
|
|
6
|
+
- Total tools: 55
|
|
7
7
|
|
|
8
8
|
## Navigation
|
|
9
9
|
|
|
@@ -37,7 +37,6 @@ Generated from code in `src/handlers/**` (not from docs).
|
|
|
37
37
|
- [GetPackageContents](#getpackagecontents-read-only-package)
|
|
38
38
|
- [ReadPackage](#readpackage-read-only-package)
|
|
39
39
|
- [Program](#read-only-program)
|
|
40
|
-
- [GetProgFullCode](#getprogfullcode-read-only-program)
|
|
41
40
|
- [ReadProgram](#readprogram-read-only-program)
|
|
42
41
|
- [Search](#read-only-search)
|
|
43
42
|
- [GetObjectsByType](#getobjectsbytype-read-only-search)
|
|
@@ -240,7 +239,7 @@ Generated from code in `src/handlers/**` (not from docs).
|
|
|
240
239
|
|
|
241
240
|
<a id="getinclude-read-only-include"></a>
|
|
242
241
|
#### GetInclude (Read-Only / Include)
|
|
243
|
-
**Description:** [read-only]
|
|
242
|
+
**Description:** [read-only] Read ANY single ABAP include source by name, from anywhere in the repository (an include may live outside any single program tree). This is the correct tool for include names (PROG/I) — ReadProgram does not read includes.
|
|
244
243
|
|
|
245
244
|
**Source:** `src/handlers/include/readonly/handleGetInclude.ts`
|
|
246
245
|
|
|
@@ -322,21 +321,9 @@ Generated from code in `src/handlers/**` (not from docs).
|
|
|
322
321
|
<a id="read-only-program"></a>
|
|
323
322
|
### Read-Only / Program
|
|
324
323
|
|
|
325
|
-
<a id="getprogfullcode-read-only-program"></a>
|
|
326
|
-
#### GetProgFullCode (Read-Only / Program)
|
|
327
|
-
**Description:** [read-only] Returns the full code for a program or function group, including all includes, in tree traversal order.
|
|
328
|
-
|
|
329
|
-
**Source:** `src/handlers/program/readonly/handleGetProgFullCode.ts`
|
|
330
|
-
|
|
331
|
-
**Parameters:**
|
|
332
|
-
- `name` (string, required) - [read-only] Technical name of the program or function group (e.g., '/CBY/MM_INVENTORY')
|
|
333
|
-
- `type` (string, required) - [read-only] 'PROG/P' for program or 'FUGR' for function group
|
|
334
|
-
|
|
335
|
-
---
|
|
336
|
-
|
|
337
324
|
<a id="readprogram-read-only-program"></a>
|
|
338
325
|
#### ReadProgram (Read-Only / Program)
|
|
339
|
-
**Description:**
|
|
326
|
+
**Description:** [read-only] Read a MAIN ABAP program (report) source code and metadata by name. Works ONLY for main programs (adtcore type PROG/P); NOT for includes — use GetInclude for include source. Include names (PROG/I) and other object types are rejected with error "invalid_object_type". Answers: "show program code", "display report source", "view program X", "get program source". Returns source code, package, responsible, description.
|
|
340
327
|
|
|
341
328
|
**Source:** `src/handlers/program/readonly/handleReadProgram.ts`
|
|
342
329
|
|
|
@@ -913,4 +900,4 @@ Generated from code in `src/handlers/**` (not from docs).
|
|
|
913
900
|
|
|
914
901
|
---
|
|
915
902
|
|
|
916
|
-
*Last updated: 2026-05-
|
|
903
|
+
*Last updated: 2026-05-30*
|