Skip to content

Commit 666b6ed

Browse files
committed
docs: make guide pages self-contained instead of delegating to LinkedIn
The Launchpad, BTP Build Work Zone, Mobile Start, Downporting, and Renaming pages consisted mostly of external LinkedIn article links. Each page now carries its own guide content; the articles remain as "Further Reading" at the bottom. - launchpad: add Installation section and a Launchpad Features section covering context detection (check_launchpad_active), dynamic tile title (set_title_launchpad), startup parameters (t_comp_params), and parameterized cross-app navigation incl. back navigation — all based on the LP_01–LP_04 samples - btp: explain the destination → connector app → Work Zone content architecture and add the Work Zone setup steps; link SAP's own Work Zone tutorials - mobile_start: document the actual setup path (Work Zone content mirrored into Mobile Start) instead of only linking out - downporting: describe the automated abaplint-based downport pipeline that generates the 702 branch - renaming: show how the abaplint rename configuration works and that CI guarantees renameability; cross-link the Builder - use_cases: demote the blog link to Further Reading Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01EC2cWJafPETwcMbh3NCsgH
1 parent f62a527 commit 666b6ed

6 files changed

Lines changed: 134 additions & 28 deletions

File tree

docs/advanced/downporting.md

Lines changed: 14 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -14,5 +14,17 @@ To install on an older system, use the `702` branch:
1414

1515
Some sample projects and other repositories also ship a downported version. Check whether a `702` branch is available.
1616

17-
#### Functionality
18-
For more on the downport feature, see the blog post [Running abap2UI5 on older R/3 Releases](https://www.linkedin.com/pulse/running-abap2ui5-older-r3-releases-downport-compatibility-abaplint-mjkle).
17+
#### How It Works
18+
The `702` branch is not maintained by hand — it is **generated** from `main` by an automated GitHub Actions workflow on every change. The pipeline runs [abaplint](https://abaplint.org)'s downport rule (`abaplint --fix` with a 7.02 target configuration), which rewrites modern syntax into 7.02-compatible equivalents, for example:
19+
20+
- inline declarations `DATA(x) = ...` → separate `DATA` statements
21+
- constructor expressions (`VALUE #( )`, `NEW #( )`, `CONV #( )`) → classic statements
22+
- `xsdbool( )``boolc( )`
23+
- string templates → concatenation where needed
24+
25+
A few small compatibility fix-ups follow (e.g. replacing exception types that don't exist on old releases), and the result is committed to the `702` branch. Because the transformation is fully automatic, the downported version stays feature-identical with `main` — you never wait for a manual backport.
26+
27+
The same mechanism runs in this project's CI (`npm run auto_downport`) to guarantee every change on `main` stays downportable.
28+
29+
#### Further Reading
30+
Background article: [Running abap2UI5 on older R/3 Releases](https://www.linkedin.com/pulse/running-abap2ui5-older-r3-releases-downport-compatibility-abaplint-mjkle).

docs/advanced/renaming.md

Lines changed: 18 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -10,9 +10,22 @@ The entire abap2UI5 project lives under the `z2ui5` namespace. You may need to r
1010

1111
abap2UI5 works with the abaplint renaming feature and supports namespaces up to 9 characters, e.g., `zabap2ui5`.
1212

13-
#### Functionality
14-
For more on renaming ABAP artifacts, see:
15-
[Automagic standalone renaming of ABAP objects](https://community.sap.com/t5/application-development-blog-posts/automagic-standalone-renaming-of-abap-objects/ba-p/13499851)
13+
#### How It Works
14+
[abaplint](https://abaplint.org) can rename ABAP artifacts across a whole repository: you define rename patterns (old name → new name, including regular expressions) in an abaplint configuration, and `abaplint --rename` rewrites every class, interface, and reference consistently, writing the result to an output folder:
1615

17-
For more background, see the blog post:
18-
[Renaming of ABAP Artifacts - The Power of abaplint and abapGit in ABAP Development](https://www.linkedin.com/pulse/renaming-abap-artifacts-power-abaplint-github-actions-development-kqede/).
16+
```jsonc
17+
"rename": {
18+
"output": "output",
19+
"patterns": [
20+
{ "type": "CLAS|INTF", "oldName": "z2ui5(.*)", "newName": "zmyns$1" }
21+
]
22+
}
23+
```
24+
25+
The renamed copy is a complete, installable abapGit project under your own namespace — install it side by side with the original, pin it to a release, or ship it inside your product. The abap2UI5 CI runs this transformation on every change (`npm run rename`, workflow `test_rename.yaml`) to guarantee the codebase stays renameable.
26+
27+
For a ready-made pipeline that builds a renamed release with your chosen add-ons included, see the [Builder](/advanced/builds).
28+
29+
#### Further Reading
30+
- [Automagic standalone renaming of ABAP objects](https://community.sap.com/t5/application-development-blog-posts/automagic-standalone-renaming-of-abap-objects/ba-p/13499851)
31+
- [Renaming of ABAP Artifacts — The Power of abaplint and abapGit in ABAP Development](https://www.linkedin.com/pulse/renaming-abap-artifacts-power-abaplint-github-actions-development-kqede/)

docs/configuration/btp.md

Lines changed: 28 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -3,15 +3,20 @@ outline: [2, 4]
33
---
44
# BTP Build Work Zone
55

6-
Embed your abap2UI5 apps into BTP services like SAP Build Work Zone. Full details:<br>
7-
[**Installation & Configuration of BTP**](https://www.linkedin.com/pulse/abap2ui5-integration-sap-business-technology-platform-13-installation-lf1re/?trackingId=YQ0y%2Fq0y6Kw5PK8chNCbrw%3D%3D&lipi=urn%3Ali%3Apage%3Ad_flagship3_pulse_read%3BFGBWUSIZRzeRjUNKBFD0uA%3D%3D)<br>
8-
[**Setup SAP Build Work Zone**](https://www.linkedin.com/pulse/abap2ui5-integration-sap-business-technology-platform-23-setup-ujdqe/?trackingId=vFwHvpI9oBk2igiz5P5CWA%3D%3D&lipi=urn%3Ali%3Apage%3Ad_flagship3_pulse_read%3BFGBWUSIZRzeRjUNKBFD0uA%3D%3D)<br>
6+
Embed your abap2UI5 apps into BTP services like SAP Build Work Zone. The integration follows the usual BTP pattern for on-premise or cloud ABAP backends:
7+
8+
1. **Destination** — a BTP destination points to the HTTP service of the ABAP system that runs your abap2UI5 apps.
9+
2. **Connector app** — a small standalone UI5 app from the [abap2UI5-addons](https://github.com/abap2UI5-addons) organization is deployed to BTP. It renders the abap2UI5 frontend and forwards every request through the destination to your ABAP backend.
10+
3. **Work Zone content** — the connector app is added as content in SAP Build Work Zone and assigned to a page/role. Which abap2UI5 app a tile starts is controlled via the `app_start` parameter, so one deployed connector serves any number of app tiles.
11+
12+
All app logic stays in ABAP — nothing app-specific is deployed to BTP.
913

1014
### Configuration
11-
<br>
1215

1316
#### Destination
1417

18+
Create this destination in your BTP subaccount (**Connectivity → Destinations**):
19+
1520
- Name: `BACKEND_ABAP2UI5`
1621
- Type: `HTTP`
1722
- Description: abap2UI5 Destination
@@ -21,9 +26,11 @@ Embed your abap2UI5 apps into BTP services like SAP Build Work Zone. Full detail
2126
- User: *(user)*
2227
- Password: *(password)*
2328

29+
For on-premise systems without direct internet exposure, use Proxy Type `OnPremise` with the SAP Cloud Connector; for production, prefer a principal-propagation or SAMLAssertion setup over basic authentication.
30+
2431
#### Extra Properties
2532

26-
SAP Build Work Zone needs these properties to route requests correctly to your ABAP backend:
33+
SAP Build Work Zone needs these additional properties to route requests correctly to your ABAP backend:
2734

2835
| Property | Value | Description |
2936
|---|---|---|
@@ -32,3 +39,19 @@ SAP Build Work Zone needs these properties to route requests correctly to your A
3239
| sap-client | *(your client number)* | The SAP system client to connect to (e.g., `001`) |
3340
| WebIDEEnabled | `true` | Enables the destination for SAP Business Application Studio |
3441
| WebIDEUsage | `odata_abap,dev_abap` | Declares supported protocols for development tools |
42+
43+
#### Work Zone Setup
44+
45+
1. Subscribe to **SAP Build Work Zone** (standard edition is sufficient) in your subaccount and open the **Site Manager**.
46+
2. Deploy the connector app from the [abap2UI5-addons](https://github.com/abap2UI5-addons) organization to your subaccount's HTML5 application repository.
47+
3. In the **Content Manager**, add the deployed app, assign it to a group and to the `Everyone` role (or your own role), and add it to a site page.
48+
4. Pass the abap2UI5 app class to start via the `app_start` parameter in the tile/target configuration — one deployment, one tile per app class.
49+
50+
After that, the tile opens your abap2UI5 app inside the Work Zone shell; the same content is also picked up by [SAP Mobile Start](/configuration/mobile_start).
51+
52+
### Further Reading
53+
The original article series with step-by-step screenshots:
54+
- [Installation & Configuration of BTP](https://www.linkedin.com/pulse/abap2ui5-integration-sap-business-technology-platform-13-installation-lf1re/)
55+
- [Setup SAP Build Work Zone](https://www.linkedin.com/pulse/abap2ui5-integration-sap-business-technology-platform-23-setup-ujdqe/)
56+
57+
SAP's own tutorials cover the generic Work Zone plumbing: [Configure SAP Build Work Zone](https://developers.sap.com/tutorials/spa-configure-workzone..html) and [Integrate Your Application with SAP Build Work Zone](https://developers.sap.com/tutorials/integrate-with-work-zone..html).

docs/configuration/launchpad.md

Lines changed: 59 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -3,10 +3,11 @@ outline: [2, 4]
33
---
44
# Fiori Launchpad
55

6-
Embed your abap2UI5 apps into SAP Fiori Launchpads. Full details: <br>
7-
[**(1) Installation & Configuration**](https://www.linkedin.com/pulse/copy-abap2ui5-host-your-apps-sap-fiori-launchpad-abap2ui5-ocn2e/) <br>
8-
[**(2) Features: Title, Parameters, Navigation**](https://www.linkedin.com/pulse/abap2ui5-host-your-apps-sap-fiori-launchpad-23-features-abap2ui5-upche/) <br>
9-
[**(3) Integration of KPIs**](https://www.linkedin.com/pulse/abap2ui5-host-your-apps-sap-fiori-launchpad-33-kpis-abap2ui5-uuxxe/) <br>
6+
Embed your abap2UI5 apps into the SAP Fiori Launchpad (FLP) on S/4 On-Premise or Private Cloud. Each app appears as a regular tile; inside the Launchpad shell, abap2UI5 apps can set their title, read startup parameters, and participate in cross-app navigation like any other Fiori app.
7+
8+
### Installation
9+
10+
The Launchpad loads the abap2UI5 frontend from the UI5 ABAP repository of your system (as app `z2ui5`). Install the Launchpad connector from the [abap2UI5-addons](https://github.com/abap2UI5-addons) organization via abapGit — it ships the frontend app for the UI5 repository. After the import, check that the app index is up to date (see [Troubleshooting](#troubleshooting) below).
1011

1112
### Target Mapping
1213
Use these parameters for target mapping in your Launchpad configuration. abap2UI5 uses the app's class name as the Semantic Object so each app gets its own navigation target — replace `Z2UI5_CL_MY_APP` with your app class:
@@ -16,14 +17,55 @@ Use these parameters for target mapping in your Launchpad configuration. abap2UI
1617
- ID: `z2ui5`
1718
- Parameter: `app_start / Z2UI5_CL_MY_APP`
1819

19-
### Cross App Navigation
20-
Handle view changes and popups through the abap2UI5 backend as usual. But for navigation *between* apps in a Launchpad, use the Launchpad's own cross-app navigation instead of a backend roundtrip — this keeps browser navigation and history working:
20+
### Launchpad Features
21+
22+
Inside your app, the client API gives you access to the Launchpad context. Runnable samples: `Z2UI5_CL_DEMO_APP_LP_01` to `Z2UI5_CL_DEMO_APP_LP_04` in the [samples repository](https://github.com/abap2UI5/samples).
23+
24+
#### Detect the Launchpad Context
25+
`client->get( )-check_launchpad_active` tells you whether the app currently runs inside a Launchpad — useful to hide your own page header or to guard Launchpad-only features:
26+
27+
```abap
28+
IF client->get( )-check_launchpad_active = abap_false.
29+
client->message_box_display( `This feature needs the Launchpad.` ).
30+
ENDIF.
31+
```
32+
33+
#### Set the Tile Title Dynamically
34+
Change the Launchpad shell title from ABAP at any time with the `set_title_launchpad` frontend event:
35+
2136
```abap
22-
client->_event_client(
23-
val = client->cs_event-cross_app_nav_to_ext
24-
t_arg = VALUE #( (
25-
`{ semanticObject: "Z2UI5_CL_LP_SAMPLE_04", action: "display" }`
26-
) ) ).
37+
client->action->gen(
38+
val = z2ui5_if_client=>cs_event-set_title_launchpad
39+
t_arg = VALUE #( ( `My Dynamic Title` ) ) ).
40+
```
41+
42+
#### Read Startup Parameters
43+
Parameters from the target mapping (or the start URL) arrive as name/value pairs in `client->get( )-t_comp_params`:
44+
45+
```abap
46+
DATA(lt_params) = client->get( )-t_comp_params.
47+
DATA(lv_product) = VALUE #( lt_params[ n = `PRODUCT` ]-v OPTIONAL ).
48+
```
49+
50+
#### Cross App Navigation
51+
Handle view changes and popups through the abap2UI5 backend as usual. But for navigation *between* apps in a Launchpad, use the Launchpad's own cross-app navigation instead of a backend roundtrip — this keeps browser navigation and history working. Fire the `cross_app_nav_to_ext` event with the target intent (and optional parameters, here taken from a bound structure):
52+
53+
```abap
54+
)->button(
55+
text = `go to app 128`
56+
press = client->_event_client(
57+
val = client->cs_event-cross_app_nav_to_ext
58+
t_arg = VALUE #(
59+
( `{ semanticObject: "Z2UI5_CL_LP_SAMPLE_04", action: "display" }` )
60+
( `$` && client->_bind_edit( nav_params ) ) ) ) )
61+
```
62+
63+
To navigate back to the previous Launchpad app, use `cross_app_nav_to_prev_app`:
64+
65+
```abap
66+
)->button(
67+
text = `BACK`
68+
press = client->_event_client( client->cs_event-cross_app_nav_to_prev_app ) )
2769
```
2870

2971
### Troubleshooting
@@ -58,8 +100,6 @@ Extend your Fiori Launchpad with Key Performance Indicators (KPIs) via the abap2
58100

59101
<i class="fa-brands fa-github"></i> [Repository](https://github.com/abap2UI5-addons/launchpad-kpi)
60102

61-
For more details, see the [blog post on LinkedIn](https://www.linkedin.com/pulse/abap2ui5-host-your-apps-sap-fiori-launchpad-33-kpis-abap2ui5-uuxxe/).
62-
63103
#### Functionality
64104
<img width="800" alt="Launchpad KPI tiles showing dynamic count values" src="https://github.com/abap2UI5/abap2UI5-connector_launchpad_kpi/assets/102328295/c7db9e46-6876-40d8-a632-be79e2fbcb91">
65105
<br>
@@ -107,3 +147,9 @@ ENDCLASS.
107147
```text
108148
.../sap/opu/odata/sap/Z2UI5_PROXY_KPI_SRV/ENTITYCollection/$count?$filter=CLASS eq 'z2ui5_cl_lp_kpi_hello_world'
109149
```
150+
151+
### Further Reading
152+
The original article series with additional screenshots:
153+
- [Installation & Configuration](https://www.linkedin.com/pulse/copy-abap2ui5-host-your-apps-sap-fiori-launchpad-abap2ui5-ocn2e/)
154+
- [Features: Title, Parameters, Navigation](https://www.linkedin.com/pulse/abap2ui5-host-your-apps-sap-fiori-launchpad-23-features-abap2ui5-upche/)
155+
- [Integration of KPIs](https://www.linkedin.com/pulse/abap2ui5-host-your-apps-sap-fiori-launchpad-33-kpis-abap2ui5-uuxxe/)

docs/configuration/mobile_start.md

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,4 +3,15 @@ outline: [2, 4]
33
---
44
# Mobile Start
55

6-
SAP Mobile Start surfaces your abap2UI5 apps as tiles in the mobile launchpad. You configure this on BTP with an HTTP destination pointing to your ABAP system, similar to [BTP Build Work Zone](/configuration/btp). The step-by-step guide: [**Setup SAP Mobile Start**](https://www.linkedin.com/pulse/abap2ui5-integration-sap-business-technology-platform-33-setup-uzure/).
6+
SAP Mobile Start surfaces your abap2UI5 apps as tiles in SAP's native mobile entry-point app (iOS/Android). No extra abap2UI5 development is needed — Mobile Start mirrors the content of your SAP Build Work Zone site.
7+
8+
### Setup
9+
10+
1. Complete the [BTP Build Work Zone](/configuration/btp) setup: destination to your ABAP system, deployed connector app, and the app added as Work Zone content.
11+
2. Enable **SAP Mobile Start** for your Work Zone site (Site Settings) and connect the Mobile Start app on the device to the site — typically by scanning the QR code from the site's settings page.
12+
3. Every abap2UI5 tile that is assigned to the user's role in Work Zone automatically appears in Mobile Start; tapping it opens the app in the mobile shell, rendered by the same ABAP backend.
13+
14+
Since abap2UI5 views are responsive UI5 controls, most apps work on phones as they are — check layouts with narrow screens in mind (see the [Device Model](/cookbook/model/device_model) page for adapting views to the device).
15+
16+
### Further Reading
17+
The original article with step-by-step screenshots: [Setup SAP Mobile Start](https://www.linkedin.com/pulse/abap2ui5-integration-sap-business-technology-platform-33-setup-uzure/).

docs/get_started/use_cases.md

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,8 +5,6 @@ outline: [2, 4]
55

66
abap2UI5 fits many contexts, whether you work in a cloud-ready environment or with classic ABAP.
77

8-
For a complete overview, see the [Use Cases blog post](https://www.linkedin.com/pulse/use-cases-abap2ui5-overview-abap2ui5-udbde/?trackingId=6iIX%2FNk%2BCT0%2B4JorQjpRSQ%3D%3D).
9-
108
The sections below follow SAP's standard extensibility model. **On-stack** means the app runs inside your SAP system; **side-by-side** means it runs on a separate system (for example the BTP ABAP Environment) and calls your SAP system remotely. Within each approach, SAP defines three tiers by how "clean core" the extension is: **Tier 1** uses only released, upgrade-stable APIs; **Tier 2** wraps not-yet-released APIs behind your own released interface; **Tier 3** uses classic, unreleased APIs — maximum freedom, but less upgrade stability.
119

1210
### On-Stack Extension
@@ -36,3 +34,6 @@ For more flexibility, build apps whose lifecycle is independent of your S/4 syst
3634
### Software as a Service (SaaS)
3735
With a Tier 1 side-by-side extension, you can connect a single abap2UI5 app to multiple S/4 systems. Use the same abap2UI5 code across customer tenants and remote systems for a real SaaS setup:
3836
![SaaS architecture connecting one abap2UI5 app to multiple S/4 tenants](/get_started/image-9.png){ width=60% }
37+
38+
### Further Reading
39+
Background article with additional scenarios: [Use Cases of abap2UI5 — an Overview](https://www.linkedin.com/pulse/use-cases-abap2ui5-overview-abap2ui5-udbde/).

0 commit comments

Comments
 (0)