abapgit-agent 1.5.0 → 1.6.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/README.md +1 -0
- package/abap/guidelines/00_index.md +35 -0
- package/abap/guidelines/01_sql.md +72 -0
- package/abap/guidelines/02_exceptions.md +108 -0
- package/abap/guidelines/03_testing.md +252 -0
- package/abap/guidelines/04_cds.md +120 -0
- package/abap/guidelines/05_classes.md +50 -0
- package/abap/guidelines/06_objects.md +103 -0
- package/abap/guidelines/07_json.md +22 -0
- package/abap/guidelines/08_abapgit.md +193 -0
- package/bin/abapgit-agent +467 -30
- package/bin/abgagt +24 -0
- package/package.json +8 -2
- package/src/abap-client.js +65 -2
- package/src/agent.js +57 -3
- package/src/ref-search.js +989 -0
- package/.abapGitAgent.example +0 -11
- package/.github/workflows/release.yml +0 -60
- package/API.md +0 -710
- package/CLAUDE.md +0 -1058
- package/CLAUDE_MEM.md +0 -88
- package/ERROR_HANDLING.md +0 -30
- package/INSTALL.md +0 -155
- package/RELEASE_NOTES.md +0 -143
- package/abap/CLAUDE.md +0 -1010
- package/abap/copilot-instructions.md +0 -79
- package/abap/package.devc.xml +0 -10
- package/abap/zcl_abgagt_agent.clas.abap +0 -420
- package/abap/zcl_abgagt_agent.clas.xml +0 -15
- package/abap/zcl_abgagt_cmd_factory.clas.abap +0 -48
- package/abap/zcl_abgagt_cmd_factory.clas.xml +0 -15
- package/abap/zcl_abgagt_command_create.clas.abap +0 -95
- package/abap/zcl_abgagt_command_create.clas.xml +0 -15
- package/abap/zcl_abgagt_command_import.clas.abap +0 -138
- package/abap/zcl_abgagt_command_import.clas.xml +0 -15
- package/abap/zcl_abgagt_command_inspect.clas.abap +0 -456
- package/abap/zcl_abgagt_command_inspect.clas.testclasses.abap +0 -121
- package/abap/zcl_abgagt_command_inspect.clas.xml +0 -16
- package/abap/zcl_abgagt_command_preview.clas.abap +0 -386
- package/abap/zcl_abgagt_command_preview.clas.xml +0 -15
- package/abap/zcl_abgagt_command_pull.clas.abap +0 -80
- package/abap/zcl_abgagt_command_pull.clas.testclasses.abap +0 -87
- package/abap/zcl_abgagt_command_pull.clas.xml +0 -16
- package/abap/zcl_abgagt_command_tree.clas.abap +0 -237
- package/abap/zcl_abgagt_command_tree.clas.xml +0 -15
- package/abap/zcl_abgagt_command_unit.clas.abap +0 -297
- package/abap/zcl_abgagt_command_unit.clas.xml +0 -15
- package/abap/zcl_abgagt_command_view.clas.abap +0 -240
- package/abap/zcl_abgagt_command_view.clas.xml +0 -15
- package/abap/zcl_abgagt_resource_create.clas.abap +0 -71
- package/abap/zcl_abgagt_resource_create.clas.xml +0 -15
- package/abap/zcl_abgagt_resource_health.clas.abap +0 -25
- package/abap/zcl_abgagt_resource_health.clas.xml +0 -15
- package/abap/zcl_abgagt_resource_import.clas.abap +0 -66
- package/abap/zcl_abgagt_resource_import.clas.xml +0 -15
- package/abap/zcl_abgagt_resource_inspect.clas.abap +0 -63
- package/abap/zcl_abgagt_resource_inspect.clas.xml +0 -15
- package/abap/zcl_abgagt_resource_preview.clas.abap +0 -67
- package/abap/zcl_abgagt_resource_preview.clas.xml +0 -15
- package/abap/zcl_abgagt_resource_pull.clas.abap +0 -71
- package/abap/zcl_abgagt_resource_pull.clas.xml +0 -15
- package/abap/zcl_abgagt_resource_tree.clas.abap +0 -70
- package/abap/zcl_abgagt_resource_tree.clas.xml +0 -15
- package/abap/zcl_abgagt_resource_unit.clas.abap +0 -64
- package/abap/zcl_abgagt_resource_unit.clas.xml +0 -15
- package/abap/zcl_abgagt_resource_view.clas.abap +0 -68
- package/abap/zcl_abgagt_resource_view.clas.xml +0 -15
- package/abap/zcl_abgagt_rest_handler.clas.abap +0 -32
- package/abap/zcl_abgagt_rest_handler.clas.xml +0 -15
- package/abap/zcl_abgagt_util.clas.abap +0 -93
- package/abap/zcl_abgagt_util.clas.testclasses.abap +0 -84
- package/abap/zcl_abgagt_util.clas.xml +0 -16
- package/abap/zcl_abgagt_viewer_clas.clas.abap +0 -58
- package/abap/zcl_abgagt_viewer_clas.clas.xml +0 -15
- package/abap/zcl_abgagt_viewer_ddls.clas.abap +0 -83
- package/abap/zcl_abgagt_viewer_ddls.clas.xml +0 -15
- package/abap/zcl_abgagt_viewer_dtel.clas.abap +0 -98
- package/abap/zcl_abgagt_viewer_dtel.clas.xml +0 -15
- package/abap/zcl_abgagt_viewer_factory.clas.abap +0 -41
- package/abap/zcl_abgagt_viewer_factory.clas.xml +0 -15
- package/abap/zcl_abgagt_viewer_intf.clas.abap +0 -58
- package/abap/zcl_abgagt_viewer_intf.clas.xml +0 -15
- package/abap/zcl_abgagt_viewer_stru.clas.abap +0 -59
- package/abap/zcl_abgagt_viewer_stru.clas.xml +0 -15
- package/abap/zcl_abgagt_viewer_tabl.clas.abap +0 -59
- package/abap/zcl_abgagt_viewer_tabl.clas.xml +0 -15
- package/abap/zcl_abgagt_viewer_ttyp.clas.abap +0 -93
- package/abap/zcl_abgagt_viewer_ttyp.clas.xml +0 -15
- package/abap/zif_abgagt_agent.intf.abap +0 -53
- package/abap/zif_abgagt_agent.intf.xml +0 -15
- package/abap/zif_abgagt_cmd_factory.intf.abap +0 -7
- package/abap/zif_abgagt_cmd_factory.intf.xml +0 -15
- package/abap/zif_abgagt_command.intf.abap +0 -26
- package/abap/zif_abgagt_command.intf.xml +0 -15
- package/abap/zif_abgagt_util.intf.abap +0 -28
- package/abap/zif_abgagt_util.intf.xml +0 -15
- package/abap/zif_abgagt_viewer.intf.abap +0 -12
- package/abap/zif_abgagt_viewer.intf.xml +0 -15
- package/docs/commands.md +0 -142
- package/docs/create-command.md +0 -129
- package/docs/health-command.md +0 -89
- package/docs/import-command.md +0 -195
- package/docs/init-command.md +0 -189
- package/docs/inspect-command.md +0 -169
- package/docs/list-command.md +0 -289
- package/docs/preview-command.md +0 -528
- package/docs/pull-command.md +0 -202
- package/docs/status-command.md +0 -68
- package/docs/tree-command.md +0 -303
- package/docs/unit-command.md +0 -167
- package/docs/view-command.md +0 -501
- package/img/claude.png +0 -0
- package/scripts/claude-integration.js +0 -351
- package/scripts/release.js +0 -298
- package/scripts/release.sh +0 -60
- package/scripts/test-integration.js +0 -139
- package/scripts/unrelease.js +0 -277
package/docs/init-command.md
DELETED
|
@@ -1,189 +0,0 @@
|
|
|
1
|
-
# init Command
|
|
2
|
-
|
|
3
|
-
Initialize local configuration for an existing git repository.
|
|
4
|
-
|
|
5
|
-
## Command
|
|
6
|
-
|
|
7
|
-
```bash
|
|
8
|
-
abapgit-agent init --folder /src/ --package ZMY_PACKAGE
|
|
9
|
-
```
|
|
10
|
-
|
|
11
|
-
## Prerequisite
|
|
12
|
-
|
|
13
|
-
- Current folder is the root folder of a git repository
|
|
14
|
-
- Git remote is configured (`git remote -v` returns a URL)
|
|
15
|
-
|
|
16
|
-
## Parameters
|
|
17
|
-
|
|
18
|
-
| Parameter | Required | Default | Description |
|
|
19
|
-
|-----------|----------|---------|-------------|
|
|
20
|
-
| `--folder` | No | `/src/` | Subfolder path for ABAP source files |
|
|
21
|
-
| `--package` | Yes | - | Target ABAP package |
|
|
22
|
-
|
|
23
|
-
## Tasks
|
|
24
|
-
|
|
25
|
-
### 1. Detect Git Remote URL
|
|
26
|
-
|
|
27
|
-
```bash
|
|
28
|
-
git remote get-url origin
|
|
29
|
-
```
|
|
30
|
-
|
|
31
|
-
- Fail if no remote configured
|
|
32
|
-
|
|
33
|
-
### 2. Copy Configuration Template
|
|
34
|
-
|
|
35
|
-
```bash
|
|
36
|
-
cp .abapGitAgent.example .abapGitAgent
|
|
37
|
-
```
|
|
38
|
-
|
|
39
|
-
### 3. Update Configuration
|
|
40
|
-
|
|
41
|
-
Add to `.abapGitAgent`:
|
|
42
|
-
|
|
43
|
-
```json
|
|
44
|
-
{
|
|
45
|
-
"package": "ZMY_PACKAGE",
|
|
46
|
-
"folder": "/src/"
|
|
47
|
-
}
|
|
48
|
-
```
|
|
49
|
-
|
|
50
|
-
### 4. Create Folder
|
|
51
|
-
|
|
52
|
-
```bash
|
|
53
|
-
mkdir -p /src/
|
|
54
|
-
```
|
|
55
|
-
|
|
56
|
-
Add `.gitkeep` (optional):
|
|
57
|
-
|
|
58
|
-
```bash
|
|
59
|
-
touch /src/.gitkeep
|
|
60
|
-
```
|
|
61
|
-
|
|
62
|
-
### 5. Update .gitignore
|
|
63
|
-
|
|
64
|
-
Add sensitive files to `.gitignore`:
|
|
65
|
-
|
|
66
|
-
```
|
|
67
|
-
.abapGitAgent
|
|
68
|
-
.abapgit_agent_cookies.txt
|
|
69
|
-
```
|
|
70
|
-
|
|
71
|
-
### 6. Copy Documentation
|
|
72
|
-
|
|
73
|
-
```bash
|
|
74
|
-
cp /path/to/abapgit-agent/abap/CLAUDE.md .
|
|
75
|
-
```
|
|
76
|
-
|
|
77
|
-
## Output Files
|
|
78
|
-
|
|
79
|
-
| File | Description |
|
|
80
|
-
|------|-------------|
|
|
81
|
-
| `.abapGitAgent` | Configuration (user must edit host, user, password, gitUsername, gitPassword) |
|
|
82
|
-
| `.gitignore` | Updated with sensitive files |
|
|
83
|
-
| `CLAUDE.md` | ABAP coding guidelines |
|
|
84
|
-
| `/src/` | Folder for ABAP source files |
|
|
85
|
-
|
|
86
|
-
## .abapGitAgent Contents
|
|
87
|
-
|
|
88
|
-
After `init` command, `.abapGitAgent` contains:
|
|
89
|
-
|
|
90
|
-
```json
|
|
91
|
-
{
|
|
92
|
-
"host": "your-sap-system.com",
|
|
93
|
-
"sapport": 443,
|
|
94
|
-
"client": "100",
|
|
95
|
-
"user": "TECH_USER",
|
|
96
|
-
"password": "your-password",
|
|
97
|
-
"language": "EN",
|
|
98
|
-
"gitUsername": "github-username",
|
|
99
|
-
"gitPassword": "github-token",
|
|
100
|
-
"referenceFolder": "~/abap-reference",
|
|
101
|
-
"package": "ZMY_PACKAGE",
|
|
102
|
-
"folder": "/src/"
|
|
103
|
-
}
|
|
104
|
-
```
|
|
105
|
-
|
|
106
|
-
## GitHub Credentials
|
|
107
|
-
|
|
108
|
-
For the `import` command to work, you need to configure GitHub credentials:
|
|
109
|
-
|
|
110
|
-
1. Create a GitHub Personal Access Token (PAT):
|
|
111
|
-
- GitHub.com: https://github.com/settings/tokens
|
|
112
|
-
|
|
113
|
-
2. Add to `.abapGitAgent`:
|
|
114
|
-
|
|
115
|
-
```json
|
|
116
|
-
{
|
|
117
|
-
"gitUsername": "<your-github-username>",
|
|
118
|
-
"gitPassword": "ghp_your_token_here"
|
|
119
|
-
}
|
|
120
|
-
```
|
|
121
|
-
|
|
122
|
-
Or set environment variables:
|
|
123
|
-
|
|
124
|
-
```bash
|
|
125
|
-
export GIT_USERNAME="<your-github-username>"
|
|
126
|
-
export GIT_PASSWORD="ghp_your_token_here"
|
|
127
|
-
```
|
|
128
|
-
|
|
129
|
-
## Post-Init Steps
|
|
130
|
-
|
|
131
|
-
1. Edit `.abapGitAgent` with correct values:
|
|
132
|
-
- `host`: SAP system hostname
|
|
133
|
-
- `user`: SAP username
|
|
134
|
-
- `password`: SAP password
|
|
135
|
-
- `gitUsername`: GitHub username (for import command)
|
|
136
|
-
- `gitPassword`: GitHub PAT (for import command)
|
|
137
|
-
|
|
138
|
-
2. Run `abapgit-agent create` to create abapGit repo in ABAP
|
|
139
|
-
|
|
140
|
-
3. Run `abapgit-agent import` to import objects to git
|
|
141
|
-
|
|
142
|
-
## Full Workflow
|
|
143
|
-
|
|
144
|
-
```
|
|
145
|
-
1. abapgit-agent init --folder /src/ --package ZMY_PACKAGE
|
|
146
|
-
└─> Creates .abapGitAgent, CLAUDE.md, /src/, updates .gitignore
|
|
147
|
-
|
|
148
|
-
2. Edit .abapGitAgent (host, user, password, gitUsername, gitPassword)
|
|
149
|
-
|
|
150
|
-
3. abapgit-agent create
|
|
151
|
-
└─> Creates online repository in ABAP
|
|
152
|
-
|
|
153
|
-
4. abapgit-agent import
|
|
154
|
-
└─> Stages, commits, and pushes all objects from ZMY_PACKAGE
|
|
155
|
-
|
|
156
|
-
5. git pull
|
|
157
|
-
└─> Optionally pull to local folder
|
|
158
|
-
|
|
159
|
-
6. abapgit-agent pull
|
|
160
|
-
└─> Activate objects in ABAP
|
|
161
|
-
```
|
|
162
|
-
|
|
163
|
-
## Example
|
|
164
|
-
|
|
165
|
-
```bash
|
|
166
|
-
# Initialize
|
|
167
|
-
abapgit-agent init --folder /abap/ --package ZMYPROJECT
|
|
168
|
-
|
|
169
|
-
# Edit config
|
|
170
|
-
vim .abapGitAgent
|
|
171
|
-
|
|
172
|
-
# Create repo
|
|
173
|
-
abapgit-agent create
|
|
174
|
-
|
|
175
|
-
# Import objects to git
|
|
176
|
-
abapgit-agent import
|
|
177
|
-
|
|
178
|
-
# Pull to local folder
|
|
179
|
-
git pull origin main
|
|
180
|
-
|
|
181
|
-
# Activate in ABAP
|
|
182
|
-
abapgit-agent pull
|
|
183
|
-
```
|
|
184
|
-
|
|
185
|
-
## Related Commands
|
|
186
|
-
|
|
187
|
-
- [`create`](create-command.md) - Create online repository in ABAP
|
|
188
|
-
- [`import`](import-command.md) - Import objects from package to git
|
|
189
|
-
- [`pull`](pull-command.md) - Pull and activate objects in ABAP
|
package/docs/inspect-command.md
DELETED
|
@@ -1,169 +0,0 @@
|
|
|
1
|
-
# inspect Command Requirements
|
|
2
|
-
|
|
3
|
-
## Overview
|
|
4
|
-
|
|
5
|
-
Inspect ABAP source file(s) for syntax errors and issues.
|
|
6
|
-
|
|
7
|
-
## Command
|
|
8
|
-
|
|
9
|
-
```bash
|
|
10
|
-
# Inspect single file
|
|
11
|
-
abapgit-agent inspect --files zcl_my_class.clas.abap
|
|
12
|
-
|
|
13
|
-
# Inspect multiple files
|
|
14
|
-
abapgit-agent inspect --files zcl_my_class.clas.abap,zcl_other.clas.abap
|
|
15
|
-
|
|
16
|
-
# With path
|
|
17
|
-
abapgit-agent inspect --files abap/zcl_my_class.clas.abap
|
|
18
|
-
|
|
19
|
-
# With Code Inspector variant
|
|
20
|
-
abapgit-agent inspect --files abap/zcl_my_class.clas.abap --variant ALL_CHECKS
|
|
21
|
-
|
|
22
|
-
# With no variant (uses default SAP standard checks)
|
|
23
|
-
abapgit-agent inspect --files abap/zcl_my_class.clas.abap --variant EMPTY
|
|
24
|
-
```
|
|
25
|
-
|
|
26
|
-
## Prerequisite
|
|
27
|
-
|
|
28
|
-
- `.abapGitAgent` exists with valid credentials
|
|
29
|
-
- Files must exist in the filesystem
|
|
30
|
-
|
|
31
|
-
## Parameters
|
|
32
|
-
|
|
33
|
-
| Parameter | Required | Description |
|
|
34
|
-
|-----------|----------|-------------|
|
|
35
|
-
| `--files` | Yes | Comma-separated list of files to inspect |
|
|
36
|
-
| `--variant` | No | Code Inspector variant name (e.g., `ALL_CHECKS`, `EMPTY`) |
|
|
37
|
-
|
|
38
|
-
---
|
|
39
|
-
|
|
40
|
-
## Tasks
|
|
41
|
-
|
|
42
|
-
### 1. Validate Parameters
|
|
43
|
-
|
|
44
|
-
- `--files` must be specified
|
|
45
|
-
- Files must exist
|
|
46
|
-
|
|
47
|
-
### 2. Load Configuration
|
|
48
|
-
|
|
49
|
-
Read `.abapGitAgent` for credentials
|
|
50
|
-
|
|
51
|
-
### 3. Fetch CSRF Token
|
|
52
|
-
|
|
53
|
-
```bash
|
|
54
|
-
GET /health (with X-CSRF-Token: fetch)
|
|
55
|
-
```
|
|
56
|
-
|
|
57
|
-
### 4. Make Inspect Request
|
|
58
|
-
|
|
59
|
-
**Endpoint:** `POST /inspect`
|
|
60
|
-
|
|
61
|
-
**Request Body:**
|
|
62
|
-
```json
|
|
63
|
-
{
|
|
64
|
-
"files": ["ZCL_MY_CLASS.CLASS.ABAP"],
|
|
65
|
-
"variant": "ALL_CHECKS"
|
|
66
|
-
}
|
|
67
|
-
```
|
|
68
|
-
|
|
69
|
-
### 5. Display Results
|
|
70
|
-
|
|
71
|
-
---
|
|
72
|
-
|
|
73
|
-
## Output
|
|
74
|
-
|
|
75
|
-
### Success (No Errors)
|
|
76
|
-
|
|
77
|
-
```
|
|
78
|
-
Inspect for 1 file(s)
|
|
79
|
-
|
|
80
|
-
✅ zcl_my_class.clas.abap - Syntax check passed (0 errors)
|
|
81
|
-
```
|
|
82
|
-
|
|
83
|
-
### With Errors
|
|
84
|
-
|
|
85
|
-
```
|
|
86
|
-
Inspect for 1 file(s)
|
|
87
|
-
|
|
88
|
-
❌ Syntax check failed (2 error(s)):
|
|
89
|
-
|
|
90
|
-
Errors:
|
|
91
|
-
────────────────────────────────────────────────────────────
|
|
92
|
-
Line 15, Column 10:
|
|
93
|
-
"ZMYCLASS" is not a type
|
|
94
|
-
|
|
95
|
-
Line 20, Column 5:
|
|
96
|
-
Field "LV_VAR" is unknown
|
|
97
|
-
```
|
|
98
|
-
|
|
99
|
-
---
|
|
100
|
-
|
|
101
|
-
## Response Structure
|
|
102
|
-
|
|
103
|
-
```json
|
|
104
|
-
{
|
|
105
|
-
"success": "X",
|
|
106
|
-
"object_type": "CLAS",
|
|
107
|
-
"object_name": "ZCL_MY_CLASS",
|
|
108
|
-
"error_count": 2,
|
|
109
|
-
"errors": [
|
|
110
|
-
{
|
|
111
|
-
"line": "15",
|
|
112
|
-
"column": "10",
|
|
113
|
-
"text": "\"ZMYCLASS\" is not a type",
|
|
114
|
-
"word": "ZMYCLASS"
|
|
115
|
-
}
|
|
116
|
-
]
|
|
117
|
-
}
|
|
118
|
-
```
|
|
119
|
-
|
|
120
|
-
---
|
|
121
|
-
|
|
122
|
-
## Error Handling
|
|
123
|
-
|
|
124
|
-
| Error | Message |
|
|
125
|
-
|-------|---------|
|
|
126
|
-
| File not found | `File not found: <path>` |
|
|
127
|
-
| Invalid file format | `Invalid file format: <file>` |
|
|
128
|
-
| No --files specified | `Error: --files parameter required` |
|
|
129
|
-
|
|
130
|
-
---
|
|
131
|
-
|
|
132
|
-
## File Format
|
|
133
|
-
|
|
134
|
-
Same as pull command - files are parsed to extract object type and name:
|
|
135
|
-
|
|
136
|
-
| File | Object Type | Object Name |
|
|
137
|
-
|------|-------------|-------------|
|
|
138
|
-
| `zcl_my_class.clas.abap` | CLAS | ZCL_MY_CLASS |
|
|
139
|
-
| `zif_my_intf.intf.abap` | INTF | ZIF_MY_INTF |
|
|
140
|
-
|
|
141
|
-
---
|
|
142
|
-
|
|
143
|
-
## Example
|
|
144
|
-
|
|
145
|
-
```bash
|
|
146
|
-
# Syntax check
|
|
147
|
-
abapgit-agent inspect --files zcl_my_class.clas.abap
|
|
148
|
-
|
|
149
|
-
# Multiple files
|
|
150
|
-
abapgit-agent inspect --files abap/zcl_my_class.clas.abap,abap/zcl_other.clas.abap
|
|
151
|
-
|
|
152
|
-
# With Code Inspector variant
|
|
153
|
-
abapgit-agent inspect --files abap/zcl_my_class.clas.abap --variant ALL_CHECKS
|
|
154
|
-
```
|
|
155
|
-
|
|
156
|
-
## Use Case
|
|
157
|
-
|
|
158
|
-
Use `inspect` when:
|
|
159
|
-
- Pull shows "Error updating where-used list" (syntax error)
|
|
160
|
-
- You need detailed error messages with line numbers
|
|
161
|
-
- Debugging activation failures
|
|
162
|
-
|
|
163
|
-
```
|
|
164
|
-
abapgit-agent pull
|
|
165
|
-
❌ CLAS ZCL_MY_CLASS: Error updating where-used list
|
|
166
|
-
|
|
167
|
-
abapgit-agent inspect --files abap/zcl_my_class.clas.abap
|
|
168
|
-
❌ Line 15, Column 10: "ZMYCLASS" is not a type
|
|
169
|
-
```
|
package/docs/list-command.md
DELETED
|
@@ -1,289 +0,0 @@
|
|
|
1
|
-
# list Command Requirements
|
|
2
|
-
|
|
3
|
-
## Overview
|
|
4
|
-
|
|
5
|
-
List ABAP objects in a package with filtering and pagination capabilities. This command provides a flat list of objects with support for filtering by type, name pattern, and pagination.
|
|
6
|
-
|
|
7
|
-
## Command
|
|
8
|
-
|
|
9
|
-
```bash
|
|
10
|
-
# List all objects in a package
|
|
11
|
-
abapgit-agent list --package $ZMY_PACKAGE
|
|
12
|
-
|
|
13
|
-
# Filter by object type
|
|
14
|
-
abapgit-agent list --package $ZMY_PACKAGE --type CLAS,INTF
|
|
15
|
-
|
|
16
|
-
# Filter by name pattern
|
|
17
|
-
abapgit-agent list --package $ZMY_PACKAGE --name ZCL_*
|
|
18
|
-
|
|
19
|
-
# Limit results
|
|
20
|
-
abapgit-agent list --package $ZMY_PACKAGE --limit 50
|
|
21
|
-
|
|
22
|
-
# Paginate results
|
|
23
|
-
abapgit-agent list --package $ZMY_PACKAGE --offset 100 --limit 50
|
|
24
|
-
|
|
25
|
-
# JSON output for scripting
|
|
26
|
-
abapgit-agent list --package $ZMY_PACKAGE --json
|
|
27
|
-
```
|
|
28
|
-
|
|
29
|
-
## Prerequisite
|
|
30
|
-
|
|
31
|
-
- `.abapGitAgent` exists with valid credentials
|
|
32
|
-
- Package must exist in the ABAP system
|
|
33
|
-
|
|
34
|
-
## Parameters
|
|
35
|
-
|
|
36
|
-
| Parameter | Required | Default | Description |
|
|
37
|
-
|-----------|----------|---------|-------------|
|
|
38
|
-
| `--package` | Yes | - | Package name (e.g., `$ZMY_PACKAGE`, `ZMY_PACKAGE`) |
|
|
39
|
-
| `--type` | No | All types | Comma-separated object types (e.g., `CLAS,INTF,PROG`) |
|
|
40
|
-
| `--name` | No | - | Name pattern with wildcard support (e.g., `ZCL_*`) |
|
|
41
|
-
| `--limit` | No | 100 | Maximum objects to return (max: 1000) |
|
|
42
|
-
| `--offset` | No | 0 | Number of objects to skip |
|
|
43
|
-
| `--json` | No | false | Output raw JSON only |
|
|
44
|
-
|
|
45
|
-
---
|
|
46
|
-
|
|
47
|
-
## Tasks
|
|
48
|
-
|
|
49
|
-
### 1. Validate Parameters
|
|
50
|
-
|
|
51
|
-
- `--package` must be specified
|
|
52
|
-
- Package name must be valid (1-30 characters)
|
|
53
|
-
- `--limit` must be between 1 and 1000
|
|
54
|
-
|
|
55
|
-
### 2. Load Configuration
|
|
56
|
-
|
|
57
|
-
Read `.abapGitAgent` for credentials
|
|
58
|
-
|
|
59
|
-
### 3. Fetch CSRF Token
|
|
60
|
-
|
|
61
|
-
```bash
|
|
62
|
-
GET /health (with X-CSRF-Token: fetch)
|
|
63
|
-
```
|
|
64
|
-
|
|
65
|
-
### 4. Make List Request
|
|
66
|
-
|
|
67
|
-
**Endpoint:** `POST /list`
|
|
68
|
-
|
|
69
|
-
**Request Body:**
|
|
70
|
-
```json
|
|
71
|
-
{
|
|
72
|
-
"package": "$ZMY_PACKAGE",
|
|
73
|
-
"type": "CLAS,INTF",
|
|
74
|
-
"name": "ZCL_*",
|
|
75
|
-
"limit": 100,
|
|
76
|
-
"offset": 0
|
|
77
|
-
}
|
|
78
|
-
```
|
|
79
|
-
|
|
80
|
-
### 5. Display Results
|
|
81
|
-
|
|
82
|
-
---
|
|
83
|
-
|
|
84
|
-
## Output
|
|
85
|
-
|
|
86
|
-
### Human-Readable Output
|
|
87
|
-
|
|
88
|
-
```
|
|
89
|
-
📋 Objects in $ZMY_PACKAGE (Total: 15)
|
|
90
|
-
|
|
91
|
-
CLAS (5)
|
|
92
|
-
ZCL_CLASS1
|
|
93
|
-
ZCL_CLASS2
|
|
94
|
-
ZCL_CLASS3
|
|
95
|
-
ZCL_CLASS4
|
|
96
|
-
ZCL_CLASS5
|
|
97
|
-
|
|
98
|
-
INTF (2)
|
|
99
|
-
ZIF_INTERFACE1
|
|
100
|
-
ZIF_INTERFACE2
|
|
101
|
-
|
|
102
|
-
PROG (3)
|
|
103
|
-
ZPROG1
|
|
104
|
-
ZPROG2
|
|
105
|
-
ZPROG3
|
|
106
|
-
|
|
107
|
-
TABL (5)
|
|
108
|
-
ZTABLE1
|
|
109
|
-
ZTABLE2
|
|
110
|
-
ZTABLE3
|
|
111
|
-
ZTABLE4
|
|
112
|
-
ZTABLE5
|
|
113
|
-
```
|
|
114
|
-
|
|
115
|
-
### With Type Filter
|
|
116
|
-
|
|
117
|
-
```
|
|
118
|
-
📋 Objects in $ZMY_PACKAGE (CLAS only, Total: 5)
|
|
119
|
-
|
|
120
|
-
CLAS (5)
|
|
121
|
-
ZCL_CLASS1
|
|
122
|
-
ZCL_CLASS2
|
|
123
|
-
ZCL_CLASS3
|
|
124
|
-
ZCL_CLASS4
|
|
125
|
-
ZCL_CLASS5
|
|
126
|
-
```
|
|
127
|
-
|
|
128
|
-
### JSON Output
|
|
129
|
-
|
|
130
|
-
```json
|
|
131
|
-
{
|
|
132
|
-
"SUCCESS": true,
|
|
133
|
-
"COMMAND": "LIST",
|
|
134
|
-
"PACKAGE": "$ZMY_PACKAGE",
|
|
135
|
-
"TOTAL": 15,
|
|
136
|
-
"LIMIT": 100,
|
|
137
|
-
"OFFSET": 0,
|
|
138
|
-
"OBJECTS": [
|
|
139
|
-
{ "TYPE": "CLAS", "NAME": "ZCL_CLASS1" },
|
|
140
|
-
{ "TYPE": "CLAS", "NAME": "ZCL_CLASS2" },
|
|
141
|
-
{ "TYPE": "CLAS", "NAME": "ZCL_CLASS3" },
|
|
142
|
-
{ "TYPE": "CLAS", "NAME": "ZCL_CLASS4" },
|
|
143
|
-
{ "TYPE": "CLAS", "NAME": "ZCL_CLASS5" },
|
|
144
|
-
{ "TYPE": "INTF", "NAME": "ZIF_INTERFACE1" },
|
|
145
|
-
{ "TYPE": "INTF", "NAME": "ZIF_INTERFACE2" },
|
|
146
|
-
{ "TYPE": "PROG", "NAME": "ZPROG1" },
|
|
147
|
-
{ "TYPE": "PROG", "NAME": "ZPROG2" },
|
|
148
|
-
{ "TYPE": "PROG", "NAME": "ZPROG3" },
|
|
149
|
-
{ "TYPE": "TABL", "NAME": "ZTABLE1" },
|
|
150
|
-
{ "TYPE": "TABL", "NAME": "ZTABLE2" },
|
|
151
|
-
{ "TYPE": "TABL", "NAME": "ZTABLE3" },
|
|
152
|
-
{ "TYPE": "TABL", "NAME": "ZTABLE4" },
|
|
153
|
-
{ "TYPE": "TABL", "NAME": "ZTABLE5" }
|
|
154
|
-
],
|
|
155
|
-
"BY_TYPE": [
|
|
156
|
-
{ "TYPE": "CLAS", "COUNT": 5 },
|
|
157
|
-
{ "TYPE": "INTF", "COUNT": 2 },
|
|
158
|
-
{ "TYPE": "PROG", "COUNT": 3 },
|
|
159
|
-
{ "TYPE": "TABL", "COUNT": 5 }
|
|
160
|
-
],
|
|
161
|
-
"ERROR": ""
|
|
162
|
-
}
|
|
163
|
-
```
|
|
164
|
-
|
|
165
|
-
**Response Fields:**
|
|
166
|
-
|
|
167
|
-
| Field | Type | Description |
|
|
168
|
-
|-------|------|-------------|
|
|
169
|
-
| `SUCCESS` | boolean | Whether the request succeeded |
|
|
170
|
-
| `COMMAND` | string | Command name ("LIST") |
|
|
171
|
-
| `PACKAGE` | string | Package name |
|
|
172
|
-
| `TOTAL` | number | Total objects matching filter |
|
|
173
|
-
| `LIMIT` | number | Requested limit |
|
|
174
|
-
| `OFFSET` | number | Requested offset |
|
|
175
|
-
| `OBJECTS` | array | List of objects [{TYPE, NAME}] |
|
|
176
|
-
| `BY_TYPE` | array | Object counts by type [{TYPE, COUNT}] |
|
|
177
|
-
| `ERROR` | string | Error message (empty if success) |
|
|
178
|
-
|
|
179
|
-
---
|
|
180
|
-
|
|
181
|
-
## Error Handling
|
|
182
|
-
|
|
183
|
-
| Error | Message |
|
|
184
|
-
|-------|---------|
|
|
185
|
-
| Package not specified | `Package parameter is required` |
|
|
186
|
-
| Package not found | `Package <name> does not exist` |
|
|
187
|
-
| Invalid type | `Invalid object type: <type>` |
|
|
188
|
-
| Limit too high | `Limit value too high (max: 1000)` |
|
|
189
|
-
|
|
190
|
-
### Error Output
|
|
191
|
-
|
|
192
|
-
```
|
|
193
|
-
❌ Package not found: $ZNONEXISTENT
|
|
194
|
-
|
|
195
|
-
Error: Package $ZNONEXISTENT does not exist in the system.
|
|
196
|
-
```
|
|
197
|
-
|
|
198
|
-
---
|
|
199
|
-
|
|
200
|
-
## Example
|
|
201
|
-
|
|
202
|
-
```bash
|
|
203
|
-
# List all objects
|
|
204
|
-
abapgit-agent list --package $ZMY_PACKAGE
|
|
205
|
-
|
|
206
|
-
# Filter by type
|
|
207
|
-
abapgit-agent list --package $ZMY_PACKAGE --type CLAS,INTF
|
|
208
|
-
|
|
209
|
-
# Filter by name pattern
|
|
210
|
-
abapgit-agent list --package $ZMY_PACKAGE --name ZCL_*
|
|
211
|
-
|
|
212
|
-
# Paginate
|
|
213
|
-
abapgit-agent list --package $ZMY_PACKAGE --limit 50 --offset 50
|
|
214
|
-
|
|
215
|
-
# JSON for scripting
|
|
216
|
-
abapgit-agent list --package $ZMY_PACKAGE --json > objects.json
|
|
217
|
-
|
|
218
|
-
# CI/CD: Count classes
|
|
219
|
-
CLASS_COUNT=$(abapgit-agent list --package $ZMY_PACKAGE --type CLAS --json | jq '.TOTAL')
|
|
220
|
-
echo "Package has $CLASS_COUNT classes"
|
|
221
|
-
```
|
|
222
|
-
|
|
223
|
-
---
|
|
224
|
-
|
|
225
|
-
## Implementation
|
|
226
|
-
|
|
227
|
-
### ABAP Tables Used
|
|
228
|
-
|
|
229
|
-
| Table | Purpose |
|
|
230
|
-
|-------|---------|
|
|
231
|
-
| **TDEVC** | Package definitions (validate package exists) |
|
|
232
|
-
| **TADIR** | Object directory (fetch objects in package) |
|
|
233
|
-
|
|
234
|
-
### Supported Object Types
|
|
235
|
-
|
|
236
|
-
| Type | Description |
|
|
237
|
-
|------|-------------|
|
|
238
|
-
| CLAS | Class |
|
|
239
|
-
| INTF | Interface |
|
|
240
|
-
| PROG | Program |
|
|
241
|
-
| FUGR | Function Group |
|
|
242
|
-
| TABL | Table |
|
|
243
|
-
| STRU | Structure |
|
|
244
|
-
| DTEL | Data Element |
|
|
245
|
-
| TTYP | Table Type |
|
|
246
|
-
| DDLS | CDS View |
|
|
247
|
-
| DDLX | CDS View Entity |
|
|
248
|
-
|
|
249
|
-
### Query Logic
|
|
250
|
-
|
|
251
|
-
```abap
|
|
252
|
-
" Validate package exists
|
|
253
|
-
SELECT SINGLE devclass FROM tdevc
|
|
254
|
-
INTO lv_package
|
|
255
|
-
WHERE devclass = iv_package.
|
|
256
|
-
|
|
257
|
-
" Get objects with filters
|
|
258
|
-
SELECT object obj_name FROM tadir
|
|
259
|
-
INTO TABLE lt_objects
|
|
260
|
-
WHERE devclass = iv_package
|
|
261
|
-
AND object IN lt_types
|
|
262
|
-
AND obj_name LIKE lv_name_pattern
|
|
263
|
-
ORDER BY object obj_name
|
|
264
|
-
LIMIT iv_limit
|
|
265
|
-
OFFSET iv_offset.
|
|
266
|
-
|
|
267
|
-
" Get counts by type (for summary)
|
|
268
|
-
SELECT object COUNT(*) AS count FROM tadir
|
|
269
|
-
INTO TABLE lt_counts
|
|
270
|
-
WHERE devclass = iv_package
|
|
271
|
-
AND object IN lt_types
|
|
272
|
-
GROUP BY object.
|
|
273
|
-
```
|
|
274
|
-
|
|
275
|
-
### Files to Create
|
|
276
|
-
|
|
277
|
-
| File | Description |
|
|
278
|
-
|------|-------------|
|
|
279
|
-
| `zcl_abgagt_command_list.clas.abap` | Command implementation |
|
|
280
|
-
| `zcl_abgagt_command_list.clas.xml` | Class metadata |
|
|
281
|
-
| `zcl_abgagt_resource_list.clas.abap` | REST resource handler |
|
|
282
|
-
| `zcl_abgagt_resource_list.clas.xml` | Resource metadata |
|
|
283
|
-
|
|
284
|
-
### Files to Modify
|
|
285
|
-
|
|
286
|
-
| File | Description |
|
|
287
|
-
|------|-------------|
|
|
288
|
-
| `zif_abgagt_command.intf.abap` | Add LIST constant |
|
|
289
|
-
| `zcl_abgagt_cmd_factory.clas.abap` | Add LIST command mapping |
|