@mcp-abap-adt/interfaces-adt 23.1.1 → 24.0.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/CHANGELOG.md CHANGED
@@ -7,6 +7,51 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
7
7
 
8
8
  ## [Unreleased]
9
9
 
10
+ ## [24.0.0] - 2026-10-29
11
+
12
+ ### Breaking
13
+
14
+ - **The search filter takes the release's search names, not a code.**
15
+ `ISearchObjectsParams.objectType` was `AdtTypeCode`; it is `AdtSearchType`,
16
+ the names of the quick search's object types list. A code no longer
17
+ compiles as a filter: on S/4HANA 2025 and ABAP cloud a code that is no
18
+ list item's `type` selects as the text before its `/` (`ENHO/XHH` answers
19
+ as `ENHO`, with other first hits under `maxResults`) and an unknown one
20
+ answers nothing, silently (measured 2026-10-29).
21
+ - **`IAdtCodeFacts.main` is required.** Every code of a table checked against
22
+ `AdtApiTable<R>` states its main type, and `AdtCheckedTable<T>` requires it
23
+ to be its own key's (`AdtMainTypeOf`).
24
+
25
+ ### Added
26
+
27
+ - **Main types.** Every code entry of `ADT_TYPES_ONPREM`, `ADT_TYPES_CLOUD`
28
+ and `ADT_TYPES_BASIS_740` states its main type, the TADIR object type of
29
+ `R3TR <type>`: `'ENHO/XHH': { main: 'ENHO', … }` — a missing or a wrong one
30
+ does not compile, per key. **`AdtMainTypeOf<C>`**, **`AdtMainType`**,
31
+ **`AdtMainTypeOfVariant<V>`** and **`CodesOfMain<M>`** (a code with no `/`,
32
+ `AUTH`, is its own). A main type is not an address: every parameter that
33
+ builds one keeps taking a code.
34
+ - **Search names.** `ADT_SEARCH_TYPES_ONPREM` (385 names) and
35
+ `ADT_SEARCH_TYPES_CLOUD` (372), written from the recorded
36
+ `/sap/bc/adt/repository/informationsystem/objecttypes` lists — each name
37
+ with the code it selects (`type`: `STRU` → `TABL/DS`) or `group: true`
38
+ (`ABAP_TEST_COCKPIT`); `ADT_SEARCH_TYPES_BASIS_740`, the eleven names
39
+ measured to select on 7.40, which has no list (`404`) and answers its
40
+ aliases (`STRU`, `DTAB`, `REPO`, `INCL`, `BADI`) and unknown names with no
41
+ hits, silently. **`AdtSearchType`**, **`AdtSearchTypeOf<V>`**
42
+ (intersecting), **`IAdtSearchObjectsParamsOf<V>`**, and the shapes
43
+ `AdtSearchTypeTable`, `AdtListedSearchType`, `IAdtMeasuredSearchType`,
44
+ `AdtSearchTypeEvidence`, `IAdtSearchTypeTables`. Every main type of a
45
+ variant's table is a search name of that variant (recorded).
46
+
47
+ ### Migration
48
+
49
+ - Where a code was passed as the search filter, pass the search name: the
50
+ main type from the table entry's `main`
51
+ (`ADT_TYPES_ONPREM.package.codes['DEVC/K'].main`), or the alias of a
52
+ subtype (`STRU` for `TABL/DS`).
53
+ - A table built against `AdtApiTable` carries `main` on every code.
54
+
10
55
  ## [23.1.1] - 2026-10-29
11
56
 
12
57
  ### Fixed
package/README.md CHANGED
@@ -71,7 +71,8 @@ code serves two APIs (`CLAS/OC`: `class` and `behaviorImplementation`;
71
71
  two APIs on one code share it;
72
72
  - `collection` — the ADT collection its resource lives in, the parent's for an
73
73
  API addressed under a parent;
74
- - `codes` — for each code: `parent` (the parent API, or `null`),
74
+ - `codes` — for each code: `main` (its main type, below), `parent` (the
75
+ parent API, or `null`),
75
76
  `nameMaxLength`, `operations` and `evidence`, the corpus case of the
76
77
  release's `typestructure` answer that lists the code
77
78
  (`system-description-basis-740--07-typestructure`); and, where a code lives
@@ -126,6 +127,10 @@ evidence at compile time.
126
127
  | `AdtObjectKind` | every kind |
127
128
  | `AdtSourceTypeCode` | the codes with `source` |
128
129
  | `AdtParentedTypeCode` | the codes with a parent API: `FUGR/FF`, `FUGR/I` |
130
+ | `AdtMainTypeOf<C>` | the main type of code `C`: `'ENHO'` of `'ENHO/XHH'` |
131
+ | `AdtMainType` | every main type of any table (`AdtMainTypeOfVariant<V>` per variant) |
132
+ | `CodesOfMain<M>` | the codes of main type `M` |
133
+ | `AdtSearchType` | every search name of any release's list (`AdtSearchTypeOf<V>` the names every variant of `V` takes) |
129
134
 
130
135
  A map a consumer keeps over the codes is typed by them, and the compiler then
131
136
  asks for every code and refuses any other:
@@ -173,6 +178,48 @@ when `[C] extends [AdtParentedTypeCode]` — `IObjectReference<'FUGR/FF'>` —
173
178
  and leaves it optional otherwise, the default included, so a reference built
174
179
  from a code typed `AdtTypeCode` compiles and an interface can extend it.
175
180
 
181
+ ### Main types and search names (24.0.0)
182
+
183
+ A code's **main type** is its TADIR object type, the `R3TR <type>` before the
184
+ `/`: `ENHO` of `ENHO/XHH`, `DEVC` of `DEVC/K`, `TABL` of `TABL/DS`. Every code
185
+ entry states its own as `main`; the table's `satisfies` refuses an entry
186
+ without one, and `AdtCheckedTable<T>` one whose `main` is not its own key's
187
+ (per key: the main type of a neighbouring code is refused too).
188
+ `AdtMainTypeOf<C>` is the main type of a code, `CodesOfMain<M>` the codes of a
189
+ main type (`CodesOfMain<'ENHO'>` is `'ENHO/XHB' | 'ENHO/XHH'`),
190
+ `AdtMainType` every main type of any table and `AdtMainTypeOfVariant<V>` a
191
+ variant's. **A main type is not an address:** `TABL` is `TABL/DT` or
192
+ `TABL/DS`, and every parameter that builds an address — read, write,
193
+ metadata, a URI, where-used, the group operations — takes a code.
194
+
195
+ **The search filter takes the release's search names.**
196
+ `ISearchObjectsParams.objectType` is an `AdtSearchType`: a name of the quick
197
+ search's object types list
198
+ (`/sap/bc/adt/repository/informationsystem/objecttypes`), held per variant in
199
+ `ADT_SEARCH_TYPES_ONPREM`, `ADT_SEARCH_TYPES_CLOUD` (written from the recorded
200
+ lists: each name with the code it selects, `type`, or `group: true`) and
201
+ `ADT_SEARCH_TYPES_BASIS_740`; `IAdtSearchObjectsParamsOf<V>` takes only the
202
+ names every variant of `V` takes (`AdtSearchTypeOf<V>`). Measured
203
+ 2026-10-29, read only:
204
+
205
+ - on S/4HANA 2025 and ABAP cloud, identically, a name selects what the list
206
+ says — `STRU` only `TABL/DS`, `DTAB` only `TABL/DT`, `TABL` both, a group
207
+ (`ABAP_TEST_COCKPIT`) its members — and an unknown name is refused `400`;
208
+ - a code is no filter value: one equal to an item's `type` selects as that
209
+ item, any other as the text before its `/` (`ENHO/XHH` answers as `ENHO`,
210
+ with other first hits under `maxResults`), and an unknown code answers
211
+ nothing, silently;
212
+ - SAP_BASIS 7.40 has no list (`404`); `DEVC`, `CLAS`, `INTF`, `PROG`, `FUGR`,
213
+ `FUNC`, `DDLS`, `MSAG`, `TABL`, `ENHO` and `ENHS` select there, and the
214
+ aliases (`STRU`, `DTAB`, `REPO`, `INCL`, `BADI`) and an unknown name answer
215
+ no hits, silently.
216
+
217
+ Every main type of a variant's table is a search name of that variant
218
+ (`src/__typechecks__/mainTypes.ts`), so a search for a code's objects sends
219
+ its entry's `main` (`ADT_TYPES_ONPREM.package.codes['DEVC/K'].main`), and a
220
+ subtype with an alias its alias (`STRU`). A subtype without one (`ENHO/XHH`)
221
+ cannot be searched alone: the caller filters the hits.
222
+
176
223
  ### Intersections, group-only codes and group references (22.0.0)
177
224
 
178
225
  **A union of variants.** `AdtTypeCodeOf<V>`, `AdtTypeCodeWith<V, Op>` and
@@ -338,6 +385,18 @@ The field is on each member's own options, not on `IAdtAnalyseOptions` or
338
385
  `IAdtOperationOptions`. `src/__typechecks__/headersOnEveryMember.ts` holds this
339
386
  for every member and every overload.
340
387
 
388
+ ## Migrating to 24.0.0
389
+
390
+ - **The search filter takes a search name, not a code.**
391
+ `ISearchObjectsParams.objectType` was `AdtTypeCode`; it is `AdtSearchType`.
392
+ Where a code was passed, pass the search name: the main type from the table
393
+ entry's `main` (`ADT_TYPES_ONPREM.package.codes['DEVC/K'].main`, `'DEVC'`),
394
+ or the alias of a subtype (`'STRU'` for `TABL/DS`, `'DTAB'` for `TABL/DT`).
395
+ A code passed before selected as its main type, unless it was an item's own
396
+ `type`, so the main type keeps what such a search answered.
397
+ - **A table built against `AdtApiTable` carries `main` on every code**, equal
398
+ to `AdtMainTypeOf` of the code (`'ENHO'` for `'ENHO/XHH'`).
399
+
341
400
  ## Migrating to 23.0.4
342
401
 
343
402
  - **A results set for a function group adds `updated`.** `IFunctionGroupResults`