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
Copy file name to clipboardExpand all lines: docs/advanced/technical/dx.md
+46-70Lines changed: 46 additions & 70 deletions
Original file line number
Diff line number
Diff line change
@@ -1,14 +1,14 @@
1
-
# Developer Experience: Keeping It Simple
1
+
# Developer Experience: Keeping Things Simple
2
2
3
-
Developer Experience describes how efficient, and intuitive it is for developers to work with tools, frameworks, and systems.
3
+
Developer Experience refers to how intuitive and productive it feels for developers to work with a framework and its tooling.
4
4
5
-
Good Developer Experience means writing code feels natural, testing changes is fast, and the tools stay out of your way. It includes minimal boilerplate, easy debugging, straightforward deployment, and code that’s simple to understand, reuse, and share.
5
+
Good Developer Experienc means writing code is fast, testing changes is instant, and the tooling never gets in your way. It involves minimal boilerplate, easy debugging, simple deployment, and code that’s easy to understand, reuse, and share.
6
6
7
-
This page explores familiar ABAP technologies and coding patterns that offer a smooth developer experience — and shows how these ideas have influenced the design of abap2UI5.
7
+
This page explores familiar ABAP frameworks and and snippets serving a nice developer experience — and shows how these ideas have influenced APIs and its usage of abap2UI5.
8
8
9
-
### Output - if_oo_adt_classrun
9
+
### API I: Output with if_oo_adt_classrun
10
10
11
-
One of the most fundamental tasks in any development environment is to output data. In ABAP, the cleanest and cloud-compatible way to do this is via the IF_OO_ADT_CLASSRUN interface. It provides a simple, class-based entry point that works in both ABAP Cloud and on-premise systems.
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:
12
12
13
13
```abap
14
14
CLASS zcl_app_adt DEFINITION PUBLIC CREATE PUBLIC.
@@ -25,11 +25,10 @@ ENDCLASS.
25
25
Why this improves Developer Experience:
26
26
- The entire app lives in a single file — fast to navigate, easy to debug
27
27
- No boilerplate: just a class and one method
28
-
- Works identically in all modern ABAP environments
29
-
- Integrates perfectly with abapGit for versioning and sharing
30
-
31
-
This simple design directly inspired abap2UI5. Here's the equivalent app implemented in abap2UI5:
28
+
- Works identically in `ABAP Cloud` and `Standard ABAP`
29
+
- abapGit compatible for versioning and sharing
32
30
31
+
This simple design inspired abap2UI5. Here's the equivalent functionality implemented in abap2UI5:
33
32
```abap
34
33
CLASS zcl_app_ui5 DEFINITION PUBLIC CREATE PUBLIC .
35
34
PUBLIC SECTION.
@@ -42,24 +41,24 @@ CLASS zcl_app_ui5 IMPLEMENTATION.
42
41
ENDMETHOD.
43
42
ENDCLASS.
44
43
```
45
-
Additional DX Benefits in abap2UI5:
44
+
45
+
Additional Benefits in abap2UI5:
46
46
- Runs in any browser — no ADT installation required
47
-
- Accessible by end users with proper authorization
48
-
- Output uses UI5 components that conform to SAP Fiori guidelines
47
+
- Accessible by end users
48
+
- Output uses UI5 beeing conform to SAP Fiori Design guidelines
49
49
50
-
This example sets the tone for the rest of the framework: minimal setup, full backend control, and great compatibility.
51
50
52
-
### Input - Selection Screen
51
+
### API II: Input with Selection Screen
53
52
54
-
A key part of developer productivity is how quickly one can gather user input. Traditional ABAP offers a dead-simple approach with selection screens:
53
+
Traditional ABAP offers a fast way to collect user input using selection screens:
55
54
56
55
```abap
57
56
REPORT zre_app_input.
58
57
PARAMETERS pa_arbgb TYPE t100-arbgb DEFAULT 'MDG_TR'.
59
58
START-OF-SELECTION.
60
59
MESSAGE |Input: { pa_arbgb }| type 'I'.
61
60
```
62
-
abap2UI5 brings this idea into the browser with a view-based UI:
61
+
abap2UI5 brings this concept into the browser:
63
62
```abap
64
63
CLASS zcl_app_input DEFINITION PUBLIC CREATE PUBLIC.
65
64
PUBLIC SECTION.
@@ -87,10 +86,10 @@ Why this improves Developer Experience:
87
86
- Easy to test: reload the page, enter input, press the button
88
87
- Everything is still in a single class — no external UI tooling needed
89
88
89
+
### API III: Output Tables with ABAP List Viewer
90
90
91
-
### Output Tables - ABAP List Viewer
91
+
CL_SALV_TABLE brought major productivity gains to classic ABAP:
92
92
93
-
In classical ABAP, CL_SALV_TABLE was a major step forward in developer productivity:
94
93
```abap
95
94
REPORT zre_app_alv.
96
95
@@ -106,7 +105,7 @@ cl_salv_table=>factory(
106
105
t_table = gt_t100 ).
107
106
go_salv->display( ).
108
107
```
109
-
Fifteen lines, a single file, and ready for productive use. Unfortunately, it's not cloud-ready. abap2UI5 offers a functionally similar alternative that’s cloud-ready:
108
+
While this is compact and effective, it's not cloud-ready. abap2UI5 provides a browser-based, cloud-compatible alternative:
110
109
```abap
111
110
CLASS zcl_app_alv DEFINITION PUBLIC.
112
111
PUBLIC SECTION.
@@ -142,10 +141,11 @@ ENDCLASS.
142
141
Why this improves Developer Experience:
143
142
- Data binding is straightforward and localized
144
143
- Table layout and content are configured inline
145
-
- Fully works in browser and on any device, no GUI dependencies
144
+
- Fully works in browser and on any device, no SAP GUI dependencies
145
+
146
+
### API IV: popup_to_confirm
147
+
Classic ABAP uses `POPUP_TO_CONFIRM` for simple decisions:
146
148
147
-
### popup_to_confirm
148
-
Classical ABAP uses POPUP_TO_CONFIRM to ask users for simple confirmations:
149
149
```abap
150
150
REPORT zre_app_alv.
151
151
@@ -165,6 +165,7 @@ CASE event.
165
165
ENDCASE.
166
166
```
167
167
abap2UI5 offers a matching approach using z2ui5_cl_pop_to_confirm:
168
+
168
169
```abap
169
170
CLASS zcl_app_alv_event DEFINITION PUBLIC.
170
171
PUBLIC SECTION.
@@ -200,73 +201,48 @@ Why this improves Developer Experience:
200
201
- The flow mimics classic ABAP screen logic with modern UI5 behavior
201
202
202
203
203
-
### Deployment – Transport Without Pain
204
-
205
-
One of the most overlooked aspects of Developer Experience is deployment. Even a beautifully written app is frustrating to work with if it’s hard to deploy.
204
+
### Deployment
206
205
207
-
Classic ABAP deployments often rely on transport requests and manual steps through SE01, which can become tedious and error-prone — especially for small, iterative apps.
206
+
One overlooked aspects of Developer Experience is deployment. Even a beautifully written app is frustrating to work with if it’s hard to deploy. But in abap2UI5 all apps are just classes and can be deployed via activation, transport into production goes over the TOC system known from the rest of the abap world.
208
207
209
-
**abap2UI5 improves this by being fully abapGit-compatible.** All apps are just classes and can be committed, versioned, and transported via Git-based workflows. This is fully supported in both ABAP Cloud and classic systems.
210
-
211
-
**Why this improves Developer Experience:**
212
-
- No Z-transaction creation, Web Dynpro configuration, or ICF setup required
213
-
- Code changes are instantly visible via browser without deployment steps
214
-
- Clean Git history, easier code reviews, and fully scriptable CI/CD possible
215
-
216
-
### Cache – Reliable During Iteration
217
-
218
-
A common frustration in SAP development is the UI cache, especially when working with BSP applications or Fiori Elements apps. You make a change — and nothing happens due to cached artifacts.
208
+
Why this improves Developer Experience:
209
+
- No separated Frontend deployment and build pipelines
210
+
- Code changes are instantly deployed and can be tested by consultants
211
+
- Every app is an abapGit fully compatible Project without separated frontend artifacts
212
+
213
+
### Cache
219
214
220
-
**abap2UI5 eliminates this problem** by not caching UI definitions at all. The UI is dynamically built in each request from ABAP code. Every refresh reflects the latest code.
215
+
A common frustration in SAP development is the UI cache, especially when working with BSP applications or Fiori Elements apps. There are a lot of different cahe incalvidation transactions etc. You make a change — and nothing happens due to cached artifacts. abap2UI5 eliminates this problem by not caching UI definitions at all. The UI is dynamically built in each request from ABAP code. Every browser refresh always reflects the latest code.
221
216
222
-
**Why this improves Developer Experience:**
217
+
Why this improves Developer Experience:
223
218
- No need to clear browser cache or invalidate server caches
224
-
- True WYSIWYG iteration — edit the code, refresh, and test
225
-
- Enables rapid experimentation without hidden state issues
219
+
- Fast dewvelopment iteration — edit the code, refresh, and test
226
220
227
-
### Tools – You Already Know Them
221
+
### Tools
228
222
229
-
Great DX means you don’t have to learn new tools just to be productive.
223
+
Great Developer Experience also means you can use the tools you like and are not forced into certain tooling. With abap2UI5, development happens entirely within **SE80**, **ADT**, or any IDE of your choice. It only based on ABAP classes giving you the freedom of choice and has a complete compatibility to all tools.
230
224
231
-
With abap2UI5, development happens entirely within **SE80**, **ADT**, or any **ABAP IDE** of your choice. No Node.js, no Web IDE, no special CLI tools.
232
-
233
-
**Why this improves Developer Experience:**
225
+
Why this improves Developer Experience:
234
226
- Works out of the box in any ABAP system — no extra setup
235
-
- Familiar tooling: SE80, class editor, debugger
236
227
- Smooth transition for teams already comfortable with ABAP
237
228
229
+
### Debugging
238
230
239
-
### Debugging – It Just Works
240
-
241
-
Debugging frontend-heavy applications often requires navigating between browser tools, JavaScript breakpoints, and network logs — not ideal for ABAP developers.
231
+
Debugging frontend-heavy applications often requires navigating between browser tools, JavaScript breakpoints, and network logs — not ideal for ABAP developers. In abap2UI5, the UI is comes fully out of ABAP code. There is no JavaScript to debug. If you want to see what happens when a button is pressed, set a breakpoint in the ABAP class — that’s it.
242
232
243
-
In **abap2UI5**, the UI is just a projection of ABAP code. There is no JavaScript to debug. If you want to see what happens when a button is pressed, set a breakpoint in the ABAP class — that’s it.
244
-
245
-
**Why this improves Developer Experience:**
246
-
- Backend-only debugging using the classic ABAP debugger
233
+
Why this improves Developer Experience:
234
+
- Backend-only debugging using the classic ABAP debugger or ADT
247
235
- No browser dev tools needed
248
-
- Reproducible, testable flows — event handlers run like regular ABAP methods
249
236
250
-
---
237
+
### Sharing
251
238
252
-
### Sharing – Built for abapGit
239
+
Sharing solutions across systems or with other developers is essential — especially in open source or multi-system landscapes. Since abap2UI5 apps are just classes, they are naturally compatible with abapGit or can be just copy & pasted. There are no special configuration files, manifests, or bundling steps.
253
240
254
-
Sharing solutions across systems or with other developers is essential — especially in open source or multi-system landscapes.
255
-
256
-
Since **abap2UI5 apps are just classes**, they are naturally compatible with **abapGit**. There are no special configuration files, manifests, or bundling steps.
257
-
258
-
**Why this improves Developer Experience:**
241
+
Why this improves Developer Experience:
259
242
- Easy to clone and test others’ apps
260
243
- Ideal for team collaboration and code review
261
244
- Encourages modular, reusable components through shared repositories
262
245
263
-
264
246
### Summary
265
247
266
-
abap2UI5 brings back the simplicity of classic ABAP workflows with a modern, browser-based UI. By preserving familiar ABAP patterns (like output via WRITE, selection screens, ALV display, and popups) and wrapping them in clean, class-based interfaces, abap2UI5 delivers a developer experience that is:
267
-
- Fast to start — apps are created in minutes
268
-
- Simple to debug — logic and UI are together
269
-
- Easy to share — via abapGit and browser-based access
270
-
- Cloud-compliant — works in Steampunk and on-prem
271
-
272
-
Each code snippet on this page shows how classic patterns are reimagined for modern ABAP development. That’s what great Developer Experience is about.
248
+
abap2UI5 was a lot inspired by the classics like output via WRITE, selection screens, ALV display, and popups and for the rest it got very lucky that the ui5 framework can that easy be gesteuert with abap only leveringing a lot of additonal benefits like Deployement, cahce, debugging, tooling or sharing giving abap2UI5 a smooth Developer expereince.
0 commit comments