You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
docs: fix verified technical errors from deep review
- formatter: read-only _bind paths have no /XX/ segment — correct the
resolved expression-binding string and the path = abap_true note
(verified against z2ui5_cl_core_srv_bind=>get_client_name)
- lock: reorder INTO after WHERE in the two inline optimistic-check
SELECTs (strict ABAP SQL) to match the full source below them
- agent guide: check_on_navigated fires on return from apps called via
nav_app_call, not from same-app popup_display popups — make both
comments precise
- how_it_all_works: remove self-referential cross-reference in section
16 and qualify the "2,300 lines" figure as the original core
communication layer
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01EC2cWJafPETwcMbh3NCsgH
Copy file name to clipboardExpand all lines: docs/cookbook/model/formatter.md
+2-2Lines changed: 2 additions & 2 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -13,7 +13,7 @@ UI5 formatter types use a special JSON-based binding syntax with these key eleme
13
13
14
14
Note on ABAP syntax: inside string templates (`|...|`), escape the curly braces as `\{` and `\}`, because `{ }` normally denotes an embedded ABAP expression.
15
15
16
-
The `path = abap_true` parameter on `_bind` / `_bind_edit` returns only the raw model path (e.g., `/XX/AMOUNT`) rather than the full binding expression (`{/XX/AMOUNT}`), so you can embed it inside the `parts` array or a single-path `path:` entry.
16
+
The `path = abap_true` parameter on `_bind` / `_bind_edit` returns only the raw model path rather than the full binding expression, so you can embed it inside the `parts` array or a single-path `path:` entry. For `_bind_edit` the path is e.g. `/XX/AMOUNT`; read-only `_bind` paths have no `/XX/` segment (`/AMOUNT`).
17
17
18
18
For example, this ABAP code:
19
19
```abap
@@ -93,7 +93,7 @@ ABAP `abap_bool` is `"X"` or `""`. UI5's `CheckBox` expects `true` / `false`. Tw
This resolves to `{= ${/XX/MV_FLAG} === 'X' }`. Note that expression bindings cannot write back — checking the box will not flip the ABAP attribute.
96
+
This resolves to `{= ${/MV_FLAG} === 'X' }` — read-only `_bind` paths have no `/XX/` prefix (that segment marks two-way `_bind_edit` bindings). Note that expression bindings cannot write back — checking the box will not flip the ABAP attribute.
97
97
98
98
**ABAP-side conversion** — keep a parallel `string`-typed attribute (`'true'` / `'false'`) for two-way binding, and translate before/after each event:
Copy file name to clipboardExpand all lines: docs/technical/how_it_all_works.md
+3-3Lines changed: 3 additions & 3 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -214,7 +214,7 @@ SAP GUI (stateful) vs. abap2UI5 (restful)
214
214
215
215
But use this feature only for interim results; take care when serializing other parts of your app.
216
216
217
-
We've earned significant flexibility with (9) (10) (11) (16); the next sections focus on how the framework cuts its complexity, starting with the initial request.
217
+
We've earned significant flexibility with (9) (10) (11) and the drafts from this section; the next sections focus on how the framework cuts its complexity, starting with the initial request.
218
218
219
219
#### 17. Initial Request
220
220
@@ -307,7 +307,7 @@ And Fiori Elements, with all its floorplans and templates, is simple and will ke
307
307
308
308
#### 25. System Footprint
309
309
310
-
We keep the system footprint small — abap2UI5 ships only ABAP classes, with no CDS or RAP artifacts. Most of the code lives in user apps outside the framework (21) (22). Overall, the framework comes to about 2,300 lines of code spread across one HTTP-Handler, two interfaces, and one database table:
310
+
We keep the system footprint small — abap2UI5 ships only ABAP classes, with no CDS or RAP artifacts. Most of the code lives in user apps outside the framework (21) (22). Overall, the core communication layer originally came to about 2,300 lines of code spread across one HTTP handler, two interfaces, and one database table (the framework has grown since — most notably the optional fluent view builder — but the core stays this small):
311
311
312
312
<imgwidth="600"alt="System footprint of abap2UI5"src="https://github.com/user-attachments/assets/981ab684-d2cf-4f56-b25c-c333db3c6dcc" />
313
313
@@ -365,7 +365,7 @@ Automated ABAP downporting greatly boosts efficiency. See the abaplint dashboard
365
365
366
366
In short: inspired by "HTML Over-the-Wire" (1)(2)(3), we combined UI and Data (7) and created a "UI5 Over-the-Wire" approach by sending the XML-View from the server (6). We then used a single generic HTTP-Service for all apps (13), independent of the View and Data Model (12). This gives us great flexibility, so we can create Data Models (10) and Views (11) dynamically at runtime, which greatly cuts the number of backend artifacts.
367
367
368
-
Next, we explored several ideas for how the framework cuts its complexity by avoiding frontend artifacts (17), removing extra customizing layers (19), and separating the view from the framework (21), along with app-specific JS or HTML (22). The result is a pure source-code approach with only one database table, two interfaces, one class, and about 2,300 lines of code (25). We build it in a single code line (27), making it cloud- and on-premise-ready and downportable to older releases (28). Paired with abapGit, you can build apps that run on nearly every release.
368
+
Next, we explored several ideas for how the framework cuts its complexity by avoiding frontend artifacts (17), removing extra customizing layers (19), and separating the view from the framework (21), along with app-specific JS or HTML (22). The result is a pure source-code approach whose core needs only one database table, two interfaces, one handler class, and roughly 2,300 lines of code (25). We build it in a single code line (27), making it cloud- and on-premise-ready and downportable to older releases (28). Paired with abapGit, you can build apps that run on nearly every release.
369
369
370
370
Overall, with abap2UI5 you need to set aside some common rules: no separation between View and Model in the HTTP communication (12), HTML and JavaScript live directly in the source code (17) (22), we don't use OData or RAP (7), and there are other tradeoffs to weigh (24). But if you accept all of this, you get a very minimal approach where you only need to write a single method to build standalone UI5 apps (15).
0 commit comments