Skip to content

Add three new demo apps and reorganize catalog structure - #695

Merged
oblomov-dev merged 7 commits into
standardfrom
claude/abap2ui5-navigation-concept-0zyxbu
Jul 26, 2026
Merged

Add three new demo apps and reorganize catalog structure#695
oblomov-dev merged 7 commits into
standardfrom
claude/abap2ui5-navigation-concept-0zyxbu

Conversation

@oblomov-dev

Copy link
Copy Markdown
Member

Summary

This PR adds three new demonstration applications showcasing advanced abap2UI5 features, reorganizes the demo app catalog structure, and updates class descriptions to reflect new categorization.

Key Changes

New Demo Applications

  • z2ui5_cl_demo_app_319 (moved to src/00/00): Comprehensive SmartMultiInput demo showing how UI5 range conditions map to ABAP SELECT-OPTIONS. Demonstrates value help integration, multiple operators (contains, between, greater-than, exclude), and real-time filtering of local product data with derived range tables.

  • z2ui5_cl_demo_app_468: Navigation routing modes demo illustrating three hash-routing strategies:

    • default: No URL route (original behavior)
    • fresh: URL carries class only, browser Back restarts app
    • keep: URL carries app-state draft, browser Back restores exact state
  • z2ui5_cl_demo_app_469: Detail page helper for routing demo, demonstrating navigation via nav_app_call() and state restoration patterns.

  • z2ui5_cl_demo_app_470: Popup aggregation binding demo showing element-binding of popup slots to selected table rows, enabling relative bindings (including nested aggregations) without copying data into event args.

Catalog and Organization Updates

  • Reorganized demo app catalog in z2ui5_cl_demo_app_g00 with new grouping:

    • Browser-related apps (Clipboard, Soft Keyboard, Logout, URL, Phone/Email, Title) moved from "Input" to "Browser" category
    • Message-related apps reorganized under "Message" category
    • New entries for routing modes and aggregation binding demos
  • Updated class descriptions to reflect new categorization (e.g., "Input - Clipboard" → "Browser - Clipboard")

File Reorganization

  • Moved demo apps between src/00/00, src/00/02, and src/01/01 directories per project folder scheme conventions
  • Renamed and reorganized supporting demo apps (313, 314, 315, 325, 352, 361, 362, 363, 421, 467, 458)

Code Updates

  • Enhanced z2ui5_cl_demo_app_314 with updated OData model references (BusinessPartnerSet instead of BookingSupplement)
  • Minor formatting adjustments to class implementations

Implementation Details

  • SmartMultiInput demo includes comprehensive operator mapping (EQ, NE, CONTAINS, STARTSWITH, ENDSWITH, BT, NB, GT, GE, LT, LE, EMPTY) to ABAP range syntax
  • Routing modes demo demonstrates practical use of client->set_nav_routing() and client->nav_app_call() for browser history management
  • Aggregation binding demo uses client->follow_up_action() with cs_event-bind_element for context-aware popup binding

https://claude.ai/code/session_01A2ZwFMJkUWSnJjA4MPYRMk

claude and others added 7 commits July 25, 2026 18:00
New sample z2ui5_cl_demo_app_468 ("Navigation - Routing modes") demonstrates the
three modes of client->set_nav_routing( ) so the difference is observable with
the browser Back button: pick a mode, add some state (type / raise a counter),
open the detail page via nav_app_call, then press the browser Back button and
watch the page:

  - default : no #/app route - browser Back leaves the app (in-app Back returns)
  - fresh   : route by class only - browser Back restarts the app empty
  - keep    : route by class + draft - browser Back restores the exact state

z2ui5_cl_demo_app_469 is the hidden detail page it navigates to (ZZZ helper).
Both live in 01/02 (framework use cases). Regenerated the overview catalogs;
the regeneration also synced pre-existing DESCRIPT drift (apps 139, 346, 421,
466).

Note: relies on set_nav_routing( mode ) / cs_nav_mode from abap2UI5; samples CI
lints against abap2UI5 main and will be green once that framework change lands.
New sample z2ui5_cl_demo_app_470 ("Popup - Aggregation binding") shows how to
bind a popup to one row of an aggregation with client->follow_up_action(
cs_event-bind_element, view = cs_view-popup ): the main table is bound to the
product aggregation, and pressing a row's "components" button opens a popup that
uses relative bindings only ({NAME}, {CATEGORY}, and the nested aggregation
{T_ITEM}). The element bind points the whole popup slot at /T_PRODUCT/<index>
(the index arrives as the event arg from the pressed control's binding context),
so the popup - including its component list's aggregation binding - resolves
against the selected product without copying any data into event args.

Regenerated the overview catalog: adds the app_470 tile and syncs the catalog
to the tree (the preceding file moves to src/01/01 had left it stale).
Turns the WIP SmartMultiInput sample into an end-to-end demo of the control's
strength: define conditions on Product Type via the OData value help (contains,
between, greater-than, exclude, several at once) and the backend translates the
returned ranges into a real ABAP RANGE (do_search: Contains -> CP *x*,
StartsWith/EndsWith -> CP, BT, GT/GE/LT/LE, exclude -> SIGN 'E') and filters a
local demo product list with `... WHERE product_type IN <range>`. The derived
SELECT-OPTIONS (SIGN/OPTION/LOW/HIGH) and the matching rows are both shown, plus
a live match count. Removed the debug range-content message box; kept the
ProductType / UI_PRODUCTLIST OData wiring. Also regenerated the overview catalog
to mirror the current tree.
- app_470: vbox( class = ... ) -> vbox( ... ) (class is the PREFERRED parameter)
- app_315: view_display( val = ... ) -> view_display( ... ) (val is the first,
  mandatory parameter)

These only surface with full framework symbol resolution (CI), not in a
formatting-only lint. The remaining ABAP_STANDARD errors on app_468 (cs_nav_mode /
set_nav_routing) are the cross-repo dependency on abap2UI5#2476 and clear once
that framework change is on main.
@oblomov-dev
oblomov-dev merged commit 488feae into standard Jul 26, 2026
7 checks passed
@oblomov-dev
oblomov-dev deleted the claude/abap2ui5-navigation-concept-0zyxbu branch July 26, 2026 11:58
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