Skip to content

Commit 646a20b

Browse files
authored
Update dx.md
1 parent 1fd9de3 commit 646a20b

File tree

1 file changed

+32
-35
lines changed
  • docs/advanced/technical

1 file changed

+32
-35
lines changed

docs/advanced/technical/dx.md

Lines changed: 32 additions & 35 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,12 @@
1-
# Developer Experience: Keeping Things Simple
1+
# From WRITE to UI5: What Shaped abap2UI5
22

3-
Developer Experience (DX) describes how efficient and intuitive it is to develop with a given framework and its tools.
3+
abap2UI5 is a browser-based UI framework written entirely in ABAP. It is shaped by familiar ABAP patterns that emphasize simplicity, readability, and backend-driven development. In addition, it aims to address common pain points in everyday developer work — such as deployment complexity, caching issues, and tooling overhead.
44

5-
Good DX means writing code is fast, testing is immediate, and tooling doesn’t get in the way. It requires minimal boilerplate, supports easy debugging and enables quick deployment with code that’s easy to reuse and share.
6-
7-
This page highlights ABAP patterns that promote strong DX and how they influenced the APIs of abap2UI5.
5+
This page highlights the key concepts and influences behind the design of abap2UI5.
86

97
### API I: Output via `IF_OO_ADT_CLASSRUN`
108

11-
One of the most fundamental development tasks is outputting data. In ABAP, the cleanest way to do this is with the `if_oo_adt_classrun` interface. It offers a simple, class-based approach immediatly outputting data into ADT:
9+
One of the most fundamental development tasks is outputting data. In ABAP, the cleanest way to do this is with the `if_oo_adt_classrun` interface. It offers a simple, class-based approach to immediately output data in ADT:
1210

1311
```abap
1412
CLASS zcl_app_adt DEFINITION PUBLIC CREATE PUBLIC.
@@ -23,13 +21,12 @@ CLASS zcl_app_adt IMPLEMENTATION.
2321
ENDCLASS.
2422
```
2523

26-
Why this improves Developer Experience:
27-
- The entire app lives in a single file — fast to navigate, easy to debug
28-
- No boilerplate: just a class and one method
29-
- Works identically in `ABAP Cloud` and `Standard ABAP`
30-
- abapGit compatible for versioning and sharing
24+
Why it matters:
25+
- Single-class design is easy to debug and version
26+
- Minimal boilerplate, cloud-compatible
27+
- Fully abapGit-ready
3128

32-
This simple design inspired abap2UI5. Here's the equivalent functionality implemented in abap2UI5:
29+
This simplicity inspired the entry point for abap2UI5 apps:
3330
```abap
3431
CLASS zcl_app_ui5 DEFINITION PUBLIC CREATE PUBLIC .
3532
PUBLIC SECTION.
@@ -43,28 +40,27 @@ CLASS zcl_app_ui5 IMPLEMENTATION.
4340
ENDCLASS.
4441
```
4542

46-
Additional Benefits in abap2UI5:
47-
- Runs in any browser — no ADT installation required
48-
- Accessible by end users
49-
- Output uses UI5 beeing conform to SAP Fiori Design guidelines
50-
43+
Additional in abap2UI5:
44+
- Runs in the browser, no ADT needed
45+
- End-user ready without extra deployment
46+
- Conform to SAP Fiori Design guidelines
5147

5248
### API II: Input with Selection Screen
5349

54-
Traditional ABAP offers a fast way to collect user input using selection screens:
50+
Classic ABAP supports user input through selection screens:
5551

5652
```abap
5753
REPORT zre_app_input.
5854
PARAMETERS pa_arbgb TYPE t100-arbgb DEFAULT 'MDG_TR'.
5955
START-OF-SELECTION.
6056
MESSAGE |Input: { pa_arbgb }| type 'I'.
6157
```
62-
Benefits:
63-
* Data Transfer with inputs
64-
* events and buttons
65-
* fullstack application (already deployt) with 4 lines
58+
Why it matters:
59+
- Rapid prototyping with minimal code
60+
- Built-in input validation and events
61+
- Fullstack behavior with no setup
6662

67-
abap2UI5 brings this concept into the browser:
63+
abap2UI5 brings this idea into the browser using an XML view builder and data binding:
6864
```abap
6965
CLASS zcl_app_input DEFINITION PUBLIC CREATE PUBLIC.
7066
PUBLIC SECTION.
@@ -95,7 +91,7 @@ Why this improves Developer Experience:
9591

9692
### API III: Output Tables with ABAP List Viewer
9793

98-
CL_SALV_TABLE brought major productivity gains to classic ABAP:
94+
ALV tools such as `CL_SALV_TABLE` helped make tabular output effortless:
9995

10096
```abap
10197
REPORT zre_app_alv.
@@ -112,12 +108,14 @@ cl_salv_table=>factory(
112108
t_table = gt_t100 ).
113109
go_salv->display( ).
114110
```
115-
Benefits:
116-
* Table output with a single method calls
117-
* generic table input, ui is generated out of an internal table
118-
* no additonal cds artifacts needed
119111

120-
abap2UI5 brings this benefits into the browser:
112+
Why it matters:
113+
- Generates full UI from internal tables
114+
- No external annotations or CDS needed
115+
- Ideal for admin tools and quick overviews
116+
117+
abap2UI5 brings this to the browser:
118+
121119
```abap
122120
CLASS zcl_app_alv DEFINITION PUBLIC.
123121
PUBLIC SECTION.
@@ -150,12 +148,11 @@ CLASS zcl_app_alv IMPLEMENTATION.
150148
ENDMETHOD.
151149
ENDCLASS.
152150
```
153-
154151
Additional Benefits in abap2UI5:
155152
- Fully works in browser and on any device, no SAP GUI dependencies
156153

157154
### API IV: popup_to_confirm
158-
Classic ABAP uses `POPUP_TO_CONFIRM` for simple decisions:
155+
Classic ABAP offered a straightforward way to ask user decisions:
159156

160157
```abap
161158
REPORT zre_app_alv.
@@ -210,12 +207,12 @@ CLASS zcl_app_alv_event IMPLEMENTATION.
210207
ENDCLASS.
211208
```
212209

213-
Why this improves Developer Experience:
210+
Why it matters:
214211
- Dialog logic stays class-based and readable
215212
- UI and logic stay in sync
216213
- The flow mimics classic ABAP screen logic with modern UI5 behavior
217214

218-
### Deployment
215+
### Deployment Simplicity
219216

220217
One aspect of Developer Experience is deployment. Even a beautifully written app is frustrating if it’s hard to ship. In abap2UI5, apps are just ABAP classes — deployment is as simple as activating the class. Transport to production happens via the standard TOC system known from traditional ABAP workflows.
221218

@@ -224,7 +221,7 @@ Why this improves Developer Experience:
224221
- Code changes can be instantly tested by developers or consultants
225222
- Every app is abapGit-compatible — no separate artifacts required
226223

227-
### Cache
224+
### No UI Cache
228225

229226
A common frustration in SAP frontend development is UI caching — especially with BSP or Fiori Elements apps. You make a change, but nothing happens due to cached files. abap2UI5 avoids this problem entirely by not caching any UI definitions. The UI is dynamically generated on every request.
230227

@@ -240,7 +237,7 @@ Why this improves Developer Experience:
240237
- No additional setup required — works in any ABAP system
241238
- Ideal for teams already experienced with ABAP
242239

243-
### Debugging
240+
### Debugging Made Simple
244241

245242
Frontend-heavy applications often require jumping between browser dev tools, JavaScript logs, and network inspectors. With abap2UI5, the UI is pure ABAP — no JavaScript, no additional layers. Set a breakpoint in the ABAP method and you’re done.
246243

0 commit comments

Comments
 (0)