Skip to content

Commit a7f2b35

Browse files
authored
Update concept.md
1 parent f677426 commit a7f2b35

File tree

1 file changed

+11
-11
lines changed

1 file changed

+11
-11
lines changed

docs/technical/concept.md

Lines changed: 11 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ In this architecture the initial request delivers JavaScript and CSS, Subsequent
1717
<p align="center">
1818
<img width="600" alt="image" src="https://github.com/user-attachments/assets/db393f3a-940d-4bd3-aec0-5523e8d58fa0" />
1919
<br/>
20-
<em> HTML "Over the Wire" Lifecycle</em>
20+
<em> HTML "Over the Wire" Lifecycle - Server sends HTML fragments, browser updates UI without full reload</em>
2121
</p>
2222

2323
This results in a clean and lightweight frontend — a pure rendering layer — while all logic remains under full control of the backend.
@@ -55,7 +55,7 @@ UI5 freestyle apps follow the Single Page Application (SPA) model. All UI artifa
5555
<p align="center">
5656
<img width="500" alt="image" src="https://github.com/user-attachments/assets/8043d0d9-5852-4dac-aefb-37ec8d6e66be" />
5757
<br/>
58-
<em>Freestyle - ABAP Stack delivers only Data</em>
58+
<em>UI5 Freestyle - UI is built on the client; backend delivers only Data via OData</em>
5959
</p>
6060

6161
Since UI5 is a client-side rendering framework, the HTML output cannot be generated on the backend and sent to the client. Instead, HTML is produced in the browser using the UI5 framework and its built-in render.
@@ -67,7 +67,7 @@ Fortunately, UI5 has a defining characteristic that allows us to shift part of t
6767
<p align="center">
6868
<img width="400" alt="image" src="https://github.com/user-attachments/assets/1ae233c6-96ff-4370-ac31-30705c18a0f7" />
6969
<br/>
70-
<em>UI5 Freestyle – The browser renders HTML based on XML View and backend data</em>
70+
<em>UI5 Freestyle – HTML rendered in browser based on Frontend XML View and Backend Data</em>
7171
</p>
7272

7373
abap2UI5 introduces a subtle but important shift: what if the backend also delivers the XML View?
@@ -77,7 +77,7 @@ While HTML rendering still happens on the frontend, both the view definition and
7777
<p align="center">
7878
<img width="400" alt="image" src="https://github.com/user-attachments/assets/7886d77e-acef-4e96-bc0f-ed3728e06358" />
7979
<br/>
80-
<em>abap2UI5 – The browser renders HTML based on XML View and data fully delivered by the backend</em>
80+
<em>abap2UI5 – HTML rendered in browser based on XML View and Data, both send from the Backend</em>
8181
</p>
8282

8383
The UI5 application remains a single-page application (SPA), but its role changes: it becomes a pure rendering engine for server-defined views and data. This raises a new question — how is user interaction handled in this architecture?
@@ -91,23 +91,23 @@ When the user triggers an event (e.g., a button press), the event information is
9191
<p align="center">
9292
<img width="500" alt="image" src="https://github.com/user-attachments/assets/64ed863f-09bf-4634-8688-5b5382595115" />
9393
<br/>
94-
<em>abap2UI5 - Simle Frontend App, Lofic in Backend App</em>
94+
<em>abap2UI5 – Simple shell app, backend handles all logic</em>
9595
</p>
9696

9797
In UI5 Freestyle apps, each application required a dedicated set of frontend artifacts:
9898

9999
<p align="center">
100100
<img width="350" alt="image" src="https://github.com/user-attachments/assets/abfe4163-e75d-4eab-ad4c-621f693fa6c3" />
101101
<br/>
102-
<em>UI5 Freestyle – multiple frontend artifacts per app</em>
102+
<em>UI5 Freestyle – Each application requires its own set of deployed UI artifac</em>
103103
</p>
104104

105105
With abap2UI5, the frontend becomes a static UI5 shell shared across all applications. Views and logic are fully defined and maintained in the backend. Each app is represented by a single ABAP class that generates the view and handles the events:
106106

107107
<p align="center">
108108
<img width="350" alt="image" src="https://github.com/user-attachments/assets/646c10e3-ef82-403f-8538-9efe45836ca2" />
109109
<br/>
110-
<em>abap2UI5 – One static frontend, all views and logic in ABAP</em>
110+
<em>abap2UI5 – Shared shell app, each application is represented by backend ABAP class</em>
111111
</p>
112112

113113
As a result, every UI5 app becomes a complete ABAP backend project managed through abapGit—eliminating the need for separate frontend deployments entirely.
@@ -123,15 +123,15 @@ Let’s take a closer look at a key UI5 feature: the concept of view models. In
123123
<p align="center">
124124
<img width="350" alt="image" src="https://github.com/user-attachments/assets/7eaa09d3-e3f7-4ebb-997d-fc68cc68421f" />
125125
<br/>
126-
<em>UI5 – View model bindings for visibility and state</em>
126+
<em>UI5 View Model Concept – UI control properties are bound to View Model attributes</em>
127127
</p>
128128

129129
This leads to the second key architectural shift in abap2UI5: Instead of binding to OData, abap2UI5 assembles a custom view model entirely in the backend. This model is constructed dynamically after each request — tailored specifically to the current view — and is sent together with the view definition to the frontend:
130130

131131
<p align="center">
132132
<img width="350" alt="image" src="https://github.com/user-attachments/assets/5bb4d351-4f5e-4ba0-a09a-f17883bd25e6" />
133133
<br/>
134-
<em>abap2UI5 – View and model are delivered together by the backend</em>
134+
<em>abap2UI5 – Backend delivers an XML View and its specifically tailored View Model in a single response</em>
135135
</p>
136136

137137
This means CDS Views and OData services are no longer consumed directly on the frontend. Instead, the complete UI state — both view and model — is sent from the backend in a single response. Any user changes in the UI are then returned to the backend via a lightweight AJAX call containing the updated view model — no OData routing involved.
@@ -181,7 +181,7 @@ This architecture enables a clean and unified application model:
181181
<p align="center">
182182
<img width="500" alt="image" src="https://github.com/user-attachments/assets/d52112e6-b9b7-4e7f-ac7f-825c20620240" />
183183
<br/>
184-
<em>subtitle</em>
184+
<em>abap2UI5 - Architecture</em>
185185
</p>
186186

187187
Frontend and backend remain tightly coupled — not through OData contracts, but through plain ABAP logic and JSON — resulting in a fully backend-driven, editable UI flow.
@@ -224,7 +224,7 @@ The illustration below shows the difference between a full re-render and a targe
224224
<p align="center">
225225
<img src="https://github.com/user-attachments/assets/79a8c531-b9a0-4bf4-bb1c-7d9019ef8707" width="500" />
226226
<br/>
227-
<em>You can see the difference: partly vs. not</em>
227+
<em>Only relevant DOM parts are updated via model binding, preserving UI state</em>
228228
</p>
229229

230230
Thanks to UI5’s powerful data binding mechanism, only the modified DOM elements are updated. This preserves the current UI state — such as input focus — and ensures a smooth, uninterrupted user experience. The XML View and View Model concept make UI5 a perfect team player for the UI5 Over-the-Wire approach combining the strengths of ABAP and UI5 — without the complexity of full client-side re-renders.

0 commit comments

Comments
 (0)