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
@@ -6,9 +6,9 @@ Good Developer Experience means writing code feels natural, testing changes is f
6
6
7
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.
8
8
9
-
### Write - if_oo_adt_classrun
9
+
### Output - if_oo_adt_classrun
10
10
11
-
What is the easiest way to output data in an ABAP stack that is both ABAP Cloud ready and works in standard systems? The answer is IF_OO_ADT_CLASSRUN:
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.
12
12
13
13
```abap
14
14
CLASS zcl_app_adt DEFINITION PUBLIC CREATE PUBLIC.
@@ -22,13 +22,13 @@ CLASS zcl_app_adt IMPLEMENTATION.
22
22
ENDMETHOD.
23
23
ENDCLASS.
24
24
```
25
-
Advantages:
26
-
-Single file for an entire app
27
-
-Class-based structure
28
-
-`ABAP Cloud` and `Standard ABAP`ready
29
-
-Fully abapGit compatible
25
+
Why this improves Developer Experience:
26
+
-The entire app lives in a single file — fast to navigate, easy to debug
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
30
31
-
This concept directly inspired abap2UI5. An abap2UI5 app mimicking the example above looks like this:
31
+
This simple design directly inspired abap2UI5. Here's the equivalent app implemented in abap2UI5:
32
32
33
33
```abap
34
34
CLASS zcl_app_ui5 DEFINITION PUBLIC CREATE PUBLIC .
@@ -42,21 +42,24 @@ CLASS zcl_app_ui5 IMPLEMENTATION.
42
42
ENDMETHOD.
43
43
ENDCLASS.
44
44
```
45
-
Additional advantages over IF_OO_ADT_CLASSRUN:
46
-
- No need to install ADT — output is shown in the browser and end users can access the app directly
47
-
- Frontend is rendered as a UI5 app following SAP Fiori UX guidelines
45
+
Additional DX Benefits in abap2UI5:
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
48
49
49
-
This is the baseline — and abap2UI5 builds on this foundation to add more functionality.
50
+
This example sets the tone for the rest of the framework: minimal setup, full backend control, and great compatibility.
51
+
52
+
### Input - Selection Screen
53
+
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:
50
55
51
-
### Input Data - Selection Screen
52
-
as a last prerequste we need some input. also the easiest way are selection screen, lets remember how that went:
53
56
```abap
54
57
REPORT zre_app_input.
55
58
PARAMETERS pa_arbgb TYPE t100-arbgb DEFAULT 'MDG_TR'.
56
59
START-OF-SELECTION.
57
60
MESSAGE |Input: { pa_arbgb }| type 'I'.
58
61
```
59
-
this is thew wy we can do it with abap2ui5:
62
+
abap2UI5 brings this idea into the browser with a view-based UI:
60
63
```abap
61
64
CLASS zcl_app_input DEFINITION PUBLIC CREATE PUBLIC.
62
65
PUBLIC SECTION.
@@ -79,10 +82,15 @@ CLASS zcl_app_input IMPLEMENTATION.
79
82
ENDMETHOD.
80
83
ENDCLASS.
81
84
```
85
+
Why this improves Developer Experience:
86
+
- Mirrors classic ABAP selection logic, making it familiar
87
+
- Easy to test: reload the page, enter input, press the button
88
+
- Everything is still in a single class — no external UI tooling needed
82
89
83
-
### ABAP List Viewer
84
90
85
-
what is the easiest way to out out tables? its the goold als cl_salv_table:
91
+
### Output Tables - ABAP List Viewer
92
+
93
+
In classical ABAP, CL_SALV_TABLE was a major step forward in developer productivity:
86
94
```abap
87
95
REPORT zre_app_alv.
88
96
@@ -98,7 +106,7 @@ cl_salv_table=>factory(
98
106
t_table = gt_t100 ).
99
107
go_salv->display( ).
100
108
```
101
-
15 lines of code, a single file, and the snippet is ready to use to transport to production for the use of end users. this is strong! unfortunately it is not cloudready and therefor not future. let mix this with the baap2ui5 approach from above. a abap2ui5 we can create somethig quite similar with the follwoing snippet:
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:
102
110
```abap
103
111
CLASS zcl_app_alv DEFINITION PUBLIC.
104
112
PUBLIC SECTION.
@@ -131,9 +139,13 @@ CLASS zcl_app_alv IMPLEMENTATION.
131
139
ENDMETHOD.
132
140
ENDCLASS.
133
141
```
142
+
Why this improves Developer Experience:
143
+
- Data binding is straightforward and localized
144
+
- Table layout and content are configured inline
145
+
- Fully works in browser and on any device, no GUI dependencies
134
146
135
147
### popup_to_confirm
136
-
Logic events...
148
+
Classical ABAP uses POPUP_TO_CONFIRM to ask users for simple confirmations:
137
149
```abap
138
150
REPORT zre_app_alv.
139
151
@@ -152,7 +164,7 @@ CASE event.
152
164
MESSAGE `the result is NO` TYPE 'I'.
153
165
ENDCASE.
154
166
```
155
-
in abap2UI5
167
+
abap2UI5 offers a matching approach using z2ui5_cl_pop_to_confirm:
156
168
```abap
157
169
CLASS zcl_app_alv_event DEFINITION PUBLIC.
158
170
PUBLIC SECTION.
@@ -181,20 +193,80 @@ CLASS zcl_app_alv_event IMPLEMENTATION.
181
193
ENDMETHOD.
182
194
ENDCLASS.
183
195
```
184
-
Sound familiar? The abap2UI5 framework emulates the classic call screen and leave to screen behaviour here.
185
196
186
-
### Deployment
187
-
Deployment
188
-
### Cache
197
+
Why this improves Developer Experience:
198
+
- Dialog logic stays class-based and readable
199
+
- UI and logic stay in sync
200
+
- The flow mimics classic ABAP screen logic with modern UI5 behavior
201
+
202
+
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.
206
+
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.
208
+
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.
219
+
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.
221
+
222
+
**Why this improves Developer Experience:**
223
+
- 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
189
226
190
-
### Tools
191
-
SE80
227
+
### Tools – You Already Know Them
192
228
193
-
### Debugging
229
+
Great DX means you don’t have to learn new tools just to be productive.
194
230
195
-
### Sharing
196
-
abapGit
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.
197
232
233
+
**Why this improves Developer Experience:**
234
+
- Works out of the box in any ABAP system — no extra setup
235
+
- Familiar tooling: SE80, class editor, debugger
236
+
- Smooth transition for teams already comfortable with ABAP
237
+
238
+
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.
242
+
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
247
+
- No browser dev tools needed
248
+
- Reproducible, testable flows — event handlers run like regular ABAP methods
249
+
250
+
---
251
+
252
+
### Sharing – Built for abapGit
253
+
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:**
259
+
- Easy to clone and test others’ apps
260
+
- Ideal for team collaboration and code review
261
+
- Encourages modular, reusable components through shared repositories
198
262
199
263
200
264
### Summary
265
+
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.
0 commit comments