abapgit-agent 1.7.1 → 1.8.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 (41) hide show
  1. package/.abapGitAgent.example +11 -0
  2. package/README.md +7 -7
  3. package/abap/.github/copilot-instructions.md +254 -0
  4. package/abap/CLAUDE.md +432 -0
  5. package/abap/guidelines/00_index.md +8 -0
  6. package/abap/guidelines/01_sql.md +8 -0
  7. package/abap/guidelines/02_exceptions.md +8 -0
  8. package/abap/guidelines/03_testing.md +8 -0
  9. package/abap/guidelines/04_cds.md +8 -0
  10. package/abap/guidelines/05_classes.md +8 -0
  11. package/abap/guidelines/06_objects.md +8 -0
  12. package/abap/guidelines/07_json.md +8 -0
  13. package/abap/guidelines/08_abapgit.md +8 -0
  14. package/abap/guidelines/09_unit_testable_code.md +8 -0
  15. package/bin/abapgit-agent +61 -2789
  16. package/package.json +25 -5
  17. package/src/agent.js +213 -20
  18. package/src/commands/create.js +102 -0
  19. package/src/commands/delete.js +72 -0
  20. package/src/commands/health.js +24 -0
  21. package/src/commands/help.js +111 -0
  22. package/src/commands/import.js +99 -0
  23. package/src/commands/init.js +321 -0
  24. package/src/commands/inspect.js +184 -0
  25. package/src/commands/list.js +143 -0
  26. package/src/commands/preview.js +277 -0
  27. package/src/commands/pull.js +278 -0
  28. package/src/commands/ref.js +96 -0
  29. package/src/commands/status.js +52 -0
  30. package/src/commands/syntax.js +290 -0
  31. package/src/commands/tree.js +209 -0
  32. package/src/commands/unit.js +133 -0
  33. package/src/commands/view.js +215 -0
  34. package/src/commands/where.js +138 -0
  35. package/src/config.js +11 -1
  36. package/src/utils/abap-http.js +347 -0
  37. package/src/{ref-search.js → utils/abap-reference.js} +119 -1
  38. package/src/utils/git-utils.js +58 -0
  39. package/src/utils/validators.js +72 -0
  40. package/src/utils/version-check.js +80 -0
  41. package/src/abap-client.js +0 -523
package/abap/CLAUDE.md ADDED
@@ -0,0 +1,432 @@
1
+ ---
2
+ layout: default
3
+ title: ABAP Project Guidelines
4
+ nav_order: 1
5
+ parent: ABAP Development
6
+ ---
7
+
8
+ # ABAP Project Guidelines - Template
9
+
10
+ This file provides guidelines for **generating ABAP code** in abapGit repositories.
11
+
12
+ **Use this file as a template**: Copy it to your ABAP repository root when setting up new projects with Claude Code.
13
+
14
+ ---
15
+
16
+ ## Critical Rules
17
+
18
+ ### 1. Use `ref` Command for Unfamiliar Topics
19
+
20
+ **When starting to work on ANY unfamiliar ABAP topic, syntax, or pattern, you MUST use the `ref` command BEFORE writing any code.**
21
+
22
+ ```
23
+ ❌ WRONG: Start writing code immediately based on assumptions
24
+ ✅ CORRECT: Run ref command first to look up the correct pattern
25
+ ```
26
+
27
+ **Why**: ABAP syntax is strict. Guessing leads to activation errors that waste time.
28
+
29
+ | Scenario | Example |
30
+ |----------|---------|
31
+ | Implementing new ABAP feature | "How do I use FILTER operator?" |
32
+ | Unfamiliar pattern | "What's the correct VALUE #() syntax?" |
33
+ | SQL operations | "How to write a proper SELECT with JOIN?" |
34
+ | CDS views | "How to define CDS view with associations?" |
35
+ | Getting syntax errors | Check reference before trying approaches |
36
+
37
+ ```bash
38
+ # For CDS topics
39
+ abapgit-agent ref --topic cds
40
+ abapgit-agent ref "CDS view"
41
+ abapgit-agent ref "association"
42
+ ```
43
+
44
+ ```bash
45
+ # Search for a pattern
46
+ abapgit-agent ref "CORRESPONDING"
47
+ abapgit-agent ref "FILTER #"
48
+
49
+ # Browse by topic
50
+ abapgit-agent ref --topic exceptions
51
+ abapgit-agent ref --topic sql
52
+
53
+ # List all topics
54
+ abapgit-agent ref --list-topics
55
+ ```
56
+
57
+ ### 2. Read `.abapGitAgent` for Folder Location
58
+
59
+ **Before creating ANY ABAP object file, you MUST read `.abapGitAgent` to determine the correct folder.**
60
+
61
+ ```
62
+ ❌ WRONG: Assume files go in "abap/" folder
63
+ ✅ CORRECT: Read .abapGitAgent to get the "folder" property value
64
+ ```
65
+
66
+ The folder is configured in `.abapGitAgent` (property: `folder`):
67
+ - If `folder` is `/src/` → files go in `src/` (e.g., `src/zcl_my_class.clas.abap`)
68
+ - If `folder` is `/abap/` → files go in `abap/` (e.g., `abap/zcl_my_class.clas.abap`)
69
+
70
+ ---
71
+
72
+ ### 3. Create XML Metadata for Each ABAP Object
73
+
74
+ **Each ABAP object requires an XML metadata file for abapGit to understand how to handle it.**
75
+
76
+ | Object Type | ABAP File (if folder=/src/) | XML File |
77
+ |-------------|------------------------------|----------|
78
+ | Class | `src/zcl_*.clas.abap` | `src/zcl_*.clas.xml` |
79
+ | Interface | `src/zif_*.intf.abap` | `src/zif_*.intf.xml` |
80
+ | Program | `src/z*.prog.abap` | `src/z*.prog.xml` |
81
+ | Table | `src/z*.tabl.abap` | `src/z*.tabl.xml` |
82
+ | CDS View | `src/zc_*.ddls.asddls` | `src/zc_*.ddls.xml` |
83
+
84
+ **Use `ref --topic abapgit` for complete XML templates.**
85
+
86
+ ---
87
+
88
+ ### 4. Use Syntax Command Before Commit (for CLAS, INTF, PROG)
89
+
90
+ ```
91
+ ❌ WRONG: Make changes → Commit → Push → Pull → Find errors → Fix → Repeat
92
+ ✅ CORRECT: Make changes → Run syntax → Fix locally → Commit → Push → Pull → Done
93
+ ```
94
+
95
+ **For CLAS, INTF, PROG files**: Run `syntax` command BEFORE commit to catch errors early.
96
+
97
+ ```bash
98
+ # Check syntax of local code (no commit/push needed)
99
+ abapgit-agent syntax --files src/zcl_my_class.clas.abap
100
+
101
+ # Check multiple INDEPENDENT files
102
+ abapgit-agent syntax --files src/zcl_utils.clas.abap,src/zcl_logger.clas.abap
103
+ ```
104
+
105
+ **For other types (DDLS, FUGR, TABL, etc.)**: Skip syntax, proceed to commit/push/pull.
106
+
107
+ **Why use syntax command?**
108
+ - Catches syntax errors BEFORE polluting git history with fix commits
109
+ - No broken inactive objects in ABAP system
110
+ - Faster feedback loop - fix locally without commit/push/pull cycle
111
+ - Works even for NEW objects that don't exist in ABAP system yet
112
+
113
+ **⚠️ Important: Syntax checks files independently**
114
+
115
+ When checking multiple files, each is validated in isolation:
116
+ - ✅ **Use for**: Multiple independent files (bug fixes, unrelated changes)
117
+ - ❌ **Don't use for**: Files with dependencies (interface + implementing class)
118
+
119
+ **For dependent files, skip `syntax` and use `pull` instead:**
120
+ ```bash
121
+ # ❌ BAD - Interface and implementing class (may show false errors)
122
+ abapgit-agent syntax --files src/zif_my_intf.intf.abap,src/zcl_my_class.clas.abap
123
+
124
+ # ✅ GOOD - Use pull instead for dependent files
125
+ git add . && git commit && git push
126
+ abapgit-agent pull --files src/zif_my_intf.intf.abap,src/zcl_my_class.clas.abap
127
+ ```
128
+
129
+ **Note**: `inspect` still runs against ABAP system (requires pull first). Use `syntax` for pre-commit checking.
130
+
131
+ ---
132
+
133
+ ### 5. Local Classes (Test Doubles, Helpers)
134
+
135
+ When a class needs local helper classes or test doubles, use separate files:
136
+
137
+ | File | Purpose |
138
+ |------|---------|
139
+ | `zcl_xxx.clas.locals_def.abap` | Local class definitions |
140
+ | `zcl_xxx.clas.locals_imp.abap` | Local class implementations |
141
+
142
+ **XML Configuration**: Add `<CLSCCINCL>X</CLSCCINCL>` to the class XML to include local class definitions:
143
+
144
+ ```xml
145
+ <VSEOCLASS>
146
+ <CLSNAME>ZCL_XXX</CLSNAME>
147
+ ...
148
+ <CLSCCINCL>X</CLSCCINCL>
149
+ </VSEOCLASS>
150
+ ```
151
+
152
+ ### 6. Use `ref`, `view` and `where` Commands to Learn About Unknown Classes/Methods
153
+
154
+ **When working with unfamiliar ABAP classes or methods, follow this priority:**
155
+
156
+ ```
157
+ 1. First: Check local git repo for usage examples
158
+ 2. Second: Check ABAP reference/cheat sheets
159
+ 3. Third: Use view/where commands to query ABAP system (if needed)
160
+ ```
161
+
162
+ #### Priority 1: Check Local Git Repository
163
+
164
+ **Look for usage examples in your local ABAP project first:**
165
+ - Search for class/interface names in your codebase
166
+ - Check how similar classes are implemented
167
+ - This gives the most relevant context for your project
168
+
169
+ #### Priority 2: Check ABAP References
170
+
171
+ ```bash
172
+ # Search in ABAP cheat sheets and guidelines
173
+ abapgit-agent ref "CLASS"
174
+ abapgit-agent ref "INTERFACE"
175
+ abapgit-agent ref --topic classes
176
+ ```
177
+
178
+ #### Priority 3: Use `where` and `view` Commands (Query ABAP System)
179
+
180
+ **If local/references don't have the answer, query the ABAP system:**
181
+
182
+ ```bash
183
+ # Find where a class/interface is USED (where command)
184
+ abapgit-agent where --objects ZIF_UNKNOWN_INTERFACE
185
+
186
+ # With pagination (default limit: 50, offset: 0)
187
+ abapgit-agent where --objects ZIF_UNKNOWN_INTERFACE --limit 20
188
+ abapgit-agent where --objects ZIF_UNKNOWN_INTERFACE --offset 50 --limit 20
189
+
190
+ # View CLASS DEFINITION (view command)
191
+ abapgit-agent view --objects ZCL_UNKNOWN_CLASS
192
+
193
+ # View specific METHOD implementation
194
+ abapgit-agent view --objects ZCL_UNKNOWN_CLASS=============CM001
195
+ ```
196
+
197
+ **Example workflow for AI:**
198
+ ```
199
+ User: "How do I use ZCL_ABGAGT_AGENT?"
200
+
201
+ AI thought process:
202
+ 1. Search local repo for ZCL_ABGAGT_AGENT usage
203
+ 2. Found: It's instantiated in several places with ->pull() method
204
+ 3. Still unclear about parameters? Check view command
205
+ 4. View: abapgit-agent view --objects ZCL_ABGAGT_AGENT
206
+ ```
207
+
208
+ **Key differences:**
209
+ - `where`: Shows WHERE an object is USED (references)
210
+ - `view`: Shows what an object DEFINES (structure, methods, source)
211
+
212
+ ---
213
+
214
+ ### 7. Use CDS Test Double Framework for CDS View Tests
215
+
216
+ **When creating unit tests for CDS views, use the CDS Test Double Framework (`CL_CDS_TEST_ENVIRONMENT`).**
217
+
218
+ ```
219
+ ❌ WRONG: Use regular AUnit test class without test doubles
220
+ ✅ CORRECT: Use CL_CDS_TEST_ENVIRONMENT to create test doubles for CDS views
221
+ ```
222
+
223
+ **Why**: CDS views read from database tables. Using test doubles allows:
224
+ - Injecting test data without affecting production data
225
+ - Testing specific scenarios that may not exist in production
226
+ - Fast, isolated tests that don't depend on database state
227
+
228
+ See `guidelines/03_testing.md` for code examples.
229
+
230
+ ---
231
+
232
+ ### 8. Use `unit` Command for Unit Tests
233
+
234
+ **Use `abapgit-agent unit` to run ABAP unit tests (AUnit).**
235
+
236
+ ```
237
+ ❌ WRONG: Try to use SE24, SE37, or other transaction codes
238
+ ✅ CORRECT: Use abapgit-agent unit --files src/zcl_test.clas.testclasses.abap
239
+ ```
240
+
241
+ ```bash
242
+ # Run unit tests (after pulling to ABAP)
243
+ abapgit-agent unit --files src/zcl_test.clas.testclasses.abap
244
+
245
+ # Multiple test classes
246
+ abapgit-agent unit --files src/zcl_test1.clas.testclasses.abap,src/zcl_test2.clas.testclasses.abap
247
+ ```
248
+
249
+ ---
250
+
251
+ ## Development Workflow
252
+
253
+ ```
254
+ 1. Read .abapGitAgent → get folder value
255
+
256
+
257
+ 2. Research → use ref command for unfamiliar topics
258
+
259
+
260
+ 3. Write code → place in correct folder (e.g., src/zcl_*.clas.abap)
261
+
262
+
263
+ 4. Syntax check (for CLAS, INTF, PROG only)
264
+
265
+ ├─► CLAS/INTF/PROG → abapgit-agent syntax --files <file>
266
+ │ │
267
+ │ ├─► Errors? → Fix locally (no commit needed), re-run syntax
268
+ │ │
269
+ │ └─► Clean ✅ → Proceed to commit
270
+
271
+ └─► Other types (DDLS, FUGR, TABL, etc.) → Skip syntax, go to commit
272
+
273
+
274
+ 5. Commit and push → git add . && git commit && git push
275
+
276
+
277
+ 6. Activate → abapgit-agent pull --files src/file.clas.abap
278
+
279
+
280
+ 7. Verify → Check pull output
281
+ - **"Error updating where-used list"** → SYNTAX ERROR (use inspect for details)
282
+ - Objects in "Failed Objects Log" → Syntax error (use inspect)
283
+ - Objects NOT appearing at all → XML metadata issue (check 08_abapgit.md)
284
+
285
+
286
+ 8. (Optional) Run unit tests → abapgit-agent unit --files <testclass> (AFTER successful pull)
287
+ ```
288
+
289
+ **Syntax Command - Supported Object Types:**
290
+
291
+ | Object Type | Syntax Command | What to Do |
292
+ |-------------|----------------|------------|
293
+ | CLAS (classes) | ✅ Supported | Run `syntax` before commit |
294
+ | CLAS (test classes: .testclasses.abap) | ✅ Supported | Run `syntax` before commit |
295
+ | INTF (interfaces) | ✅ Supported | Run `syntax` before commit |
296
+ | PROG (programs) | ✅ Supported | Run `syntax` before commit |
297
+ | DDLS (CDS views) | ❌ Not supported | Skip syntax, use `pull` then `inspect` |
298
+ | FUGR (function groups) | ❌ Not supported | Skip syntax, use `pull` then `inspect` |
299
+ | TABL/DTEL/DOMA/MSAG/SHLP | ❌ Not supported | Skip syntax, just `pull` |
300
+ | All other types | ❌ Not supported | Skip syntax, just `pull` |
301
+
302
+ **IMPORTANT**:
303
+ - **Use `syntax` BEFORE commit** for CLAS/INTF/PROG (including test classes) - catches errors early, no git pollution
304
+ - **Syntax checks files INDEPENDENTLY** - no cross-file dependency support (e.g., interface definition not available when checking implementing class)
305
+ - **For dependent files** (interface + class, class + using class): Skip `syntax`, use `pull` directly
306
+ - **ALWAYS push to git BEFORE running pull** - abapGit reads from git
307
+ - **Use `inspect` AFTER pull** for unsupported types or if pull fails
308
+
309
+ **Working with mixed file types:**
310
+ When modifying multiple files of different types (e.g., 1 class + 1 CDS view):
311
+ 1. Run `syntax` on supported files only (CLAS, INTF, PROG) - **only if they're independent**
312
+ 2. Commit ALL files together (including unsupported types)
313
+ 3. Push and pull ALL files together
314
+
315
+ Example:
316
+ ```bash
317
+ # Check syntax on independent class and interface only (skip CDS, skip if dependent)
318
+ abapgit-agent syntax --files src/zcl_my_class.clas.abap,src/zif_my_intf.intf.abap
319
+
320
+ # Commit and push all files including CDS
321
+ git add src/zcl_my_class.clas.abap src/zif_my_intf.intf.abap src/zc_my_view.ddls.asddls
322
+ git commit -m "feat: add class, interface, and CDS view"
323
+ git push
324
+
325
+ # Pull all files together
326
+ abapgit-agent pull --files src/zcl_my_class.clas.abap,src/zif_my_intf.intf.abap,src/zc_my_view.ddls.asddls
327
+ ```
328
+
329
+ **When to use syntax vs inspect vs view**:
330
+ - **syntax**: Check LOCAL code BEFORE commit (CLAS, INTF, PROG only)
331
+ - **inspect**: Check ACTIVATED code AFTER pull (all types, runs Code Inspector)
332
+ - **view**: Understand object STRUCTURE (not for debugging errors)
333
+
334
+ ### Quick Decision Tree for AI
335
+
336
+ **When user asks to modify/create ABAP code:**
337
+
338
+ ```
339
+ 1. Identify file extension(s) AND dependencies
340
+ ├─ .clas.abap or .clas.testclasses.abap → CLAS ✅ syntax supported (if independent)
341
+ ├─ .intf.abap → INTF ✅ syntax supported (if independent)
342
+ ├─ .prog.abap → PROG ✅ syntax supported
343
+ ├─ .ddls.asddls → DDLS ❌ syntax not supported
344
+ └─ All other extensions → ❌ syntax not supported
345
+
346
+ 2. Check for dependencies:
347
+ ├─ Interface + implementing class? → Dependencies exist
348
+ ├─ Class A uses class B? → Dependencies exist
349
+ ├─ New objects that don't exist in ABAP system? → Check if they depend on each other
350
+ └─ Unrelated bug fixes across files? → No dependencies
351
+
352
+ 3. For SUPPORTED types (CLAS/INTF/PROG):
353
+ ├─ Independent files → Run syntax → Fix errors → Commit → Push → Pull
354
+ └─ Dependent files → Skip syntax → Commit → Push → Pull
355
+
356
+ 4. For UNSUPPORTED types (DDLS, FUGR, TABL, etc.):
357
+ Write code → Skip syntax → Commit → Push → Pull → (if errors: inspect)
358
+
359
+ 5. For MIXED types (some supported + some unsupported):
360
+ Write all code → Run syntax on independent supported files ONLY → Commit ALL → Push → Pull ALL
361
+ ```
362
+
363
+ **Error indicators after pull:**
364
+ - ❌ **"Error updating where-used list"** → SYNTAX ERROR - run `inspect` for details
365
+ - ❌ **Objects in "Failed Objects Log"** → SYNTAX ERROR - run `inspect`
366
+ - ❌ **Objects NOT appearing at all** → XML metadata issue (check `ref --topic abapgit`)
367
+ - ⚠️ **"Activated with warnings"** → Code Inspector warnings - run `inspect` to see details
368
+
369
+ ### Commands
370
+
371
+ ```bash
372
+ # 1. Syntax check LOCAL code BEFORE commit (CLAS, INTF, PROG only)
373
+ abapgit-agent syntax --files src/zcl_my_class.clas.abap
374
+ abapgit-agent syntax --files src/zcl_class1.clas.abap,src/zif_intf1.intf.abap
375
+
376
+ # 2. Pull/activate AFTER pushing to git
377
+ abapgit-agent pull --files src/zcl_class1.clas.abap,src/zcl_class2.clas.abap
378
+
379
+ # 3. Inspect AFTER pull (for errors or unsupported types)
380
+ abapgit-agent inspect --files src/zcl_class1.clas.abap
381
+
382
+ # Run unit tests (after successful pull)
383
+ abapgit-agent unit --files src/zcl_test1.clas.testclasses.abap,src/zcl_test2.clas.testclasses.abap
384
+
385
+ # View object definitions (multiple objects)
386
+ abapgit-agent view --objects ZCL_CLASS1,ZCL_CLASS2,ZIF_INTERFACE
387
+
388
+ # Preview table data (multiple tables/views)
389
+ abapgit-agent preview --objects ZTABLE1,ZTABLE2
390
+
391
+ # Explore table structures
392
+ abapgit-agent view --objects ZTABLE --type TABL
393
+
394
+ # Display package tree
395
+ abapgit-agent tree --package \$MY_PACKAGE
396
+ ```
397
+
398
+ ---
399
+
400
+ ## Guidelines Index
401
+
402
+ Detailed guidelines are available in the `guidelines/` folder:
403
+
404
+ | File | Topic |
405
+ |------|-------|
406
+ | `guidelines/01_sql.md` | ABAP SQL Best Practices |
407
+ | `guidelines/02_exceptions.md` | Exception Handling |
408
+ | `guidelines/03_testing.md` | Unit Testing (including CDS) |
409
+ | `guidelines/04_cds.md` | CDS Views |
410
+ | `guidelines/05_classes.md` | ABAP Classes and Objects |
411
+ | `guidelines/06_objects.md` | Object Naming Conventions |
412
+ | `guidelines/07_json.md` | JSON Handling |
413
+ | `guidelines/08_abapgit.md` | abapGit XML Metadata Templates |
414
+
415
+ These guidelines are automatically searched by the `ref` command.
416
+
417
+ ---
418
+
419
+ ## Custom Guidelines
420
+
421
+ You can add your own guidelines:
422
+
423
+ 1. Create `.md` files in `guidelines/` folder
424
+ 2. Export to reference folder: `abapgit-agent ref export`
425
+ 3. The `ref` command will search both cheat sheets and your custom guidelines
426
+
427
+ ---
428
+
429
+ ## For More Information
430
+
431
+ - [SAP ABAP Cheat Sheets](https://github.com/SAP-samples/abap-cheat-sheets)
432
+ - [ABAP Keyword Documentation](https://help.sap.com/doc/abapdocu_cp_index_htm/CLOUD/en-US/index.htm)
@@ -1,3 +1,11 @@
1
+ ---
2
+ layout: default
3
+ title: Overview
4
+ nav_order: 1
5
+ parent: ABAP Coding Guidelines
6
+ grand_parent: ABAP Development
7
+ ---
8
+
1
9
  # ABAP Coding Guidelines Index
2
10
 
3
11
  This folder contains detailed ABAP coding guidelines that can be searched using the `ref` command.
@@ -1,3 +1,11 @@
1
+ ---
2
+ layout: default
3
+ title: SQL Best Practices
4
+ nav_order: 2
5
+ parent: ABAP Coding Guidelines
6
+ grand_parent: ABAP Development
7
+ ---
8
+
1
9
  # ABAP SQL Best Practices
2
10
 
3
11
  **Searchable keywords**: SELECT, FROM, WHERE, ABAP SQL, Open SQL, host variable, @ prefix, range table, INTO, UP TO, OFFSET, GROUP BY, JOIN
@@ -1,3 +1,11 @@
1
+ ---
2
+ layout: default
3
+ title: Exception Handling
4
+ nav_order: 3
5
+ parent: ABAP Coding Guidelines
6
+ grand_parent: ABAP Development
7
+ ---
8
+
1
9
  # Exception Handling - Classical vs Class-Based
2
10
 
3
11
  **Searchable keywords**: exception, RAISING, TRY, CATCH, cx_static_check, cx_dynamic_check, EXCEPTIONS, sy-subrc, class-based exception, classical exception
@@ -1,3 +1,11 @@
1
+ ---
2
+ layout: default
3
+ title: Unit Testing
4
+ nav_order: 4
5
+ parent: ABAP Coding Guidelines
6
+ grand_parent: ABAP Development
7
+ ---
8
+
1
9
  # Unit Testing
2
10
 
3
11
  **Searchable keywords**: unit test, AUnit, test class, cl_abap_unit_assert, FOR TESTING, setup, teardown, RISK LEVEL, DURATION, CDS test double, CL_CDS_TEST_ENVIRONMENT
@@ -1,3 +1,11 @@
1
+ ---
2
+ layout: default
3
+ title: CDS Views
4
+ nav_order: 5
5
+ parent: ABAP Coding Guidelines
6
+ grand_parent: ABAP Development
7
+ ---
8
+
1
9
  # Creating CDS Views
2
10
 
3
11
  **Searchable keywords**: CDS, DDL, DDLS, CDS view, @AbapCatalog, @AccessControl, association, projection, consumption
@@ -1,3 +1,11 @@
1
+ ---
2
+ layout: default
3
+ title: Classes & Objects
4
+ nav_order: 6
5
+ parent: ABAP Coding Guidelines
6
+ grand_parent: ABAP Development
7
+ ---
8
+
1
9
  # ABAP Classes and Objects
2
10
 
3
11
  **Searchable keywords**: CLASS, DEFINITION, PUBLIC, CREATE OBJECT, NEW, METHOD, INTERFACES, inheritance, FINAL, ABSTRACT
@@ -1,3 +1,11 @@
1
+ ---
2
+ layout: default
3
+ title: Naming Conventions
4
+ nav_order: 7
5
+ parent: ABAP Coding Guidelines
6
+ grand_parent: ABAP Development
7
+ ---
8
+
1
9
  # ABAP Object Naming Conventions
2
10
 
3
11
  **Searchable keywords**: naming convention, Z prefix, namespace, object type, CLAS, INTF, PROG, TABL, DDLS
@@ -1,3 +1,11 @@
1
+ ---
2
+ layout: default
3
+ title: JSON Handling
4
+ nav_order: 8
5
+ parent: ABAP Coding Guidelines
6
+ grand_parent: ABAP Development
7
+ ---
8
+
1
9
  # JSON Handling
2
10
 
3
11
  **Searchable keywords**: JSON, serialize, deserialize, /ui2/cl_json, REST API, API response
@@ -1,3 +1,11 @@
1
+ ---
2
+ layout: default
3
+ title: abapGit XML Metadata
4
+ nav_order: 9
5
+ parent: ABAP Coding Guidelines
6
+ grand_parent: ABAP Development
7
+ ---
8
+
1
9
  # abapGit Object XML Metadata
2
10
 
3
11
  Each ABAP object requires an XML metadata file for abapGit to understand how to serialize/deserialize it. This guide provides templates for common object types.
@@ -1,3 +1,11 @@
1
+ ---
2
+ layout: default
3
+ title: Unit Testable Code
4
+ nav_order: 10
5
+ parent: ABAP Coding Guidelines
6
+ grand_parent: ABAP Development
7
+ ---
8
+
1
9
  # ABAP Unit Testable Code Guidelines
2
10
 
3
11
  This document provides guidelines for creating ABAP OO classes/interfaces that can be easily unit tested with test doubles. These guidelines help AI coding tools understand how to design classes that are testable without requiring real dependencies.