abapgit-agent 1.1.6 → 1.3.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/.github/workflows/release.yml +3 -1
- package/API.md +261 -0
- package/CLAUDE.md +384 -0
- package/README.md +16 -2
- package/RELEASE_NOTES.md +93 -8
- package/abap/CLAUDE.md +282 -6
- package/abap/copilot-instructions.md +79 -0
- package/abap/zcl_abgagt_agent.clas.abap +2 -2
- package/abap/zcl_abgagt_cmd_factory.clas.abap +2 -0
- package/abap/zcl_abgagt_command_inspect.clas.abap +255 -36
- package/abap/zcl_abgagt_command_tree.clas.abap +237 -0
- package/abap/zcl_abgagt_command_tree.clas.xml +15 -0
- package/abap/zcl_abgagt_command_view.clas.abap +240 -0
- package/abap/zcl_abgagt_command_view.clas.xml +15 -0
- package/abap/zcl_abgagt_resource_tree.clas.abap +70 -0
- package/abap/zcl_abgagt_resource_tree.clas.xml +15 -0
- package/abap/zcl_abgagt_resource_view.clas.abap +68 -0
- package/abap/zcl_abgagt_resource_view.clas.xml +15 -0
- package/abap/zcl_abgagt_rest_handler.clas.abap +2 -0
- package/abap/zcl_abgagt_util.clas.abap +2 -2
- package/abap/zcl_abgagt_viewer_clas.clas.abap +58 -0
- package/abap/zcl_abgagt_viewer_clas.clas.xml +15 -0
- package/abap/zcl_abgagt_viewer_ddls.clas.abap +83 -0
- package/abap/zcl_abgagt_viewer_ddls.clas.xml +15 -0
- package/abap/zcl_abgagt_viewer_dtel.clas.abap +98 -0
- package/abap/zcl_abgagt_viewer_dtel.clas.xml +15 -0
- package/abap/zcl_abgagt_viewer_factory.clas.abap +41 -0
- package/abap/zcl_abgagt_viewer_factory.clas.xml +15 -0
- package/abap/zcl_abgagt_viewer_intf.clas.abap +58 -0
- package/abap/zcl_abgagt_viewer_intf.clas.xml +15 -0
- package/abap/zcl_abgagt_viewer_stru.clas.abap +59 -0
- package/abap/zcl_abgagt_viewer_stru.clas.xml +15 -0
- package/abap/zcl_abgagt_viewer_tabl.clas.abap +59 -0
- package/abap/zcl_abgagt_viewer_tabl.clas.xml +15 -0
- package/abap/zcl_abgagt_viewer_ttyp.clas.abap +93 -0
- package/abap/zcl_abgagt_viewer_ttyp.clas.xml +15 -0
- package/abap/zif_abgagt_command.intf.abap +3 -1
- package/abap/zif_abgagt_viewer.intf.abap +12 -0
- package/abap/zif_abgagt_viewer.intf.xml +15 -0
- package/bin/abapgit-agent +605 -38
- package/docs/commands.md +27 -8
- package/docs/tree-command.md +303 -0
- package/docs/view-command.md +501 -0
- package/package.json +1 -1
- package/src/abap-client.js +22 -0
- package/src/agent.js +27 -0
package/CLAUDE.md
CHANGED
|
@@ -38,6 +38,7 @@ ABAP REST Handler (ZCL_ABGAGT_REST_HANDLER)
|
|
|
38
38
|
Resource: ZCL_ABGAGT_RESOURCE_PULL → ZCL_ABGAGT_CMD_FACTORY → ZCL_ABGAGT_COMMAND_PULL → ZCL_ABGAGT_AGENT
|
|
39
39
|
Resource: ZCL_ABGAGT_RESOURCE_INSPECT → ZCL_ABGAGT_CMD_FACTORY → ZCL_ABGAGT_COMMAND_INSPECT → ZCL_ABGAGT_AGENT
|
|
40
40
|
Resource: ZCL_ABGAGT_RESOURCE_UNIT → ZCL_ABGAGT_CMD_FACTORY → ZCL_ABGAGT_COMMAND_UNIT → ZCL_ABGAGT_AGENT
|
|
41
|
+
Resource: ZCL_ABGAGT_RESOURCE_TREE → ZCL_ABGAGT_CMD_FACTORY → ZCL_ABGAGT_COMMAND_TREE → ZCL_ABGAGT_AGENT
|
|
41
42
|
```
|
|
42
43
|
|
|
43
44
|
### ABAP Objects
|
|
@@ -49,6 +50,7 @@ Resource: ZCL_ABGAGT_RESOURCE_UNIT → ZCL_ABGAGT_CMD_FACTORY → ZCL_ABGAGT_COM
|
|
|
49
50
|
| `ZCL_ABGAGT_COMMAND_PULL` | Pull command - implements ZIF_ABGAGT_COMMAND |
|
|
50
51
|
| `ZCL_ABGAGT_COMMAND_INSPECT` | Inspect command - implements ZIF_ABGAGT_COMMAND |
|
|
51
52
|
| `ZCL_ABGAGT_COMMAND_UNIT` | Unit command - implements ZIF_ABGAGT_COMMAND |
|
|
53
|
+
| `ZCL_ABGAGT_COMMAND_TREE` | Tree command - displays package hierarchy |
|
|
52
54
|
| `ZIF_ABGAGT_COMMAND` | Command interface with constants |
|
|
53
55
|
| `ZIF_ABGAGT_CMD_FACTORY` | Factory interface |
|
|
54
56
|
|
|
@@ -73,6 +75,14 @@ abapgit-agent inspect --files abap/zcl_my_class.clas.abap
|
|
|
73
75
|
# Run unit tests for ABAP test classes
|
|
74
76
|
abapgit-agent unit --files abap/zcl_my_test.clas.testclasses.abap
|
|
75
77
|
|
|
78
|
+
# Display package hierarchy tree
|
|
79
|
+
abapgit-agent tree --package $MY_PACKAGE
|
|
80
|
+
|
|
81
|
+
# View ABAP object definitions from ABAP system
|
|
82
|
+
abapgit-agent view --objects ZCL_MY_CLASS
|
|
83
|
+
abapgit-agent view --objects ZIF_MY_INTERFACE --type INTF
|
|
84
|
+
abapgit-agent view --objects ZCL_CLASS1,ZCL_CLASS2 --json
|
|
85
|
+
|
|
76
86
|
# Health check
|
|
77
87
|
abapgit-agent health
|
|
78
88
|
|
|
@@ -85,6 +95,22 @@ abapgit-agent status
|
|
|
85
95
|
### Description
|
|
86
96
|
Pull and activate ABAP objects from git repository.
|
|
87
97
|
|
|
98
|
+
### Rule: Pull All Changed Files Together
|
|
99
|
+
|
|
100
|
+
**CRITICAL**: When multiple ABAP files are changed, pull them ALL together in a single command:
|
|
101
|
+
|
|
102
|
+
```bash
|
|
103
|
+
# WRONG - Pull files one by one (may cause activation issues)
|
|
104
|
+
abapgit-agent pull --files zcl_class1.clas.abap
|
|
105
|
+
abapgit-agent pull --files zcl_class2.clas.abap
|
|
106
|
+
abapgit-agent pull --files zif_interface1.intf.abap
|
|
107
|
+
|
|
108
|
+
# CORRECT - Pull all changed files together
|
|
109
|
+
abapgit-agent pull --files zcl_class1.clas.abap,zcl_class2.clas.abap,zif_interface1.intf.abap
|
|
110
|
+
```
|
|
111
|
+
|
|
112
|
+
**Why?** ABAP objects often have dependencies on each other. Pulling separately can cause activation errors if dependent objects haven't been activated yet. Pulling together ensures the ABAP system processes all changes atomically.
|
|
113
|
+
|
|
88
114
|
### Usage
|
|
89
115
|
```bash
|
|
90
116
|
# Auto-detect git remote and branch from current directory
|
|
@@ -155,6 +181,75 @@ abapgit-agent health
|
|
|
155
181
|
}
|
|
156
182
|
```
|
|
157
183
|
|
|
184
|
+
## Inspect Command
|
|
185
|
+
|
|
186
|
+
### Description
|
|
187
|
+
Run syntax check for ABAP objects. Supports both regular ABAP objects (classes, interfaces, programs) and CDS views (DDLS).
|
|
188
|
+
|
|
189
|
+
### Usage
|
|
190
|
+
```bash
|
|
191
|
+
# Inspect single file
|
|
192
|
+
abapgit-agent inspect --files abap/zcl_my_class.clas.abap
|
|
193
|
+
|
|
194
|
+
# Inspect multiple files
|
|
195
|
+
abapgit-agent inspect --files abap/zcl_class1.clas.abap,abap/zcl_class2.clas.abap
|
|
196
|
+
|
|
197
|
+
# Inspect CDS view
|
|
198
|
+
abapgit-agent inspect --files abap/zc_my_view.ddls.asddls
|
|
199
|
+
|
|
200
|
+
# Inspect mixed file types (DDLS + CLAS)
|
|
201
|
+
abapgit-agent inspect --files abap/zc_my_view.ddls.asddls,abap/zcl_my_class.clas.abap
|
|
202
|
+
```
|
|
203
|
+
|
|
204
|
+
### Supported Object Types
|
|
205
|
+
|
|
206
|
+
| Type | Description | Validation Method |
|
|
207
|
+
|------|-------------|------------------|
|
|
208
|
+
| CLAS | Class | Code Inspector (SCI) |
|
|
209
|
+
| INTF | Interface | Code Inspector (SCI) |
|
|
210
|
+
| PROG | Program | Code Inspector (SCI) |
|
|
211
|
+
| FUGR | Function Group | Code Inspector (SCI) |
|
|
212
|
+
| DDLS | CDS View/Entity | DDL Handler (CL_DD_DDL_HANDLER_FACTORY) |
|
|
213
|
+
|
|
214
|
+
### Output
|
|
215
|
+
|
|
216
|
+
**Passed:**
|
|
217
|
+
```
|
|
218
|
+
✅ CLAS ZCL_MY_CLASS - Syntax check passed
|
|
219
|
+
```
|
|
220
|
+
|
|
221
|
+
**With Warnings:**
|
|
222
|
+
```
|
|
223
|
+
⚠️ DDLS ZC_MY_VIEW - Syntax check passed with warnings (4):
|
|
224
|
+
|
|
225
|
+
Warnings:
|
|
226
|
+
────────────────────────────────────────────────────────────
|
|
227
|
+
Line 9 : ParentPackage
|
|
228
|
+
Line 11 : SoftwareComponent
|
|
229
|
+
```
|
|
230
|
+
|
|
231
|
+
**Failed:**
|
|
232
|
+
```
|
|
233
|
+
❌ DDLS ZC_MY_VIEW - Syntax check failed (1 error(s)):
|
|
234
|
+
|
|
235
|
+
Errors:
|
|
236
|
+
────────────────────────────────────────────────────────────
|
|
237
|
+
Line 21, Column 12: Error message text
|
|
238
|
+
```
|
|
239
|
+
|
|
240
|
+
### Key Behaviors
|
|
241
|
+
|
|
242
|
+
1. **Multiple files in one request** - All files are sent in a single API call for better performance
|
|
243
|
+
2. **CDS View validation** - Uses `CL_DD_DDL_HANDLER_FACTORY` to validate CDS views
|
|
244
|
+
3. **Check inactive version first** - For CDS views, checks the inactive version first (`get_state = 'M'`), then falls back to active version
|
|
245
|
+
4. **Detailed error messages** - Uses `get_errors()` and `get_warnings()` methods from the exception to get detailed information
|
|
246
|
+
5. **Per-object results** - Returns results for each object individually
|
|
247
|
+
|
|
248
|
+
### File Format
|
|
249
|
+
Files are parsed to extract `(obj_type, obj_name)`:
|
|
250
|
+
- `zcl_my_class.clas.abap` → CLAS, ZCL_MY_CLASS
|
|
251
|
+
- `zc_my_view.ddls.asddls` → DDLS, ZC_MY_VIEW
|
|
252
|
+
|
|
158
253
|
## Unit Command
|
|
159
254
|
|
|
160
255
|
### Description
|
|
@@ -230,6 +325,260 @@ The unit command uses `CL_SUT_AUNIT_RUNNER` to execute AUnit tests:
|
|
|
230
325
|
- `tab_objects` - Get detailed results with nested structure:
|
|
231
326
|
- `TAB_TESTCLASSES` → `TAB_METHODS` → `STR_ERROR` → `STR_ERROR_CORE`
|
|
232
327
|
|
|
328
|
+
## Tree Command
|
|
329
|
+
|
|
330
|
+
### Description
|
|
331
|
+
Display the package hierarchy tree from an ABAP system, showing parent packages, sub-packages, and object counts.
|
|
332
|
+
|
|
333
|
+
### Usage
|
|
334
|
+
```bash
|
|
335
|
+
# Basic usage
|
|
336
|
+
abapgit-agent tree --package $MY_PACKAGE
|
|
337
|
+
|
|
338
|
+
# With object breakdown by type
|
|
339
|
+
abapgit-agent tree --package $MY_PACKAGE --include-objects
|
|
340
|
+
|
|
341
|
+
# Limit depth (default: 3, max: 10)
|
|
342
|
+
abapgit-agent tree --package $MY_PACKAGE --depth 2
|
|
343
|
+
|
|
344
|
+
# JSON output for scripting
|
|
345
|
+
abapgit-agent tree --package $MY_PACKAGE --json
|
|
346
|
+
```
|
|
347
|
+
|
|
348
|
+
### Parameters
|
|
349
|
+
|
|
350
|
+
| Parameter | Required | Description |
|
|
351
|
+
|-----------|----------|-------------|
|
|
352
|
+
| `--package` | Yes | ABAP package name (e.g., `$ZMY_PACKAGE`, `ZMY_PACKAGE`) |
|
|
353
|
+
| `--depth` | No | Maximum depth to traverse (default: 3, max: 10) |
|
|
354
|
+
| `--include-objects` | No | Include object counts breakdown by type |
|
|
355
|
+
| `--json` | No | Output raw JSON only (for scripting) |
|
|
356
|
+
|
|
357
|
+
### Output
|
|
358
|
+
|
|
359
|
+
**Human-readable with AI metadata:**
|
|
360
|
+
```
|
|
361
|
+
🌳 Package Tree: $ZMAIN_PACKAGE
|
|
362
|
+
|
|
363
|
+
📦 $ZMAIN_PACKAGE (Main Package)
|
|
364
|
+
├─ 📦 $ZMAIN_SUB1 (Sub Package 1)
|
|
365
|
+
│ ├─ 📦 $ZMAIN_SUB1_A (Sub Package 1A)
|
|
366
|
+
│ └─ 📦 $ZMAIN_SUB1_B (Sub Package 1B)
|
|
367
|
+
└─ 📦 $ZMAIN_SUB2 (Sub Package 2)
|
|
368
|
+
|
|
369
|
+
📊 Summary
|
|
370
|
+
PACKAGES: 4
|
|
371
|
+
OBJECTS: 127
|
|
372
|
+
|
|
373
|
+
<!-- AI_METADATA_START -->
|
|
374
|
+
{"package":"$ZMAIN_PACKAGE","parent":"$ZSAP_BASE","total_packages":4,"total_objects":127}
|
|
375
|
+
<!-- AI_METADATA_END -->
|
|
376
|
+
```
|
|
377
|
+
|
|
378
|
+
**With object breakdown:**
|
|
379
|
+
```
|
|
380
|
+
📊 Summary
|
|
381
|
+
PACKAGES: 4
|
|
382
|
+
OBJECTS: 127
|
|
383
|
+
TYPES: CLAS=10 INTF=2 PROG=11 FUGR=1 TABL=3
|
|
384
|
+
```
|
|
385
|
+
|
|
386
|
+
### JSON Output
|
|
387
|
+
```json
|
|
388
|
+
{
|
|
389
|
+
"SUCCESS": true,
|
|
390
|
+
"COMMAND": "TREE",
|
|
391
|
+
"PACKAGE": "$ZMAIN_PACKAGE",
|
|
392
|
+
"PARENT_PACKAGE": "$ZSAP_BASE",
|
|
393
|
+
"NODES": [
|
|
394
|
+
{
|
|
395
|
+
"PACKAGE": "$ZMAIN_PACKAGE",
|
|
396
|
+
"PARENT": "",
|
|
397
|
+
"DESCRIPTION": "$ZMAIN_PACKAGE",
|
|
398
|
+
"DEPTH": 0,
|
|
399
|
+
"OBJECT_COUNT": 11
|
|
400
|
+
}
|
|
401
|
+
],
|
|
402
|
+
"TOTAL_PACKAGES": 4,
|
|
403
|
+
"TOTAL_OBJECTS": 127,
|
|
404
|
+
"OBJECTS": [
|
|
405
|
+
{ "OBJECT": "CLAS", "COUNT": 10 },
|
|
406
|
+
{ "OBJECT": "INTF", "COUNT": 2 },
|
|
407
|
+
{ "OBJECT": "PROG", "COUNT": 11 },
|
|
408
|
+
{ "OBJECT": "FUGR", "COUNT": 1 },
|
|
409
|
+
{ "OBJECT": "TABL", "COUNT": 3 }
|
|
410
|
+
],
|
|
411
|
+
"ERROR": ""
|
|
412
|
+
}
|
|
413
|
+
```
|
|
414
|
+
|
|
415
|
+
### Error Handling
|
|
416
|
+
|
|
417
|
+
| Error | Message |
|
|
418
|
+
|-------|---------|
|
|
419
|
+
| Package not found | `Package <name> does not exist in the system` |
|
|
420
|
+
| Invalid package name | `Invalid package name: <name>` |
|
|
421
|
+
| Access denied | `Access denied to package information` |
|
|
422
|
+
| Depth too large | `Depth value too large (max: 10)` |
|
|
423
|
+
|
|
424
|
+
## View Command
|
|
425
|
+
|
|
426
|
+
### Description
|
|
427
|
+
View ABAP object definitions directly from the ABAP system without pulling from git. **This is the PRIMARY way to explore unfamiliar ABAP objects** - tables, structures, classes, interfaces, and data elements.
|
|
428
|
+
|
|
429
|
+
**When you encounter an unknown table or structure, use this command instead of guessing!**
|
|
430
|
+
|
|
431
|
+
### Explore Unknown Tables/Structures
|
|
432
|
+
|
|
433
|
+
```bash
|
|
434
|
+
# View table fields - see all columns, keys, and descriptions
|
|
435
|
+
abapgit-agent view --objects ZMY_TABLE --type TABL
|
|
436
|
+
|
|
437
|
+
# View structure components
|
|
438
|
+
abapgit-agent view --objects ZMY_STRUCT --type STRU
|
|
439
|
+
|
|
440
|
+
# View data element type information
|
|
441
|
+
abapgit-agent view --objects ZMY_DTEL --type DTEL
|
|
442
|
+
|
|
443
|
+
# View CDS view definition
|
|
444
|
+
abapgit-agent view --objects ZC_MY_CDS_VIEW --type DDLS
|
|
445
|
+
|
|
446
|
+
# View class interface and methods
|
|
447
|
+
abapgit-agent view --objects ZCL_UNKNOWN_CLASS
|
|
448
|
+
|
|
449
|
+
# View interface definition
|
|
450
|
+
abapgit-agent view --objects ZIF_UNKNOWN_INTERFACE
|
|
451
|
+
```
|
|
452
|
+
|
|
453
|
+
### When to Use View Command
|
|
454
|
+
|
|
455
|
+
AI assistant SHOULD call `view` command when:
|
|
456
|
+
|
|
457
|
+
- User asks to "check", "look up", or "explore" an unfamiliar object
|
|
458
|
+
- Working with a table/structure and you don't know the field names/types
|
|
459
|
+
- Calling a class/interface method and you don't know the parameters
|
|
460
|
+
- User provides an object name that may not exist in the git repository
|
|
461
|
+
- You need to verify an object exists before using it
|
|
462
|
+
|
|
463
|
+
**Example workflow:**
|
|
464
|
+
```
|
|
465
|
+
User: "Check if SFLIGHT table has a PRICE field"
|
|
466
|
+
|
|
467
|
+
Assistant: <calls `abapgit-agent view --objects SFLIGHT --type TABL`>
|
|
468
|
+
→ Shows table structure with all fields including PRICE
|
|
469
|
+
```
|
|
470
|
+
|
|
471
|
+
### Usage
|
|
472
|
+
```bash
|
|
473
|
+
# View single object (auto-detect type from TADIR)
|
|
474
|
+
abapgit-agent view --objects ZCL_MY_CLASS
|
|
475
|
+
abapgit-agent view --objects ZIF_MY_INTERFACE
|
|
476
|
+
|
|
477
|
+
# View with explicit type
|
|
478
|
+
abapgit-agent view --objects ZCL_MY_CLASS --type CLAS
|
|
479
|
+
abapgit-agent view --objects ZIF_MY_INT --type INTF
|
|
480
|
+
abapgit-agent view --objects ZMY_TABLE --type TABL
|
|
481
|
+
|
|
482
|
+
# View multiple objects
|
|
483
|
+
abapgit-agent view --objects ZCL_CLASS1,ZCL_CLASS2,ZIF_INTERFACE1
|
|
484
|
+
|
|
485
|
+
# JSON output (for scripting/AI processing)
|
|
486
|
+
abapgit-agent view --objects ZCL_MY_CLASS --json
|
|
487
|
+
```
|
|
488
|
+
|
|
489
|
+
### Parameters
|
|
490
|
+
|
|
491
|
+
| Parameter | Required | Description |
|
|
492
|
+
|-----------|----------|-------------|
|
|
493
|
+
| `--objects` | Yes | Comma-separated list of object names (e.g., `ZCL_MY_CLASS,ZIF_MY_INTERFACE`) |
|
|
494
|
+
| `--type` | No | Object type (CLAS, INTF, TABL, STRU, DTEL, TTYP, DDLS). Auto-detected from TADIR if not specified |
|
|
495
|
+
| `--json` | No | Output raw JSON only (for scripting) |
|
|
496
|
+
|
|
497
|
+
### Supported Object Types
|
|
498
|
+
|
|
499
|
+
| Type | Description |
|
|
500
|
+
|------|-------------|
|
|
501
|
+
| CLAS | Class |
|
|
502
|
+
| INTF | Interface |
|
|
503
|
+
| TABL | Table |
|
|
504
|
+
| STRU | Structure |
|
|
505
|
+
| DTEL | Data Element |
|
|
506
|
+
| TTYP | Table Type |
|
|
507
|
+
| DDLS | CDS View/Entity |
|
|
508
|
+
|
|
509
|
+
**Note:** Object type is automatically detected from TADIR. Use `--type` only when you know the type and want to override auto-detection.
|
|
510
|
+
|
|
511
|
+
### Output
|
|
512
|
+
|
|
513
|
+
**Human-readable:**
|
|
514
|
+
```
|
|
515
|
+
📖 ZCL_MY_CLASS (Class)
|
|
516
|
+
Class ZCL_MY_CLASS in $PACKAGE
|
|
517
|
+
|
|
518
|
+
CLASS zcl_my_class DEFINITION PUBLIC.
|
|
519
|
+
|
|
520
|
+
PUBLIC SECTION.
|
|
521
|
+
INTERFACES: zif_my_interface.
|
|
522
|
+
METHODS: constructor,
|
|
523
|
+
get_value RETURNING VALUE(rv_result) TYPE string.
|
|
524
|
+
ENDCLASS.
|
|
525
|
+
```
|
|
526
|
+
|
|
527
|
+
**JSON Output:**
|
|
528
|
+
```json
|
|
529
|
+
{
|
|
530
|
+
"success": true,
|
|
531
|
+
"command": "VIEW",
|
|
532
|
+
"message": "Retrieved object(s)",
|
|
533
|
+
"objects": [
|
|
534
|
+
{
|
|
535
|
+
"name": "ZCL_MY_CLASS",
|
|
536
|
+
"type": "CLAS",
|
|
537
|
+
"type_text": "Class",
|
|
538
|
+
"description": "Class ZCL_MY_CLASS in $PACKAGE",
|
|
539
|
+
"source": "CLASS zcl_my_class DEFINITION PUBLIC...",
|
|
540
|
+
"not_found": false
|
|
541
|
+
}
|
|
542
|
+
],
|
|
543
|
+
"summary": { "total": 1 }
|
|
544
|
+
}
|
|
545
|
+
```
|
|
546
|
+
|
|
547
|
+
**Table Type Output:**
|
|
548
|
+
```
|
|
549
|
+
📖 ZMY_TTYP (Table Type)
|
|
550
|
+
Table Type ZMY_TTYP in $PACKAGE
|
|
551
|
+
|
|
552
|
+
Line Type: ZMY_STRUCTURE
|
|
553
|
+
Access Mode: STANDARD
|
|
554
|
+
Key Definition: WITH KEY
|
|
555
|
+
```
|
|
556
|
+
|
|
557
|
+
**CDS View Output:**
|
|
558
|
+
```
|
|
559
|
+
📖 ZC_MY_CDS_VIEW (CDS View)
|
|
560
|
+
CDS View ZC_MY_CDS_VIEW in $PACKAGE
|
|
561
|
+
|
|
562
|
+
@AbapCatalog.sqlViewName: 'ZCMYVIEW'
|
|
563
|
+
@AbapCatalog.compiler.compareFilter: true
|
|
564
|
+
@AccessControl.authorizationCheck: #NOT_REQUIRED
|
|
565
|
+
@EndUserText.label: 'My CDS View'
|
|
566
|
+
define view ZC_MY_CDS_VIEW as select from tdevc
|
|
567
|
+
{
|
|
568
|
+
key devclass as Devclass,
|
|
569
|
+
parentcl as ParentPackage,
|
|
570
|
+
ctext as Description
|
|
571
|
+
}
|
|
572
|
+
where devclass not like '$%'
|
|
573
|
+
```
|
|
574
|
+
|
|
575
|
+
### Error Handling
|
|
576
|
+
|
|
577
|
+
| Error | Message |
|
|
578
|
+
|-------|---------|
|
|
579
|
+
| Object not found | `Object <name> not found` |
|
|
580
|
+
| Invalid object type | `Unsupported object type: <type>` |
|
|
581
|
+
|
|
233
582
|
## Status Check
|
|
234
583
|
|
|
235
584
|
### Description
|
|
@@ -295,6 +644,37 @@ export GIT_PASSWORD="git-token"
|
|
|
295
644
|
|
|
296
645
|
## Development Workflow
|
|
297
646
|
|
|
647
|
+
### Exploring Unknown ABAP Objects
|
|
648
|
+
|
|
649
|
+
**Check package structure:**
|
|
650
|
+
```bash
|
|
651
|
+
abapgit-agent tree --package $MY_PACKAGE
|
|
652
|
+
```
|
|
653
|
+
|
|
654
|
+
**Before working with an unfamiliar table, structure, class, or interface:**
|
|
655
|
+
|
|
656
|
+
```bash
|
|
657
|
+
# Don't guess! Use view command to explore:
|
|
658
|
+
|
|
659
|
+
# Check table structure
|
|
660
|
+
abapgit-agent view --objects ZMY_TABLE --type TABL
|
|
661
|
+
|
|
662
|
+
# Check structure components
|
|
663
|
+
abapgit-agent view --objects ZMY_STRUCT --type STRU
|
|
664
|
+
|
|
665
|
+
# Check class methods and interface
|
|
666
|
+
abapgit-agent view --objects ZCL_UNKNOWN_CLASS
|
|
667
|
+
|
|
668
|
+
# Check interface definition
|
|
669
|
+
abapgit-agent view --objects ZIF_UNKNOWN_INTERFACE
|
|
670
|
+
|
|
671
|
+
# Check data element type
|
|
672
|
+
abapgit-agent view --objects ZMY_DTEL --type DTEL
|
|
673
|
+
|
|
674
|
+
# JSON output for programmatic use
|
|
675
|
+
abapgit-agent view --objects ZMY_TABLE --type TABL --json
|
|
676
|
+
```
|
|
677
|
+
|
|
298
678
|
### CLI Tool Development
|
|
299
679
|
|
|
300
680
|
1. Make changes to CLI code (JavaScript)
|
|
@@ -325,6 +705,10 @@ For quick ABAP code changes:
|
|
|
325
705
|
4. Verify activation results
|
|
326
706
|
5. Repeat until done
|
|
327
707
|
|
|
708
|
+
## Creating CDS Views
|
|
709
|
+
|
|
710
|
+
For guidelines on creating CDS views and CDS view entities, see **ABAP Code Generation** below.
|
|
711
|
+
|
|
328
712
|
## For ABAP Code Generation
|
|
329
713
|
|
|
330
714
|
**NOTE**: This file is for developing the CLI tool itself. For guidelines on **generating ABAP code** for abapGit repositories, see `/abap/CLAUDE.md`. Copy that file to your ABAP repository root when setting up new projects.
|
package/README.md
CHANGED
|
@@ -25,7 +25,7 @@ git clone https://github.com/user/abap-project.git
|
|
|
25
25
|
cd abap-project
|
|
26
26
|
|
|
27
27
|
# 3. Initialize configuration
|
|
28
|
-
abapgit-agent init --folder /abap --package ZMY_PACKAGE
|
|
28
|
+
abapgit-agent init --folder /abap/ --package ZMY_PACKAGE
|
|
29
29
|
|
|
30
30
|
# 4. Edit .abapGitAgent with credentials
|
|
31
31
|
|
|
@@ -47,7 +47,7 @@ See [Creating New ABAP Projects](INSTALL.md#creating-new-abap-projects) to set u
|
|
|
47
47
|
|
|
48
48
|
```bash
|
|
49
49
|
# Initialize local configuration for existing git repo
|
|
50
|
-
abapgit-agent init --folder /abap --package ZMY_PACKAGE
|
|
50
|
+
abapgit-agent init --folder /abap/ --package ZMY_PACKAGE
|
|
51
51
|
|
|
52
52
|
# Create online repository in ABAP
|
|
53
53
|
abapgit-agent create
|
|
@@ -94,6 +94,18 @@ abapgit-agent unit --files abap/zcl_my_test.clas.testclasses.abap
|
|
|
94
94
|
abapgit-agent unit --files abap/zcl_test1.clas.testclasses.abap,abap/zcl_test2.clas.testclasses.abap
|
|
95
95
|
```
|
|
96
96
|
|
|
97
|
+
### Explore Commands
|
|
98
|
+
|
|
99
|
+
```bash
|
|
100
|
+
# Display package hierarchy tree
|
|
101
|
+
abapgit-agent tree --package $MY_PACKAGE
|
|
102
|
+
|
|
103
|
+
# View object definitions from ABAP system (classes, interfaces, tables, data elements)
|
|
104
|
+
abapgit-agent view --objects ZCL_MY_CLASS
|
|
105
|
+
abapgit-agent view --objects SFLIGHT --type TABL
|
|
106
|
+
abapgit-agent view --objects S_CARR_ID --type DTEL
|
|
107
|
+
```
|
|
108
|
+
|
|
97
109
|
### Utility Commands
|
|
98
110
|
|
|
99
111
|
```bash
|
|
@@ -129,6 +141,8 @@ npm run pull -- --url <git-url> --branch main
|
|
|
129
141
|
| pull Command | [docs/pull-command.md](docs/pull-command.md) |
|
|
130
142
|
| inspect Command | [docs/inspect-command.md](docs/inspect-command.md) |
|
|
131
143
|
| unit Command | [docs/unit-command.md](docs/unit-command.md) |
|
|
144
|
+
| tree Command | [docs/tree-command.md](docs/tree-command.md) |
|
|
145
|
+
| view Command | [docs/view-command.md](docs/view-command.md) |
|
|
132
146
|
| REST API Reference | [API.md](API.md) |
|
|
133
147
|
| Error Handling | [ERROR_HANDLING.md](ERROR_HANDLING.md) |
|
|
134
148
|
| ABAP Coding Guidelines | [abap/CLAUDE.md](abap/CLAUDE.md) |
|
package/RELEASE_NOTES.md
CHANGED
|
@@ -1,14 +1,99 @@
|
|
|
1
|
-
|
|
1
|
+
# Release Notes
|
|
2
|
+
|
|
3
|
+
## v1.3.0
|
|
4
|
+
|
|
5
|
+
### New Features
|
|
6
|
+
|
|
7
|
+
- **view Command**: Now supports TTYP (Table Type) and DDLS (CDS View)
|
|
8
|
+
|
|
9
|
+
### Bug Fixes
|
|
10
|
+
|
|
11
|
+
- Fixed CDS view source display in view command
|
|
12
|
+
- Fixed interface exception handling
|
|
13
|
+
|
|
14
|
+
---
|
|
15
|
+
|
|
16
|
+
## v1.2.0
|
|
17
|
+
|
|
18
|
+
### New Features
|
|
19
|
+
|
|
20
|
+
#### tree Command
|
|
21
|
+
Display package hierarchy tree from ABAP system:
|
|
22
|
+
```bash
|
|
23
|
+
# Basic usage
|
|
24
|
+
abapgit-agent tree --package $MY_PACKAGE
|
|
25
|
+
|
|
26
|
+
# With object counts
|
|
27
|
+
abapgit-agent tree --package $MY_PACKAGE --include-objects
|
|
28
|
+
|
|
29
|
+
# Limit depth
|
|
30
|
+
abapgit-agent tree --package $MY_PACKAGE --depth 2
|
|
31
|
+
|
|
32
|
+
# JSON output for scripting
|
|
33
|
+
abapgit-agent tree --package $MY_PACKAGE --json
|
|
34
|
+
```
|
|
35
|
+
|
|
36
|
+
#### view Command
|
|
37
|
+
View ABAP object definitions directly from ABAP system without pulling from git:
|
|
38
|
+
|
|
39
|
+
```bash
|
|
40
|
+
# View class definition
|
|
41
|
+
abapgit-agent view --objects ZCL_MY_CLASS
|
|
42
|
+
|
|
43
|
+
# View interface
|
|
44
|
+
abapgit-agent view --objects ZIF_MY_INTERFACE
|
|
45
|
+
|
|
46
|
+
# View table structure
|
|
47
|
+
abapgit-agent view --objects SFLIGHT --type TABL
|
|
48
|
+
|
|
49
|
+
# View data element
|
|
50
|
+
abapgit-agent view --objects S_CARR_ID --type DTEL
|
|
51
|
+
|
|
52
|
+
# View multiple objects
|
|
53
|
+
abapgit-agent view --objects ZCL_CLASS1,ZIF_INTERFACE1,ZMY_TABLE
|
|
54
|
+
|
|
55
|
+
# Auto-detect type from TADIR
|
|
56
|
+
abapgit-agent view --objects SFLIGHT
|
|
57
|
+
|
|
58
|
+
# JSON output for scripting
|
|
59
|
+
abapgit-agent view --objects ZCL_MY_CLASS --json
|
|
60
|
+
```
|
|
61
|
+
|
|
62
|
+
**Supported Object Types:**
|
|
63
|
+
- CLAS - Global ABAP class
|
|
64
|
+
- INTF - Global interface
|
|
65
|
+
- TABL - Database table
|
|
66
|
+
- STRU - Structure type
|
|
67
|
+
- DTEL - Data element
|
|
68
|
+
|
|
69
|
+
### Improvements
|
|
70
|
+
|
|
71
|
+
- **Auto-detection**: view command now queries TADIR to automatically detect object types (no need to specify `--type` for most objects)
|
|
72
|
+
- **Lowercase support**: Object names and types are case-insensitive
|
|
73
|
+
- **Error handling**: Non-existent objects now display clear error messages
|
|
74
|
+
- **Cleaner output**: Removed AI metadata block from tree command output
|
|
75
|
+
|
|
76
|
+
### Bug Fixes
|
|
77
|
+
|
|
78
|
+
- Fixed non-existent object detection in view command
|
|
79
|
+
- Fixed source code display for class/interface definitions
|
|
80
|
+
- Fixed table and structure field display formatting
|
|
81
|
+
- Fixed data element output with domain information
|
|
82
|
+
|
|
83
|
+
### Documentation
|
|
84
|
+
|
|
85
|
+
- Added comprehensive docs/tree-command.md
|
|
86
|
+
- Added comprehensive docs/view-command.md
|
|
87
|
+
- Updated README.md with tree and view command examples
|
|
88
|
+
- Updated CLAUDE.md with view command usage for exploring ABAP objects
|
|
89
|
+
|
|
90
|
+
---
|
|
91
|
+
|
|
92
|
+
## v1.1.6
|
|
2
93
|
|
|
3
94
|
- Added `create` command to create online repository in ABAP system
|
|
4
95
|
- Added `import` command to import objects from ABAP package to git
|
|
5
96
|
- Added unit tests for create and import commands
|
|
6
97
|
- Added GitHub Actions workflow for automated npm releases
|
|
7
|
-
- Improved .gitignore handling in init command
|
|
98
|
+
- Improved .gitignore handling in init command
|
|
8
99
|
- Updated commands documentation
|
|
9
|
-
|
|
10
|
-
## Installation
|
|
11
|
-
|
|
12
|
-
```bash
|
|
13
|
-
npm install -g abapgit-agent
|
|
14
|
-
```
|