Skip to content

Commit 3e1c288

Browse files
authored
Update dx.md
1 parent b040bce commit 3e1c288

File tree

1 file changed

+46
-70
lines changed
  • docs/advanced/technical

1 file changed

+46
-70
lines changed

docs/advanced/technical/dx.md

Lines changed: 46 additions & 70 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,14 @@
1-
# Developer Experience: Keeping It Simple
1+
# Developer Experience: Keeping Things Simple
22

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

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

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

9-
### Output - if_oo_adt_classrun
9+
### API I: Output with if_oo_adt_classrun
1010

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

1313
```abap
1414
CLASS zcl_app_adt DEFINITION PUBLIC CREATE PUBLIC.
@@ -25,11 +25,10 @@ ENDCLASS.
2525
Why this improves Developer Experience:
2626
- The entire app lives in a single file — fast to navigate, easy to debug
2727
- 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
3230

31+
This simple design inspired abap2UI5. Here's the equivalent functionality implemented in abap2UI5:
3332
```abap
3433
CLASS zcl_app_ui5 DEFINITION PUBLIC CREATE PUBLIC .
3534
PUBLIC SECTION.
@@ -42,24 +41,24 @@ CLASS zcl_app_ui5 IMPLEMENTATION.
4241
ENDMETHOD.
4342
ENDCLASS.
4443
```
45-
Additional DX Benefits in abap2UI5:
44+
45+
Additional Benefits in abap2UI5:
4646
- 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
4949

50-
This example sets the tone for the rest of the framework: minimal setup, full backend control, and great compatibility.
5150

52-
### Input - Selection Screen
51+
### API II: Input with Selection Screen
5352

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

5655
```abap
5756
REPORT zre_app_input.
5857
PARAMETERS pa_arbgb TYPE t100-arbgb DEFAULT 'MDG_TR'.
5958
START-OF-SELECTION.
6059
MESSAGE |Input: { pa_arbgb }| type 'I'.
6160
```
62-
abap2UI5 brings this idea into the browser with a view-based UI:
61+
abap2UI5 brings this concept into the browser:
6362
```abap
6463
CLASS zcl_app_input DEFINITION PUBLIC CREATE PUBLIC.
6564
PUBLIC SECTION.
@@ -87,10 +86,10 @@ Why this improves Developer Experience:
8786
- Easy to test: reload the page, enter input, press the button
8887
- Everything is still in a single class — no external UI tooling needed
8988

89+
### API III: Output Tables with ABAP List Viewer
9090

91-
### Output Tables - ABAP List Viewer
91+
CL_SALV_TABLE brought major productivity gains to classic ABAP:
9292

93-
In classical ABAP, CL_SALV_TABLE was a major step forward in developer productivity:
9493
```abap
9594
REPORT zre_app_alv.
9695
@@ -106,7 +105,7 @@ cl_salv_table=>factory(
106105
t_table = gt_t100 ).
107106
go_salv->display( ).
108107
```
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:
110109
```abap
111110
CLASS zcl_app_alv DEFINITION PUBLIC.
112111
PUBLIC SECTION.
@@ -142,10 +141,11 @@ ENDCLASS.
142141
Why this improves Developer Experience:
143142
- Data binding is straightforward and localized
144143
- 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:
146148

147-
### popup_to_confirm
148-
Classical ABAP uses POPUP_TO_CONFIRM to ask users for simple confirmations:
149149
```abap
150150
REPORT zre_app_alv.
151151
@@ -165,6 +165,7 @@ CASE event.
165165
ENDCASE.
166166
```
167167
abap2UI5 offers a matching approach using z2ui5_cl_pop_to_confirm:
168+
168169
```abap
169170
CLASS zcl_app_alv_event DEFINITION PUBLIC.
170171
PUBLIC SECTION.
@@ -200,73 +201,48 @@ Why this improves Developer Experience:
200201
- The flow mimics classic ABAP screen logic with modern UI5 behavior
201202

202203

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
206205

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

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
219214

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

222-
**Why this improves Developer Experience:**
217+
Why this improves Developer Experience:
223218
- 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
226220

227-
### Tools – You Already Know Them
221+
### Tools
228222

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

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:
234226
- Works out of the box in any ABAP system — no extra setup
235-
- Familiar tooling: SE80, class editor, debugger
236227
- Smooth transition for teams already comfortable with ABAP
237228

229+
### Debugging
238230

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

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
247235
- No browser dev tools needed
248-
- Reproducible, testable flows — event handlers run like regular ABAP methods
249236

250-
---
237+
### Sharing
251238

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

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:
259242
- Easy to clone and test others’ apps
260243
- Ideal for team collaboration and code review
261244
- Encourages modular, reusable components through shared repositories
262245

263-
264246
### Summary
265247

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

Comments
 (0)