From e8bcdc2eb6708c51df389df6921ee215eea08678 Mon Sep 17 00:00:00 2001 From: Claude Date: Fri, 21 Aug 2026 10:23:59 +0000 Subject: [PATCH 1/3] Point 011 and 070 back at pages that exist, and stop a comment saying "two-way" MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit #796 moved the two `" @docs` lines to walkthrough steps 8 to 10, on the expectation that abap2UI5/docs#171 would create them. Docs took a different route: the walkthrough ends at step 8 (App Structure), and `get_started/full_example` - the page #796 dropped - is still there and still declares both classes in its `samples:` frontmatter. So both sides were red. The links now say what is actually published: - 011 -> `get_started/full_example`, `cookbook/model/tables` - 070 -> the same two plus `tutorials/walkthrough/step-8`, whose frontmatter names 070 `check:docs-links` here and `check:samples` in abap2UI5/docs are both green again, and SAMPLES.md is regenerated. Two more, unrelated: - 448's comment called `_bind( )` a "two-way binding", which AGENTS.md §2 asks nobody to do - in comments as much as in titles. - `generate-samples-md.mjs` said "three classes in src/00/98 ... are data objects". There are two, and the file already renders the count from `dataObjects` a few lines down, so the comment now points at that instead of repeating a number that goes stale. Co-Authored-By: Claude Opus 5 Claude-Session: https://claude.ai/code/session_01XJBaqq5cFVUVMGr1BQvSVC --- SAMPLES.md | 4 ++-- scripts/generate-samples-md.mjs | 6 ++++-- src/01/z2ui5_cl_smp_app_011.clas.abap | 2 +- src/01/z2ui5_cl_smp_app_070.clas.abap | 2 +- src/01/z2ui5_cl_smp_app_448.clas.abap | 2 +- 5 files changed, 9 insertions(+), 7 deletions(-) diff --git a/SAMPLES.md b/SAMPLES.md index 8ee02f97..40c3a6f8 100644 --- a/SAMPLES.md +++ b/SAMPLES.md @@ -138,7 +138,7 @@ ready-to-run apps** the README leads with. | Sample | Class | |---|---| | Events on Cell Level
Events on cell level in a grid table: which row and which column the user was in, and what arrives in the backend.
cell enter row index event grid alv
docs: [cookbook/model/tables](https://abap2ui5.github.io/docs/cookbook/model/tables) | [`Z2UI5_CL_SMP_APP_160`](src/01/z2ui5_cl_smp_app_160.clas.abap) | -| Full Example with sap.ui.table
The full sap.ui.table example: a DynamicPage with search, sort, filter, currency columns and row actions - the closest thing here to a finished ALV.
grid alv dynamicpage column row action currency search sort filter
docs: [cookbook/model/tables](https://abap2ui5.github.io/docs/cookbook/model/tables), [tutorials/walkthrough/step-9](https://abap2ui5.github.io/docs/tutorials/walkthrough/step-9), [tutorials/walkthrough/step-10](https://abap2ui5.github.io/docs/tutorials/walkthrough/step-10) | [`Z2UI5_CL_SMP_APP_070`](src/01/z2ui5_cl_smp_app_070.clas.abap) | +| Full Example with sap.ui.table
The full sap.ui.table example: a DynamicPage with search, sort, filter, currency columns and row actions - the closest thing here to a finished ALV.
grid alv dynamicpage column row action currency search sort filter
docs: [get_started/full_example](https://abap2ui5.github.io/docs/get_started/full_example), [cookbook/model/tables](https://abap2ui5.github.io/docs/cookbook/model/tables), [tutorials/walkthrough/step-8](https://abap2ui5.github.io/docs/tutorials/walkthrough/step-8) | [`Z2UI5_CL_SMP_APP_070`](src/01/z2ui5_cl_smp_app_070.clas.abap) | | Keep Column Filters on Refresh (C)
Keeps the active sap.ui.table column filters across a view model update, through the abap2UI5 uitableext custom control - without it they are reset.
column filter reset refresh uitableext grid alv
docs: [cookbook/model/tables](https://abap2ui5.github.io/docs/cookbook/model/tables) | [`Z2UI5_CL_SMP_APP_143`](src/01/z2ui5_cl_smp_app_143.clas.abap) | ### List @@ -218,7 +218,7 @@ ready-to-run apps** the README leads with. | Sample | Class | |---|---| | Drag and Drop Rows (A)
Drag and drop of table rows (DragDropInfo), and how the new order reaches the internal table.
dnd dragdropinfo reorder rows move
docs: [cookbook/model/tables](https://abap2ui5.github.io/docs/cookbook/model/tables) | [`Z2UI5_CL_SMP_APP_459`](src/01/z2ui5_cl_smp_app_459.clas.abap) | -| Editable Cells, Add and Delete Rows
An editable table: input cells, adding and deleting rows, multi-select and a toolbar over them.
edit input add row delete multiselect toolbar
docs: [cookbook/model/tables](https://abap2ui5.github.io/docs/cookbook/model/tables), [tutorials/walkthrough/step-8](https://abap2ui5.github.io/docs/tutorials/walkthrough/step-8), [tutorials/walkthrough/step-10](https://abap2ui5.github.io/docs/tutorials/walkthrough/step-10) | [`Z2UI5_CL_SMP_APP_011`](src/01/z2ui5_cl_smp_app_011.clas.abap) | +| Editable Cells, Add and Delete Rows
An editable table: input cells, adding and deleting rows, multi-select and a toolbar over them.
edit input add row delete multiselect toolbar
docs: [get_started/full_example](https://abap2ui5.github.io/docs/get_started/full_example), [cookbook/model/tables](https://abap2ui5.github.io/docs/cookbook/model/tables) | [`Z2UI5_CL_SMP_APP_011`](src/01/z2ui5_cl_smp_app_011.clas.abap) | | Filter Rows in the Backend
Filters table rows in the BACKEND from a form above it, so the WHERE runs where the data is.
filter server side form growing where
docs: [cookbook/model/tables](https://abap2ui5.github.io/docs/cookbook/model/tables) | [`Z2UI5_CL_SMP_APP_045`](src/01/z2ui5_cl_smp_app_045.clas.abap) | | Large Table with Growing and ScrollContainer
10.000 rows in one table: growing, a sticky toolbar and sorting - and what that costs on the way to the browser.
growing 10000 rows sticky toolbar sort performance
docs: [cookbook/model/tables](https://abap2ui5.github.io/docs/cookbook/model/tables) | [`Z2UI5_CL_SMP_APP_006`](src/01/z2ui5_cl_smp_app_006.clas.abap) | | Live Search with Parallel Requests
Two SearchFields that round-trip on every keystroke on purpose - to show what that does: requests overtaking each other, the busy queue, the value lagging behind fast typing.
live search parallel requests busy queue typing
docs: [cookbook/model/tables](https://abap2ui5.github.io/docs/cookbook/model/tables) | [`Z2UI5_CL_SMP_APP_059`](src/01/z2ui5_cl_smp_app_059.clas.abap) | diff --git a/scripts/generate-samples-md.mjs b/scripts/generate-samples-md.mjs index 607ebc2c..a063bd8e 100644 --- a/scripts/generate-samples-md.mjs +++ b/scripts/generate-samples-md.mjs @@ -94,8 +94,10 @@ const system = areas['00']; const total = basics.length + system.length + hidden.length; /* How many APPS are here, which is a different question from how many classes - * match the sample naming scheme: three classes in src/00/98 carry the name and - * are data objects. The `isApp` flag comes from the source (scan-samples.mjs). + * match the sample naming scheme: a few classes in src/00/98 carry the name and + * are data objects, not apps. The `isApp` flag comes from the source + * (lib/scan-samples.mjs), and the count is rendered as `dataObjects` below + * rather than written out here, where it would go stale. * * PORTABLE is the number the README leads with, and the one worth stating: the * apps that survive every build, so they are what a reader gets whichever diff --git a/src/01/z2ui5_cl_smp_app_011.clas.abap b/src/01/z2ui5_cl_smp_app_011.clas.abap index e19e2a2b..8310c2fe 100644 --- a/src/01/z2ui5_cl_smp_app_011.clas.abap +++ b/src/01/z2ui5_cl_smp_app_011.clas.abap @@ -1,6 +1,6 @@ " @keywords edit input add row delete multiselect toolbar " @summary An editable table: input cells, adding and deleting rows, multi-select and a toolbar over them. -" @docs https://abap2ui5.github.io/docs/cookbook/model/tables https://abap2ui5.github.io/docs/tutorials/walkthrough/step-8 https://abap2ui5.github.io/docs/tutorials/walkthrough/step-10 +" @docs https://abap2ui5.github.io/docs/get_started/full_example https://abap2ui5.github.io/docs/cookbook/model/tables CLASS z2ui5_cl_smp_app_011 DEFINITION PUBLIC. PUBLIC SECTION. diff --git a/src/01/z2ui5_cl_smp_app_070.clas.abap b/src/01/z2ui5_cl_smp_app_070.clas.abap index d5eaba23..e791bd90 100644 --- a/src/01/z2ui5_cl_smp_app_070.clas.abap +++ b/src/01/z2ui5_cl_smp_app_070.clas.abap @@ -1,6 +1,6 @@ " @keywords grid alv dynamicpage column row action currency search sort filter " @summary The full sap.ui.table example: a DynamicPage with search, sort, filter, currency columns and row actions - the closest thing here to a finished ALV. -" @docs https://abap2ui5.github.io/docs/cookbook/model/tables https://abap2ui5.github.io/docs/tutorials/walkthrough/step-9 https://abap2ui5.github.io/docs/tutorials/walkthrough/step-10 +" @docs https://abap2ui5.github.io/docs/get_started/full_example https://abap2ui5.github.io/docs/cookbook/model/tables https://abap2ui5.github.io/docs/tutorials/walkthrough/step-8 CLASS z2ui5_cl_smp_app_070 DEFINITION PUBLIC. PUBLIC SECTION. diff --git a/src/01/z2ui5_cl_smp_app_448.clas.abap b/src/01/z2ui5_cl_smp_app_448.clas.abap index cd3db249..d7d5397c 100644 --- a/src/01/z2ui5_cl_smp_app_448.clas.abap +++ b/src/01/z2ui5_cl_smp_app_448.clas.abap @@ -42,7 +42,7 @@ CLASS z2ui5_cl_smp_app_448 IMPLEMENTATION. " t_arg is positional: id, method, params (the view defaults to " cs_view-main and can be omitted for a main-view control) expanded = xsdbool( expanded = abap_false ). - " Driving a property through control_by_id IS this sample; the two-way + " Driving a property through control_by_id IS this sample; the plain " binding the rule recommends is what app 449 shows instead. " abap2ui5lint-disable settable-property-via-action client->follow_up_action( val = z2ui5_if_client=>cs_event-control_by_id From 1681378aadcfc3138163e74d4fd4c97e2d1d53b0 Mon Sep 17 00:00:00 2001 From: Claude Date: Fri, 21 Aug 2026 10:39:02 +0000 Subject: [PATCH 2/3] AGENTS.md pointed at cs_event-history_back, which 1.143.0 removed The client-API table told an agent that "history back rides `follow_up_action( cs_event-history_back )`". That constant is gone from `z2ui5_if_client` since 1.143.0 - the release this repository pins - so code written from that line does not compile. Nothing caught it: check:prose resolves class NAMES, not constants. Replaced with what app 322 in this repository actually does (the raw `history.back()` handed to `follow_up_action( )`), plus `nav_app_leave( )` for going back inside the app, and the routing entry spelled the way the framework takes it today. Co-Authored-By: Claude Opus 5 Claude-Session: https://claude.ai/code/session_01XJBaqq5cFVUVMGr1BQvSVC --- AGENTS.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/AGENTS.md b/AGENTS.md index 76454b4a..1e887462 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -1214,7 +1214,7 @@ Use a `CASE` statement (inside an `ELSEIF client->check_on_event( )` block) only | Lifecycle | `check_on_init()`, `check_on_navigated()`, `check_app_prev_stack()` | State checks | | Messages | `message_box_display(text)`, `message_toast_display(text)` | User notifications | | Session | `set_session_stateful(val)`, `set_app_state_active(val)` | Session management | -| Browser | `set_push_state(val)`, `follow_up_action(val)` | Browser interaction (history back rides `follow_up_action( cs_event-history_back )`; routing via `cs_event-set_nav_routing`) | +| Browser | `set_push_state(val)`, `follow_up_action(val)` | Browser interaction (`cs_event-history_back` was removed in 1.143.0 — go back by passing the raw JS `history.back()` to `follow_up_action( )`, or `nav_app_leave( )` inside the app; routing via `follow_up_action( cs_event-set_nav_routing )`) | | Info | `get()`, `get_event()`, `get_event_arg()`, `get_app(id)` | Request/context data | | Constants | `cs_event`, `cs_view` | Predefined event IDs and view names | From 6a67e5132601d88313232cf60eeaa29e34154f2f Mon Sep 17 00:00:00 2001 From: Claude Date: Fri, 21 Aug 2026 14:47:20 +0000 Subject: [PATCH 3/3] Follow the walkthrough to ten steps: 011 and 070 point where #796 aimed When I changed these two `" @docs` lines, `get_started/full_example` still existed and the walkthrough ended at step 8, so pointing there was what resolved. abap2UI5/docs has since done what #796 expected: the walkthrough grew to ten steps, Full Example was folded into them and the page is gone. So the targets go back to exactly what #796 wrote, and they now resolve on both sides: - 011 -> step-8 (selection screen) and step-10 (the finished app) - 070 -> step-9 (tables) and step-10 Each of those pages names the class back in its `samples:` frontmatter. check-docs-links is green against the docs checkout, and SAMPLES.md is regenerated. The other two fixes from that commit are untouched: 448's comment no longer says "two-way", and generate-samples-md.mjs no longer states a data-object count that goes stale. Co-Authored-By: Claude Opus 5 Claude-Session: https://claude.ai/code/session_01XJBaqq5cFVUVMGr1BQvSVC --- SAMPLES.md | 4 ++-- src/01/z2ui5_cl_smp_app_011.clas.abap | 2 +- src/01/z2ui5_cl_smp_app_070.clas.abap | 2 +- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/SAMPLES.md b/SAMPLES.md index 40c3a6f8..8ee02f97 100644 --- a/SAMPLES.md +++ b/SAMPLES.md @@ -138,7 +138,7 @@ ready-to-run apps** the README leads with. | Sample | Class | |---|---| | Events on Cell Level
Events on cell level in a grid table: which row and which column the user was in, and what arrives in the backend.
cell enter row index event grid alv
docs: [cookbook/model/tables](https://abap2ui5.github.io/docs/cookbook/model/tables) | [`Z2UI5_CL_SMP_APP_160`](src/01/z2ui5_cl_smp_app_160.clas.abap) | -| Full Example with sap.ui.table
The full sap.ui.table example: a DynamicPage with search, sort, filter, currency columns and row actions - the closest thing here to a finished ALV.
grid alv dynamicpage column row action currency search sort filter
docs: [get_started/full_example](https://abap2ui5.github.io/docs/get_started/full_example), [cookbook/model/tables](https://abap2ui5.github.io/docs/cookbook/model/tables), [tutorials/walkthrough/step-8](https://abap2ui5.github.io/docs/tutorials/walkthrough/step-8) | [`Z2UI5_CL_SMP_APP_070`](src/01/z2ui5_cl_smp_app_070.clas.abap) | +| Full Example with sap.ui.table
The full sap.ui.table example: a DynamicPage with search, sort, filter, currency columns and row actions - the closest thing here to a finished ALV.
grid alv dynamicpage column row action currency search sort filter
docs: [cookbook/model/tables](https://abap2ui5.github.io/docs/cookbook/model/tables), [tutorials/walkthrough/step-9](https://abap2ui5.github.io/docs/tutorials/walkthrough/step-9), [tutorials/walkthrough/step-10](https://abap2ui5.github.io/docs/tutorials/walkthrough/step-10) | [`Z2UI5_CL_SMP_APP_070`](src/01/z2ui5_cl_smp_app_070.clas.abap) | | Keep Column Filters on Refresh (C)
Keeps the active sap.ui.table column filters across a view model update, through the abap2UI5 uitableext custom control - without it they are reset.
column filter reset refresh uitableext grid alv
docs: [cookbook/model/tables](https://abap2ui5.github.io/docs/cookbook/model/tables) | [`Z2UI5_CL_SMP_APP_143`](src/01/z2ui5_cl_smp_app_143.clas.abap) | ### List @@ -218,7 +218,7 @@ ready-to-run apps** the README leads with. | Sample | Class | |---|---| | Drag and Drop Rows (A)
Drag and drop of table rows (DragDropInfo), and how the new order reaches the internal table.
dnd dragdropinfo reorder rows move
docs: [cookbook/model/tables](https://abap2ui5.github.io/docs/cookbook/model/tables) | [`Z2UI5_CL_SMP_APP_459`](src/01/z2ui5_cl_smp_app_459.clas.abap) | -| Editable Cells, Add and Delete Rows
An editable table: input cells, adding and deleting rows, multi-select and a toolbar over them.
edit input add row delete multiselect toolbar
docs: [get_started/full_example](https://abap2ui5.github.io/docs/get_started/full_example), [cookbook/model/tables](https://abap2ui5.github.io/docs/cookbook/model/tables) | [`Z2UI5_CL_SMP_APP_011`](src/01/z2ui5_cl_smp_app_011.clas.abap) | +| Editable Cells, Add and Delete Rows
An editable table: input cells, adding and deleting rows, multi-select and a toolbar over them.
edit input add row delete multiselect toolbar
docs: [cookbook/model/tables](https://abap2ui5.github.io/docs/cookbook/model/tables), [tutorials/walkthrough/step-8](https://abap2ui5.github.io/docs/tutorials/walkthrough/step-8), [tutorials/walkthrough/step-10](https://abap2ui5.github.io/docs/tutorials/walkthrough/step-10) | [`Z2UI5_CL_SMP_APP_011`](src/01/z2ui5_cl_smp_app_011.clas.abap) | | Filter Rows in the Backend
Filters table rows in the BACKEND from a form above it, so the WHERE runs where the data is.
filter server side form growing where
docs: [cookbook/model/tables](https://abap2ui5.github.io/docs/cookbook/model/tables) | [`Z2UI5_CL_SMP_APP_045`](src/01/z2ui5_cl_smp_app_045.clas.abap) | | Large Table with Growing and ScrollContainer
10.000 rows in one table: growing, a sticky toolbar and sorting - and what that costs on the way to the browser.
growing 10000 rows sticky toolbar sort performance
docs: [cookbook/model/tables](https://abap2ui5.github.io/docs/cookbook/model/tables) | [`Z2UI5_CL_SMP_APP_006`](src/01/z2ui5_cl_smp_app_006.clas.abap) | | Live Search with Parallel Requests
Two SearchFields that round-trip on every keystroke on purpose - to show what that does: requests overtaking each other, the busy queue, the value lagging behind fast typing.
live search parallel requests busy queue typing
docs: [cookbook/model/tables](https://abap2ui5.github.io/docs/cookbook/model/tables) | [`Z2UI5_CL_SMP_APP_059`](src/01/z2ui5_cl_smp_app_059.clas.abap) | diff --git a/src/01/z2ui5_cl_smp_app_011.clas.abap b/src/01/z2ui5_cl_smp_app_011.clas.abap index 8310c2fe..e19e2a2b 100644 --- a/src/01/z2ui5_cl_smp_app_011.clas.abap +++ b/src/01/z2ui5_cl_smp_app_011.clas.abap @@ -1,6 +1,6 @@ " @keywords edit input add row delete multiselect toolbar " @summary An editable table: input cells, adding and deleting rows, multi-select and a toolbar over them. -" @docs https://abap2ui5.github.io/docs/get_started/full_example https://abap2ui5.github.io/docs/cookbook/model/tables +" @docs https://abap2ui5.github.io/docs/cookbook/model/tables https://abap2ui5.github.io/docs/tutorials/walkthrough/step-8 https://abap2ui5.github.io/docs/tutorials/walkthrough/step-10 CLASS z2ui5_cl_smp_app_011 DEFINITION PUBLIC. PUBLIC SECTION. diff --git a/src/01/z2ui5_cl_smp_app_070.clas.abap b/src/01/z2ui5_cl_smp_app_070.clas.abap index e791bd90..d5eaba23 100644 --- a/src/01/z2ui5_cl_smp_app_070.clas.abap +++ b/src/01/z2ui5_cl_smp_app_070.clas.abap @@ -1,6 +1,6 @@ " @keywords grid alv dynamicpage column row action currency search sort filter " @summary The full sap.ui.table example: a DynamicPage with search, sort, filter, currency columns and row actions - the closest thing here to a finished ALV. -" @docs https://abap2ui5.github.io/docs/get_started/full_example https://abap2ui5.github.io/docs/cookbook/model/tables https://abap2ui5.github.io/docs/tutorials/walkthrough/step-8 +" @docs https://abap2ui5.github.io/docs/cookbook/model/tables https://abap2ui5.github.io/docs/tutorials/walkthrough/step-9 https://abap2ui5.github.io/docs/tutorials/walkthrough/step-10 CLASS z2ui5_cl_smp_app_070 DEFINITION PUBLIC. PUBLIC SECTION.