Skip to content

Commit b040bce

Browse files
authored
Update dx.md
1 parent 0a6f44b commit b040bce

File tree

1 file changed

+101
-29
lines changed
  • docs/advanced/technical

1 file changed

+101
-29
lines changed

docs/advanced/technical/dx.md

Lines changed: 101 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -6,9 +6,9 @@ Good Developer Experience means writing code feels natural, testing changes is f
66

77
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.
88

9-
### Write - if_oo_adt_classrun
9+
### Output - if_oo_adt_classrun
1010

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.
1212

1313
```abap
1414
CLASS zcl_app_adt DEFINITION PUBLIC CREATE PUBLIC.
@@ -22,13 +22,13 @@ CLASS zcl_app_adt IMPLEMENTATION.
2222
ENDMETHOD.
2323
ENDCLASS.
2424
```
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
3030

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:
3232

3333
```abap
3434
CLASS zcl_app_ui5 DEFINITION PUBLIC CREATE PUBLIC .
@@ -42,21 +42,24 @@ CLASS zcl_app_ui5 IMPLEMENTATION.
4242
ENDMETHOD.
4343
ENDCLASS.
4444
```
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
4849

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:
5055

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:
5356
```abap
5457
REPORT zre_app_input.
5558
PARAMETERS pa_arbgb TYPE t100-arbgb DEFAULT 'MDG_TR'.
5659
START-OF-SELECTION.
5760
MESSAGE |Input: { pa_arbgb }| type 'I'.
5861
```
59-
this is thew wy we can do it with abap2ui5:
62+
abap2UI5 brings this idea into the browser with a view-based UI:
6063
```abap
6164
CLASS zcl_app_input DEFINITION PUBLIC CREATE PUBLIC.
6265
PUBLIC SECTION.
@@ -79,10 +82,15 @@ CLASS zcl_app_input IMPLEMENTATION.
7982
ENDMETHOD.
8083
ENDCLASS.
8184
```
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
8289

83-
### ABAP List Viewer
8490

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:
8694
```abap
8795
REPORT zre_app_alv.
8896
@@ -98,7 +106,7 @@ cl_salv_table=>factory(
98106
t_table = gt_t100 ).
99107
go_salv->display( ).
100108
```
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 cloud ready 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:
102110
```abap
103111
CLASS zcl_app_alv DEFINITION PUBLIC.
104112
PUBLIC SECTION.
@@ -131,9 +139,13 @@ CLASS zcl_app_alv IMPLEMENTATION.
131139
ENDMETHOD.
132140
ENDCLASS.
133141
```
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
134146

135147
### popup_to_confirm
136-
Logic events...
148+
Classical ABAP uses POPUP_TO_CONFIRM to ask users for simple confirmations:
137149
```abap
138150
REPORT zre_app_alv.
139151
@@ -152,7 +164,7 @@ CASE event.
152164
MESSAGE `the result is NO` TYPE 'I'.
153165
ENDCASE.
154166
```
155-
in abap2UI5
167+
abap2UI5 offers a matching approach using z2ui5_cl_pop_to_confirm:
156168
```abap
157169
CLASS zcl_app_alv_event DEFINITION PUBLIC.
158170
PUBLIC SECTION.
@@ -181,20 +193,80 @@ CLASS zcl_app_alv_event IMPLEMENTATION.
181193
ENDMETHOD.
182194
ENDCLASS.
183195
```
184-
Sound familiar? The abap2UI5 framework emulates the classic call screen and leave to screen behaviour here.
185196

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
189226

190-
### Tools
191-
SE80
227+
### Tools – You Already Know Them
192228

193-
### Debugging
229+
Great DX means you don’t have to learn new tools just to be productive.
194230

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.
197232

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
198262

199263

200264
### 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

Comments
 (0)