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.
Files changed (117) hide show
  1. package/README.md +1 -0
  2. package/abap/guidelines/00_index.md +35 -0
  3. package/abap/guidelines/01_sql.md +72 -0
  4. package/abap/guidelines/02_exceptions.md +108 -0
  5. package/abap/guidelines/03_testing.md +252 -0
  6. package/abap/guidelines/04_cds.md +120 -0
  7. package/abap/guidelines/05_classes.md +50 -0
  8. package/abap/guidelines/06_objects.md +103 -0
  9. package/abap/guidelines/07_json.md +22 -0
  10. package/abap/guidelines/08_abapgit.md +193 -0
  11. package/bin/abapgit-agent +467 -30
  12. package/bin/abgagt +24 -0
  13. package/package.json +8 -2
  14. package/src/abap-client.js +65 -2
  15. package/src/agent.js +57 -3
  16. package/src/ref-search.js +989 -0
  17. package/.abapGitAgent.example +0 -11
  18. package/.github/workflows/release.yml +0 -60
  19. package/API.md +0 -710
  20. package/CLAUDE.md +0 -1058
  21. package/CLAUDE_MEM.md +0 -88
  22. package/ERROR_HANDLING.md +0 -30
  23. package/INSTALL.md +0 -155
  24. package/RELEASE_NOTES.md +0 -143
  25. package/abap/CLAUDE.md +0 -1010
  26. package/abap/copilot-instructions.md +0 -79
  27. package/abap/package.devc.xml +0 -10
  28. package/abap/zcl_abgagt_agent.clas.abap +0 -420
  29. package/abap/zcl_abgagt_agent.clas.xml +0 -15
  30. package/abap/zcl_abgagt_cmd_factory.clas.abap +0 -48
  31. package/abap/zcl_abgagt_cmd_factory.clas.xml +0 -15
  32. package/abap/zcl_abgagt_command_create.clas.abap +0 -95
  33. package/abap/zcl_abgagt_command_create.clas.xml +0 -15
  34. package/abap/zcl_abgagt_command_import.clas.abap +0 -138
  35. package/abap/zcl_abgagt_command_import.clas.xml +0 -15
  36. package/abap/zcl_abgagt_command_inspect.clas.abap +0 -456
  37. package/abap/zcl_abgagt_command_inspect.clas.testclasses.abap +0 -121
  38. package/abap/zcl_abgagt_command_inspect.clas.xml +0 -16
  39. package/abap/zcl_abgagt_command_preview.clas.abap +0 -386
  40. package/abap/zcl_abgagt_command_preview.clas.xml +0 -15
  41. package/abap/zcl_abgagt_command_pull.clas.abap +0 -80
  42. package/abap/zcl_abgagt_command_pull.clas.testclasses.abap +0 -87
  43. package/abap/zcl_abgagt_command_pull.clas.xml +0 -16
  44. package/abap/zcl_abgagt_command_tree.clas.abap +0 -237
  45. package/abap/zcl_abgagt_command_tree.clas.xml +0 -15
  46. package/abap/zcl_abgagt_command_unit.clas.abap +0 -297
  47. package/abap/zcl_abgagt_command_unit.clas.xml +0 -15
  48. package/abap/zcl_abgagt_command_view.clas.abap +0 -240
  49. package/abap/zcl_abgagt_command_view.clas.xml +0 -15
  50. package/abap/zcl_abgagt_resource_create.clas.abap +0 -71
  51. package/abap/zcl_abgagt_resource_create.clas.xml +0 -15
  52. package/abap/zcl_abgagt_resource_health.clas.abap +0 -25
  53. package/abap/zcl_abgagt_resource_health.clas.xml +0 -15
  54. package/abap/zcl_abgagt_resource_import.clas.abap +0 -66
  55. package/abap/zcl_abgagt_resource_import.clas.xml +0 -15
  56. package/abap/zcl_abgagt_resource_inspect.clas.abap +0 -63
  57. package/abap/zcl_abgagt_resource_inspect.clas.xml +0 -15
  58. package/abap/zcl_abgagt_resource_preview.clas.abap +0 -67
  59. package/abap/zcl_abgagt_resource_preview.clas.xml +0 -15
  60. package/abap/zcl_abgagt_resource_pull.clas.abap +0 -71
  61. package/abap/zcl_abgagt_resource_pull.clas.xml +0 -15
  62. package/abap/zcl_abgagt_resource_tree.clas.abap +0 -70
  63. package/abap/zcl_abgagt_resource_tree.clas.xml +0 -15
  64. package/abap/zcl_abgagt_resource_unit.clas.abap +0 -64
  65. package/abap/zcl_abgagt_resource_unit.clas.xml +0 -15
  66. package/abap/zcl_abgagt_resource_view.clas.abap +0 -68
  67. package/abap/zcl_abgagt_resource_view.clas.xml +0 -15
  68. package/abap/zcl_abgagt_rest_handler.clas.abap +0 -32
  69. package/abap/zcl_abgagt_rest_handler.clas.xml +0 -15
  70. package/abap/zcl_abgagt_util.clas.abap +0 -93
  71. package/abap/zcl_abgagt_util.clas.testclasses.abap +0 -84
  72. package/abap/zcl_abgagt_util.clas.xml +0 -16
  73. package/abap/zcl_abgagt_viewer_clas.clas.abap +0 -58
  74. package/abap/zcl_abgagt_viewer_clas.clas.xml +0 -15
  75. package/abap/zcl_abgagt_viewer_ddls.clas.abap +0 -83
  76. package/abap/zcl_abgagt_viewer_ddls.clas.xml +0 -15
  77. package/abap/zcl_abgagt_viewer_dtel.clas.abap +0 -98
  78. package/abap/zcl_abgagt_viewer_dtel.clas.xml +0 -15
  79. package/abap/zcl_abgagt_viewer_factory.clas.abap +0 -41
  80. package/abap/zcl_abgagt_viewer_factory.clas.xml +0 -15
  81. package/abap/zcl_abgagt_viewer_intf.clas.abap +0 -58
  82. package/abap/zcl_abgagt_viewer_intf.clas.xml +0 -15
  83. package/abap/zcl_abgagt_viewer_stru.clas.abap +0 -59
  84. package/abap/zcl_abgagt_viewer_stru.clas.xml +0 -15
  85. package/abap/zcl_abgagt_viewer_tabl.clas.abap +0 -59
  86. package/abap/zcl_abgagt_viewer_tabl.clas.xml +0 -15
  87. package/abap/zcl_abgagt_viewer_ttyp.clas.abap +0 -93
  88. package/abap/zcl_abgagt_viewer_ttyp.clas.xml +0 -15
  89. package/abap/zif_abgagt_agent.intf.abap +0 -53
  90. package/abap/zif_abgagt_agent.intf.xml +0 -15
  91. package/abap/zif_abgagt_cmd_factory.intf.abap +0 -7
  92. package/abap/zif_abgagt_cmd_factory.intf.xml +0 -15
  93. package/abap/zif_abgagt_command.intf.abap +0 -26
  94. package/abap/zif_abgagt_command.intf.xml +0 -15
  95. package/abap/zif_abgagt_util.intf.abap +0 -28
  96. package/abap/zif_abgagt_util.intf.xml +0 -15
  97. package/abap/zif_abgagt_viewer.intf.abap +0 -12
  98. package/abap/zif_abgagt_viewer.intf.xml +0 -15
  99. package/docs/commands.md +0 -142
  100. package/docs/create-command.md +0 -129
  101. package/docs/health-command.md +0 -89
  102. package/docs/import-command.md +0 -195
  103. package/docs/init-command.md +0 -189
  104. package/docs/inspect-command.md +0 -169
  105. package/docs/list-command.md +0 -289
  106. package/docs/preview-command.md +0 -528
  107. package/docs/pull-command.md +0 -202
  108. package/docs/status-command.md +0 -68
  109. package/docs/tree-command.md +0 -303
  110. package/docs/unit-command.md +0 -167
  111. package/docs/view-command.md +0 -501
  112. package/img/claude.png +0 -0
  113. package/scripts/claude-integration.js +0 -351
  114. package/scripts/release.js +0 -298
  115. package/scripts/release.sh +0 -60
  116. package/scripts/test-integration.js +0 -139
  117. package/scripts/unrelease.js +0 -277
@@ -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
@@ -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
- ```
@@ -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 |