Skip to content

Commit 666c45f

Browse files
committed
docs: expand downporting page with article content
Incorporate the LinkedIn article 'Running abap2UI5 on older R/3 Releases': installation steps for old releases, cloud connectivity via the RFC/HTTP connectors, and the four design principles that keep the codebase compatible from ABAP 7.02 up to ABAP Cloud (basic technology only, few SAP dependencies, version-independent code, generated 702 syntax). Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01J3CfpdPhr5mMXJGfmhCaLf
1 parent 312b263 commit 666c45f

1 file changed

Lines changed: 23 additions & 1 deletion

File tree

docs/advanced/downporting.md

Lines changed: 23 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,15 @@ 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+
#### Installation
18+
The installation on an old release follows the normal [installation](/configuration/installation) flow with two adjustments:
19+
1. Pull the `702` branch with abapGit — abapGit itself is 7.02-compatible, so deployment to old ECC machines works the same way as everywhere else
20+
2. Create the HTTP handler (SICF service) with the 7.02-compatible handler syntax instead of the modern snippet
21+
22+
After that, call your HTTP handler from the browser and abap2UI5 is ready for use — even on your old machine.
23+
24+
If you later want to reach these apps from the cloud, use the [RFC Connector](/advanced/rfc): it calls abap2UI5 apps on legacy systems via BTP destination and RFC, integrating them into Steampunk, S/4 Public Cloud, Fiori Launchpads, or SAP Mobile Start. The [HTTP Connector](/advanced/http) offers the same over HTTP.
25+
1726
#### How It Works
1827
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:
1928

@@ -22,9 +31,22 @@ The `702` branch is not maintained by hand — it is **generated** from `main` b
2231
- `xsdbool( )``boolc( )`
2332
- string templates → concatenation where needed
2433

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.
34+
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. And since the main code line stays on 7.50 syntax, contributors write and debug modern ABAP instead of 7.02 syntax.
2635

2736
The same mechanism runs in this project's CI (`npm run auto_downport`) to guarantee every change on `main` stays downportable.
2837

38+
#### Why abap2UI5 Is Downportable
39+
Automatic syntax rewriting is only the last step. The codebase is compatible with everything from ABAP 7.02 up to the newest ABAP Cloud because of four design principles:
40+
41+
**1. Only basic technology.** No OData services, CDS views, or new EML syntax — none of these exist on older ECCs. Conversely, no SAP GUI or other statements forbidden in ABAP Cloud. The only universally available technology is a plain HTTP service (defined via SICF on-premise, via Eclipse in the cloud), and that is all abap2UI5 needs for communication.
42+
43+
**2. Few SAP dependencies.** SAP APIs like `/UI2/CL_JSON` or function modules may be missing or behave differently on certain releases, and their availability per release is poorly documented. abap2UI5 therefore replaces SAP dependencies with open-source projects where possible — most importantly [ajson](/technical/tools/ajson) for JSON handling, which is compatible from 7.02 to ABAP Cloud and ships bundled under the `z2ui5` namespace. Browse [dotabap.org](https://dotabap.org) for more open-source projects that can reduce your own dependencies.
44+
45+
**3. Version-independent code.** Where a dependency is unavoidable and SAP offers different APIs per language version (e.g., generating UUIDs), abap2UI5 uses a hybrid approach: dynamic ABAP calls the new API in ABAP for Cloud and falls back to the classic API in Standard ABAP — one code line, no syntax errors on either side. Not always elegant, but very pragmatic.
46+
47+
**4. Downported syntax.** The main code line is written in 7.50 syntax and the `702` branch is generated automatically, as described above.
48+
49+
Keep these principles in mind if you want to set up your next abapGit project with compatibility for older releases.
50+
2951
#### Further Reading
3052
Background article: [Running abap2UI5 on older R/3 Releases](https://www.linkedin.com/pulse/running-abap2ui5-older-r3-releases-downport-compatibility-abaplint-mjkle).

0 commit comments

Comments
 (0)