Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
9 changes: 5 additions & 4 deletions AGENTS.md
Original file line number Diff line number Diff line change
Expand Up @@ -117,10 +117,11 @@ npm run check # pin + abaplint + abap2UI5-linter + overview + keywords +

Individually: `npm run lint` (abaplint), `npm run check:abap2ui5` (the app
class and the view it builds, including a headless render of every view),
`npm run check:overview` (the six consistency directions between the overview
app, the tree, `packages.json` and the two README tables — the package table
and the *Which package do I need?* decision table — plus the branch names the
overview tells a reader to pull when a package is not on the system).
`npm run check:overview` (the seven consistency directions between the overview
app, the tree, `packages.json` and the three README tables — the package table,
the *Which package do I need?* decision table and the branch table — plus the
branch names the overview tells a reader to pull when a package is not on the
system).

`npm run fmt:chains` applies the house chain layout. It rewrites whitespace
between chain segments only — but it needs the ABAP to be *balanced* to know
Expand Down
6 changes: 5 additions & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -223,6 +223,10 @@ overview app and nothing else:
| [`08-mime`](../../tree/08-mime) | [`src/08`](src/08) — MIME Play Audio | Standard only, ≥ 7.50 |
| [`09-launchpad`](../../tree/09-launchpad) | [`src/09`](src/09) — Launchpad | Cloud + Standard ≥ 7.40 SP08 |
| [`10-ai-llm`](../../tree/10-ai-llm) | [`src/10`](src/10) — AI / LLM | Cloud + Standard ≥ 7.40 SP08 |
| [`11-rap-file-upload`](../../tree/11-rap-file-upload) | [`src/11`](src/11) — RAP File Upload | Cloud + Standard ≥ 8.16 (2025) |
| [`12-rap-actions`](../../tree/12-rap-actions) | [`src/12`](src/12) — RAP Actions & Permissions | Cloud + Standard ≥ 8.16 (2025) |
| [`13-excel-email`](../../tree/13-excel-email) | [`src/13`](src/13) — Excel & E-Mail | Cloud + Standard ≥ 7.58 (2023) |
| [`14-adobe-forms`](../../tree/14-adobe-forms) | [`src/14`](src/14) — Adobe Forms | Standard only, ≥ 7.50 |

The overview app ships on every branch and keeps listing **every sample in the
repository**, so it stays the catalogue of what the other branches hold — the
Expand Down Expand Up @@ -286,7 +290,7 @@ in CI. The node checks carry no dependencies, so they take seconds.
|---|---|
| `abap-standard` | `abaplint ./abaplint.jsonc` — syntax `v757`, the on-premise release |
| `check-abap2UI5` | [`abap2ui5lint`](https://github.com/abap2UI5/linter) — the app class and the view it produces, together; also writes the two badges above |
| `check-overview` | the hand-kept indexes: every sample is listed in the overview app, the package table matches `.github/packages.json`, and the *Which package do I need?* table routes to every package |
| `check-overview` | the hand-kept indexes: every sample is listed in the overview app, the package table and the branch table match `.github/packages.json`, and the *Which package do I need?* table routes to every package |
| `check-samples-md` | [`SAMPLES.md`](SAMPLES.md) still is what the generator would write — and every app that exists is in an entry |
| `check-keywords` | every app carries `@keywords` and `@summary`, and the overview's detail line still is the class's `@summary` |
| `check-page-titles` | every sample's main page title starts with `abap2UI5 - ` |
Expand Down
31 changes: 30 additions & 1 deletion scripts/check-overview.mjs
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@
// documentation). The price is that the compiler no longer notices a renamed
// or a newly added sample - this check is what notices instead.
//
// Five directions:
// Seven directions:
// 1. every sample class in the tree is listed in the overview (always)
// 2. every class the overview names exists in the tree (full tree only)
// 3. every package of .github/packages.json is in the README
Expand All @@ -18,6 +18,9 @@
// every package exactly once (full tree only)
// 6. every package's branch name in the overview is the one
// .github/packages.json builds (always)
// 7. the README's branch table has one row per package, with the
// branch, the directory and the release packages.json
// declares (full tree only)
//
// (3) is the second index this repository keeps by hand: packages.json drives
// the generated per-package branches and the release each one is checked at,
Expand Down Expand Up @@ -186,6 +189,32 @@ if (complete) {
}
}

// (7) the branch table - "Pick one and you import that package". Same
// drift as (3): packages.json builds the branches, this table names them
// by hand, and it once listed ten of fourteen
const branchRows = readme.split('\n').filter((line) => /^\| \[`\d{2}-/.test(line));
for (const entry of packages) {
const head = `| [\`${entry.branch}\`](../../tree/${entry.branch}) | [\`src/${entry.dir}\`](src/${entry.dir}) `;
const matching = branchRows.filter((line) => line.startsWith(head));
if (matching.length !== 1) {
errors.push(
`README.md's branch table must have exactly one row for ${entry.branch} -> src/${entry.dir}, ` +
`found ${matching.length}`,
);
} else if (!matching[0].includes(`| ${entry.runsOn} |`)) {
errors.push(
`README.md branch table row for ${entry.branch} does not carry the release ` +
`.github/packages.json declares ("${entry.runsOn}")`,
);
}
}
for (const line of branchRows) {
const name = line.match(/^\| \[`([^`]+)`/)[1];
if (!packages.some((entry) => entry.branch === name)) {
errors.push(`README.md's branch table lists ${name}, which .github/packages.json does not build`);
}
}

// the decision table - "You want to ... -> package". Its rows start with the
// reader's goal, not with the directory, so they are found by the link they
// carry rather than by the row shape the package table above is found by
Expand Down
4 changes: 2 additions & 2 deletions src/05/01/z2ui5_cl_smps_evt_tck.clas.locals_imp.abap
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ ENDCLASS.
CLASS lhe_ticket IMPLEMENTATION.

METHOD on_ticket_created.
DATA lt_log TYPE STANDARD TABLE OF z2ui5_t_smps_log.
DATA lt_log TYPE STANDARD TABLE OF z2ui5_t_smps_log WITH EMPTY KEY.
DATA lv_now TYPE timestampl.

GET TIME STAMP FIELD lv_now.
Expand All @@ -36,7 +36,7 @@ CLASS lhe_ticket IMPLEMENTATION.
ENDMETHOD.

METHOD on_status_changed.
DATA lt_log TYPE STANDARD TABLE OF z2ui5_t_smps_log.
DATA lt_log TYPE STANDARD TABLE OF z2ui5_t_smps_log WITH EMPTY KEY.
DATA lv_now TYPE timestampl.

GET TIME STAMP FIELD lv_now.
Expand Down
Loading