Skip to content

Add packages 11-14 (RAP file upload, RAP actions, Excel & e-mail, Adobe Forms) and a launchpad URL sample - #100

Merged
oblomov-dev merged 2 commits into
mainfrom
claude/dreamy-cray-p2ea9r
Oct 18, 2026
Merged

oblomov-dev merged 2 commits into
mainfrom
claude/dreamy-cray-p2ea9r

Conversation

@oblomov-dev

Copy link
Copy Markdown
Member

Four new packages, each with its own release floor and its own generated branch, plus one sample in 09.

New packages

Package Objects Samples
11 RAP File Upload BO Z2UI5_R_SMPS_FIL, the abstract entities Z2UI5_A_SMPS_FILE_UPLOAD / _FILE_STREAM (@Semantics.largeObject), static action uploadFile with a deep parameter 016: FileUploader → base64 → EXECUTE uploadfile, list, download, delete
12 RAP Actions & Permissions BO Z2UI5_R_SMPS_REQ with instance feature control, reject with a parameter, factory action copyRequest, static factory action createRequest, default function GetDefaultsForCreate, determine action checkRequest, projection Z2UI5_C_SMPS_REQ 017 GET PERMISSIONS drives the buttons · 018 parameters, factory actions, defaults in popups · 019 validate while typing via the determine action, without saving · 020 one BO, two contracts, cl_abap_behv_aux
13 Excel & E-Mail Z2UI5_CL_SMPS_XLSX wraps the XCO XLSX library 021 read an uploaded .xlsx · 022 export a table as .xlsx · 023 send it as a mail attachment with cl_bcs_mail_message
14 Adobe Forms – 024: forms rendered to PDF through FP_JOB_OPEN and the generated function module, one as a PDF, several as one ZIP

Plus 09 Launchpad: 025 builds the URL of a launchpad app via cl_lsapi_manager (called by name, signature read with RTTI) where the system has it, and as an intent URL of its own where it does not.

The overview app, .github/packages.json, both README tables, the package READMEs, SAMPLES.md, catalogue.json and catalogue-derived.json are updated. Regenerate Demo Data also fills the request BO. The package count in prose goes from ten to fourteen.

Floors

Package Runs on Note
11 Cloud + Standard ≥ 8.16 (2025) deep action parameter with a stream
12 Cloud + Standard ≥ 8.16 (2025) conservative: set by the default function and cl_abap_behv_aux; the rest is older
13 Cloud + Standard ≥ 7.58 (2023) XCO XLSX and cl_bcs_mail_message
14 Standard only, ≥ 7.50 classic Adobe Forms runtime, not released for ABAP Cloud

One deliberate exception

abaplint cannot parse GET PERMISSIONS at any language version. The statement sits alone in Z2UI5_CL_SMPS_PERM_REQ, which is added to noIssues in abaplint.jsonc the same way the RAP event handler of 05 is. The app that calls it stays fully checked.

Verification

  • npm run check: green (abaplint, abap2UI5 linter including the render of every view, overview, keywords, titles, abapdoc, SAMPLES.md, catalogue, app-rules, ATC, prose, derived, released-API).
  • Each new package branch was built with build-package-branch.mjs in a throwaway copy and linted at its own release: 09 at v740sp08, 14 at v750, and 11/12/13 at v757. 09/11/12/13 were also linted at the ABAP Cloud language version. All clean.
  • Not run on a real SAP system. Worth checking on activation:
    • the shape of the deep %param in 11 (_streamproperties as a structure for [1]);
    • the release floors of 12 and 13;
    • the runtime signature of cl_lsapi_manager (the sample falls back to its own URL if it differs);
    • 024 with a form of your own, because there is no shipped default form.

Generated by Claude Code

A new package with its own floor (ABAP Platform 2025): the business object
Z2UI5_R_SMPS_FIL takes a file through its static action uploadFile, whose
deep parameter (abstract entities Z2UI5_A_SMPS_FILE_UPLOAD and
Z2UI5_A_SMPS_FILE_STREAM, @Semantics.largeObject) carries content, MIME type
and name. Z2UI5_CL_SMPS_APP_016 picks the file with the z2ui5 FileUploader,
calls the action with EML, and lists, downloads and deletes the stored files.

The package README also explains why the file size limit is the same as for
Fiori Elements: OData V4 JSON carries Edm.Binary as base64 as well.

Overview app, packages.json, both README tables, SAMPLES.md and the two
catalogue files are updated; the package count in the prose goes from ten
to eleven.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01NNqpKVX6ESgcLVqeWXeHc5
12 - RAP Actions & Permissions: the business object Z2UI5_R_SMPS_REQ with
instance feature control, an action with a parameter, an instance and a
static factory action, a default function, a determine action and a
projection. Samples Z2UI5_CL_SMPS_APP_017 to _020: GET PERMISSIONS drives the
buttons, parameters travel in %param, a determine action validates while
the user types, and the handler tells the two contracts apart with
cl_abap_behv_aux. GET PERMISSIONS sits in Z2UI5_CL_SMPS_PERM_REQ, which is
listed in noIssues because abaplint does not parse the statement.

13 - Excel & E-Mail: Z2UI5_CL_SMPS_XLSX wraps the XCO XLSX library;
Z2UI5_CL_SMPS_APP_021 reads an uploaded .xlsx, _022 exports a table as
.xlsx, _023 sends it as a mail attachment with cl_bcs_mail_message.

14 - Adobe Forms: Z2UI5_CL_SMPS_APP_024 renders forms to PDF through
FP_JOB_OPEN and the generated function module, one as a PDF download,
several as one ZIP.

09 - Launchpad: Z2UI5_CL_SMPS_APP_025 builds the URL of a launchpad app,
through cl_lsapi_manager (called by name, signature read with RTTI) where
the system has it, as an intent URL of its own where it does not.

Overview app, packages.json, both README tables, the package READMEs,
SAMPLES.md and the two catalogue files are updated; Regenerate Demo Data
in the overview also fills the request business object.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01NNqpKVX6ESgcLVqeWXeHc5
@oblomov-dev
oblomov-dev merged commit 594b979 into main Oct 18, 2026
31 checks passed
@oblomov-dev
oblomov-dev deleted the claude/dreamy-cray-p2ea9r branch October 18, 2026 12:23
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants