abap2UI5
Version 1.146.0

Release Notes ​

See Deprecations for what is superseded but still shipping, and for the full removal list with migration notes.

1.146.0 ​

2026-09-29

  • Embedded mode: a component loaded through ?z2ui5-bundle (z2ui5.embed.Container of abap2UI5/embed-control), or given componentData.embedded = true by a host's ComponentContainer, leaves the URL to its host - it neither reads nor writes the hash. A Fiori elements object page keeps its route across roundtrips
  • Embedded mode: an app no longer takes the focus from the host page, leaves no z2ui5 global behind, and its developer tools no longer capture the host's console and errors. Restart in the error dialog restarts the app in place instead of reloading the host's page
  • Page transitions: view_display( transition = ... ) animates the new main view (slide, baseSlide, fade, flip, show); nav_app_leave( ), the browser Back button and transition_back = abap_true play it reversed. Try them with the sample Z2UI5_CL_SMP_APP_531
  • cs_event-start_timer takes `X` as its third argument to keep the busy indicator down for a tick
  • Security: the default CSP allows 'wasm-unsafe-eval' for scripts, so the WebAssembly barcode scanners (sap.ndc.BarcodeScannerButton, the BarcodeScanner of abap2UI5-addons) work; 'unsafe-eval' stays out
  • New on npm: @abap2ui5/bsp - a UI5 app as an abapGit BSP and back (npx @abap2ui5/bsp app2bsp webapp --name ZMYAPP, bsp2app, check)
  • @abap2ui5/node-runtime: responses are compressed with gzip, a roundtrip with a large table is linear again, express 4 works next to express 5, own app classes that extend something load, and the test apps ZCL_TST_* are no longer in the package

1.145.0 ​

2026-09-26

  • Security: the default Content Security Policy no longer allows 'unsafe-inline' or 'unsafe-eval' for scripts. The page's one inline script runs by its SHA-256 hash, and the default names img-src and media-src explicitly - an exit that needs a cross-origin icon or sound host adds it there. On UI5 1.71 to 1.82, only a module a popup names in a binding type or core:require still needs 'unsafe-eval'; switch it on in z2ui5_if_ui5_exit
  • Several z2ui5.Component instances can run side by side on one page - a launchpad in keep-alive mode or a host that creates the component twice no longer corrupts the first one. A host app that embeds the component names its backend with componentData.endpoint
  • Added GET <node>?z2ui5-bundle: the frontend as a script of its own, for a UI5 app that embeds the z2ui5 component instead of opening the page. Without the parameter a GET is the page, as before
  • Node hosting: every release publishes @abap2ui5/node-runtime on npm - abap2UI5 transpiled to JavaScript, with serve( ) and the downported ABAP sources for your own app classes
  • The frontend's diagnostics also go to the browser console with sap-ui-logLevel=WARNING, and a keyboard shortcut can bind the + key ("Ctrl++")
  • An app class in a namespace (/NS/CL_X) survives reload, bookmark and Back/Forward through hash routing; URL parameters in front of the launchpad's sap-startup-params are kept
  • The app start checks that a class named by the URL, the hash or the launchpad implements z2ui5_if_app before it is created
  • styles_css from the user exit applies again
  • Fixes in navigation (nav_app_leave( ) two levels up and after an expired draft), in the model (a cleared table reference, empty date and time fields, negative UTC offsets), in popups during Back/Forward, in the CSRF check behind a proxy on :443, and in the 7.02 branch's test classes
  • The view builder raises VIEW_BUILDER_ERROR on an attribute or element name that is no XML name, instead of producing a view the browser refuses
  • The framework's own views and popups get component-prefixed ids (<component>---mainView); ids an app declares are unchanged. Only CSS or scripts that match the full rendered DOM id need a look

Removed

  • BREAKING: the global z2ui5 object - no window.z2ui5 any more; the frontend keeps its state per component
  • BREAKING: cs_event-z2ui5 and the obsolete popup z2ui5_cl_pop_js_loader → a custom control in z2ui5_ccc
  • BREAKING: raw JavaScript in follow_up_action( ) → cs_event-control_global, cs_event-control_by_id, cs_event-hash_back, or a custom control in z2ui5_ccc
  • BREAKING: custom_js and title in the user exit's HTTP config → a custom control in z2ui5_ccc; cs_event-set_title
  • BREAKING: the z2ui5.Util and z2ui5.Formatter globals and the z2ui5/Util module → core:require of z2ui5/model/formatter

See Deprecations for the migration of each.

1.144.1 ​

2026-09-22

  • Added app-owned hash routing: client->hash_set( ) / hash_replace( ) write the URL fragment (a pushed or a replaced history entry), cs_event-hash_back steps back with an optional fallback hash, cs_event-hash_attach_changed raises a backend event on a hash change the app did not make, and cs_event-hash_routing sets the routing mode. app_state_set_active( ) keeps the id of the current app state in the URL, and app_state_get_href( ) hands that share link to ABAP
  • Added s_ctrl-check_queue_last on _event( ): an event fired while a round-trip is in flight is kept and sent after it, the last one wins — the flag for a live wire such as a search field. s_ctrl-check_no_busy keeps the busy overlay down on such a wire, so it no longer flashes over the field being typed into
  • Added a( t = … ) on the view builder: text passed as t renders literally, a brace or a backslash in it is shown instead of parsed as a binding. Use it for data and user input in a view attribute; v keeps the binding vocabulary
  • message_box_display( ) shows any data, not only messages — a table, a nested structure, a tree, an object, a number — and a box with details shows them open instead of behind a Show details link. Messages (BAPIRET2, T100, RAP, exceptions, …) are still recognized first and set severity and title
  • STORE_DATA reads a model-path payload, so a handler can write browser storage too, not only a view wire
  • CONTROL_BY_ID resolves the argument of setCurrentStep to a control, so a Wizard step can be set by id
  • A misused view builder chain raises an exception the app can catch, instead of producing a broken view
  • Performance: the view builder concatenates once per render, a conditional GET of the shell page is answered before the page is built, the XML templating preprocessor runs only for a view that uses templating, and several things the engine computed on every request are computed once
  • The default response headers no longer include Cross-Origin-Opener-Policy — on a plain-HTTP system the browser ignored it and logged a console error on every start
  • Hosting outside an SAP system: seams for the draft store and the environment, and the transpiled framework is packaged for npm (published as @abap2ui5/node-runtime from the next release on); every release carries the backend already built (backend-<version>.tar.gz)
  • The start page no longer loses its second roundtrip, and the OData model is loaded only when an app uses it
  • Many smaller fixes from code reviews of the ABAP and the frontend core

Removed

  • BREAKING: the view parameter of _bind( ) / _bind_edit( ) — it had done nothing for a long time; delete it
  • BREAKING: set_push_state( ) / cs_event-set_push_state, set_app_state_active( ) / cs_event-set_app_state_active and cs_event-set_nav_routing — renamed to hash_set( ), app_state_set_active( ) and cs_event-hash_routing above; the wire values are unchanged
  • BREAKING: cs_event-clipboard_app_state → app_state_get_href( ) + cs_event-clipboard_copy
  • BREAKING: cs_event-wizard_set_next_step → two control_by_id calls
  • BREAKING: cs_event-keyboard_set_mode → the bound inputMode property of z2ui5.cc.InputExt, which survives a re-render
  • BREAKING: cs_event-nav_container_to and its nest_ / nest2_ / popup_ / popover_ variants → cs_event-control_by_id with method to
  • BREAKING: cs_event-image_editor_popup_close
  • BREAKING: _event( s_ctrl-check_allow_multi_req ) → s_ctrl-check_queue_last
  • BREAKING: the pure UI5 options of message_toast_display( ) and message_box_display( ) (width, docking, animation and the like) — set them on the control through cs_event-control_global
  • BREAKING: the released DDIC structure Z2UI5_T_02 — name a type your own system has

See Deprecations for the migration of each.

1.144.0 ​

2026-08-30

  • Added client->_event( arg = … ), the one-value spelling of t_arg. arg = x is exactly t_arg = VALUE #( ( x ) ) — the client folds it into the same table, so the wire and get_event_arg( ) are unchanged — and it exists because most event wires carry a single value (a row key, a ${$source>/…}, one event parameter), where the table constructor is longer than the value inside it. Passing both appends arg behind the t_arg rows. From two values on, t_arg stays the right parameter: there is deliberately no arg2/arg3
  • Added client->_bind_path( val ), the path form of _bind( ) under a name of its own — what a bound aggregation, a binding_call filter/sorter and bindElement need. It is _bind( val = … path = abap_true ), byte for byte, and takes one parameter; combine path with tab/tab_index, omit_initial, json or switch_default_model and _bind( ) is still the call. path stays on _bind( ) and is not deprecated
  • Frontend actions: expandSelected / collapseSelected on a tree table, setBadgeMinValue / setBadgeMaxValue, IconPool.registerFont for a custom icon font (sap.tnt's SAP-icons-TNT is the common one — without the registration such an icon renders no glyph and logs nothing), and addCustomCurrencies, which MERGES codes rather than replacing the whole registration the way setCustomCurrencies does
  • NavContainer to( ) takes a typed page id plus an optional transition name, and backToPage( ) no longer silently does nothing when handed a plain page id
  • Event arguments: an empty string arrives as an empty string, and a date-valued argument travels as the LOCAL date instead of shifting a day west of the system's timezone
  • client->get( )-t_model_skipped names the cells a model delta could not convert, instead of dropping them without a trace
  • The page-location block is latched when its request is confirmed rather than when it is built, so an aborted first request no longer suppresses it for the rest of the session
  • 7.02 / 7.31: a built-in function in a table-expression key no longer takes the whole class pool down at compile time (report #2664)
  • MultiInputExt gained the suggestion-row half of addValidator
  • Developer Tools: the cross-tab search moved onto a tab of its own

Renamed — the old name still ships

  • z2ui5_if_exit is now z2ui5_if_ui5_exit. The old interface still ships and is still looked up and called, so every existing exit keeps working; rename at your leisure

Removed

  • BREAKING: z2ui5_if_types is retired to src/99 — every type it held now sits on the object that uses it (ty_s_get / ty_s_event_control / ty_s_name_value / ty_t_name_value / cs_device on z2ui5_if_client, the three HTTP config types on z2ui5_if_ui5_exit, ty_s_draft on z2ui5_cl_ui5_srv_draft). Nothing is deleted or reshaped: the interface ships unchanged from the frozen package, so z2ui5_if_types=>… still compiles, and every moved type is identical field for field

1.143.0 ​

2026-08-16

  • Added z2ui5_cl_ui5_view_builder, the view builder this documentation is written against: factory( ) / ele( ) / tag( ) / a( ) / end( ) / stringify( ), with every UI5 control and property reachable because the builder knows none of them by name. z2ui5_cl_xml_view is frozen, not removed — it ships unchanged and keeps working
  • The model is pushed automatically when an event roundtrip changed it. The framework compares the model before and after main( ) and sends it to every open view slot when it differs, so a handler can no longer render stale by forgetting a call. An unchanged model sends no payload at all
  • Error output: a 500 now carries the full diagnostic — the message chain, one block per exception (class, text, source position, kernel error id, public attributes) and the app / event / draft / url / system context. The error popup shows the messages only, with the detail one click away behind Details and in Copy
  • The HTTP handler asks ICF to gzip its responses where the client accepts it — 70–85% less transfer on installations whose ICM profile does not compress already
  • Added _bind( json = abap_true ): a bound string that already contains JSON is spliced into the model as a JSON node, for control properties that must receive an object (a sap.ui.integration Card manifest, whose keys are not valid ABAP field names)
  • Control-valued event arguments now reach the backend as data — ViewSettingsDialog.confirm, SinglePlanningCalendar.selectedDatesChange and the like used to break serialization entirely
  • Added setP13nData to CONTROL_METHODS, so seeding a sap.m.p13n panel no longer needs hand-written JavaScript
  • message_toast_display( ) / message_box_display( ) queue follow-up actions: several calls in one roundtrip all show, in call order, after the view rendered
  • The startup page was rebuilt — the five quickstart steps top to bottom, then one row per sample repository with its install status, and the system information as a popup
  • Developer Tools: the POPUP/POPOVER tabs now follow a dialog closed without a roundtrip; empty tabs gray out instead of opening blank; the NEST/NEST2 and System tabs are gone
  • The wire got leaner throughout (internal): action lists travel as real JSON arrays, session-constant browser data travels once per page load, a display action implies the slot teardown, and the routing mode is only re-sent when the frontend may not hold it
  • Fixes: a pending backend timer no longer fires into a destroyed controller; an app switch clears the previous app's keyboard shortcuts; a nested view re-displayed without its MAIN view gets the model too; cc/Storage compares by value, so a structure can be stored and read back; the MessageToast Popup.Dock warning is gone; the default CSP no longer names frame-ancestors in the <meta> tag
  • src/99 test classes are back in CI: all 27 restored, the two disabled xml_view suites re-enabled, and the freeze now covers production code only

Obsolete — still compiles, still works

  • view_model_update( ), popup_model_update( ), popover_model_update( ) and the two nested variants now do nothing. The push is automatic; delete the calls when you next touch the app
  • _event_client( ) → follow_up_action( ), which is the same call in the same position
  • _bind( custom_mapper = … custom_filter = … ) → omit_initial / omit_initial_paths / json, or shape it in ABAP
  • cs_event-wizard_set_next_step → two control_by_id calls, which additionally reach goToStep

Removed

  • set_nav_back( ) and set_nav_routing( ) from z2ui5_if_client. Routing is follow_up_action( val = cs_event-set_nav_routing t_arg = ( mode ) ) now; set_push_state( ) and set_app_state_active( ) stay and delegate to the events
  • cs_event-nav_to_route → nav_app_call( ), which is the real navigation and pushes the same route history entry when routing is on
  • cs_event-history_back → follow_up_action( |history.back()| ), or nav_app_leave( ) to return through the app stack
  • VIEWNAME from z2ui5_if_types=>ty_s_get. The framework never filled it — an app reading client->get( )-viewname has to drop the read
  • z2ui5_if_app~check_sticky / check_initialized moved to the framework's own app wrapper. Both attributes stay and are kept in sync, so a read still sees the truth; a direct write is no longer honored — use set_session_stateful( ) and check_on_init( )
  • Curated formatter: round2DP, dimensions, stockStatusState, stockStatusIcon, deliveryStatusState. Rounding, joining and status-to-ValueState mapping are things ABAP finishes — bind the result. The date helpers and expandInlineIcons remain
  • render_documentation( ), render_system_popup( ) and render_contribution( ) from z2ui5_cl_ui5_app_start, with cs_event-open_info, cs_event-close and cs_event-open_debug — internals of the framework's own start page

1.142.0 ​

2026-07-20

  • Added frontend action functions: control_by_id, binding_call
  • Added new frontend events, e.g. SYSTEM_LOGOUT and KEYBOARD_SET_MODE
  • Extended the Debug Tool with error/log tabs and export (renamed to Developer Tools)
  • Performance: introduced delta data transfer — only changed fields/rows are sent to the backend
  • Compatibility: UI5 1.71 / UI5 2.x fixes (lazy module loading, lifecycle, aggregation escaping)
  • Security: error message sanitization, security response headers, fatal-error overlay
  • Samples repository fully reworked
  • Various small improvements and bug fixes

Removed

  • z2ui5_cl_util_api and its environment-specific variants z2ui5_cl_util_api_c / z2ui5_cl_util_api_s. The methods were kept: bal_*, tr_*, conv_get_itab_by_xlsx / conv_get_xlsx_by_itab and source_get_method are now on z2ui5_cl_util_ext, the remaining ones on z2ui5_cl_util. Replace the z2ui5_cl_util_api=> prefix with the class that now holds the method
  • z2ui5_cl_pop_bal (BAL message popup) — removed without a replacement. The other built-in popups were not removed; they moved into the frozen package and keep working unchanged

1.141.0 ​

2025-12-14

  • Added Image Editor popup for image manipulation
  • Added Camera Selector control with facing mode support
  • Added Camera Picture control with configurable height/width
  • Implemented security headers in HTTP response handling
  • Added experimental check_on_event method for improved event handling (since adopted as a fully supported dispatch API alongside CASE client->get( )-event)
  • Added experimental _event_nav_app_leave method for navigation
  • Improved error handling with enhanced error popup
  • Updated ajson library to latest version
  • Code quality improvements: refactoring, formatting, and ABAP Cloud ATC findings
  • Various bug fixes and performance improvements

1.140.0 ​

2025-09-15

  • New User Exit Logic with greater customization options
  • Added Data Binding with References
  • Optimized Data Binding Logic for faster performance
  • ABAP Cloud Compatibility Adjustments
  • Bug fixes for Data Loss Protection
  • Bug fixes for Stateful Functionality
  • Various bug fixes and performance improvements

1.139.0 ​

2025-06-26

  • Improved documentation
  • Added multiple new control properties
  • Fixed Launchpad compatibility issues
  • Various bug fixes and performance improvements

1.138.0 ​

2025-03-31

  • Introduced a Copy to Clipboard feature for improved usability
  • Enhanced the BAL message popup with multiple improvements
  • Resolved serialization issues for numeric values
  • Fixed Launchpad compatibility problems with older UI5 versions
  • Updated the bundled ajson library to the latest version

1.137.0 ​

2025-01-26

  • Introduced App State feature
  • Added App State Persistence for Navigation
  • Fixed long string bugs for older releases
  • Resolved popup get value issues
  • Ensured Launchpad compatibility with OpenUI5 2.x
  • Multiple bug fixes and new properties added

1.136.0 ​

2024-12-15

  • Extended Model Handling with OData Support
  • UI5 2.x Compatibility
  • New Documentation
  • Navigation Container in Popover
  • New UI Controls: AvatarGroup, Viz Charts, and more
  • SetMaxWidth for Launchpads
  • Multiple bug fixes and new properties added

1.135.0 ​

2024-10-27

  • Stateful Session Handling
  • Object List Item now supports "type" attribute
  • Message Strip with formatted text options
  • Customizable Icons for Links, Expandable Text with class attributes
  • Improved Frontend File Organization
  • Various bug fixes for Launchpad compatibility

1.134.0 ​

2024-09-22

  • Added Tile Controls
  • Added Color Control
  • Added Multiselect Feature for Popup to Select
  • Added Data Loss Feature
  • Separated Custom Controls & Layouts from abap2UI5 Core
  • Multiple bug fixes and new properties added

1.133.0 ​

2024-08-24

  • Added Controls & Properties for Splitter, Grid, Generic Tag, Content Areas, Step Input, News Content, Numeric Content, etc.
  • Added Shell Bar Properties & Events
  • Added Side Navigation Properties & Events
  • Added Color Picker Properties
  • Updated Layout Management of Table Popups
  • Fixed Low Release Compatibility of Method to Read Fix Values
  • Multiple bug fixes and new properties added

1.132.0 ​

2024-07-28

  • Added Properties for Multi Input, Slider, Search Field, etc.
  • Added Date Range Selection Control, etc.
  • Fixed Generic Tile & Avatar Control
  • Fixed Binding with Custom Mapper
  • Fixed Downport Functionality
  • Fixed ABAP 750 Syntax
  • Multiple bug fixes and new properties added

1.131.0 ​

2024-07-03

  • Added Radio Button, Radio Button Group, Date Range Selector
  • Added Popup Layout V2
  • Fixed Launchpad Title
  • Fixed Syntax for 7.50

1.130.0 ​

2024-06-13

  • Added Wizard Control, Wizard Steps
  • Added Frontend Info CC with Device Information
  • Fixed Binding Logic, bind_clear replaced
  • Fixed Multiple Issues for Focus CC
  • Added Message Strip Visible Property

1.129.0 ​

2024-06-01

  • Added New Attributes for FilterGroupItem Control
  • Added New Attributes for VariantManagement Control
  • Fixed Issues with Data Model & Binding Logic
  • Addressed Fixes for SAP Fiori Launchpad Integration

1.128.0 ​

2024-05-20

  • Fixed Popover and Message Toast Adjustments
  • Fixed Launchpad Compatibility
  • Fixed Data Binding with Generic Data References
  • Added New Properties for the XML View

1.127.0 ​

2024-05-05

  • Added New Properties for Range Slider and Status Indicator
  • Added Message Toast & Message Box Improvements
  • Added Support for Automatic Renaming
  • Bug fixes and small improvements

1.126.0 ​

2024-04-17

  • Fixed XML View Extensions
  • Improved Support for Attributes created with RTTI
  • Updated Spreadsheet CC for OpenUI5 Compatibility

1.125.0 ​

2024-04-06

  • Fixed Binding for Attributes created with RTTI
  • Added XML View Extensions
  • Replaced Magic Numbers and Fixed Auto Renaming
  • Added Download base64 Files
  • Added Features for Interactive Charts

1.124.0 ​

2024-04-01

  • Data Binding Improvements
  • Fixed Popup Handling
  • Fixed App in App Handling
  • Added New XML Properties for MultiInput and Table
  • Added Table with Column Menu

1.123.0 ​

2024-03-20

  • Added Card Control
  • Fixed Nested View Data Binding
  • Fixed Boolean Type Conversion
  • Added Popover in Popup
  • Added New Control Properties

1.122.0 ​

2024-03-11

  • Added New Control Properties
  • Improved F4-Dialog with Description
  • Fixed JSON Handling for Type P
  • Fixed Launchpad Compatibility for BTP and Title Handling

1.121.0 ​

2024-03-01

  • Fixed Launchpad Compatibility
  • Added Custom Control Message Manager
  • Fixed Issues for low UI5 releases

1.120.0 ​

2024-02-25

  • Added Templating
  • Added Popup & Layout Functionality
  • Fixed Debugging Tools XML Output
  • Fixed Messaging

1.119.0 ​

2024-02-16

  • Added Source Code View for Debugging Tools
  • Added New Parameters for the UI5 Tree Control
  • Changed Design for Start Page

1.118.0 ​

2024-02-08

  • Replaced /ui2/cl_json with ajson
  • Fixed Compatibility for Low Releases

1.117.0 ​

2024-02-02

  • Added NavContainer in Popups
  • Added New Properties to XML View
  • Improved POPUP_TO_SELECT (title, sorting, descriptions)
  • Fixed Issues for ABAP for Cloud Readiness

1.116.0 ​

2024-01-26

  • Added StartUp App with Value Help
  • Added Popup Error, Popup Range, Popup Table
  • Added Custom Control Chart.js
  • Fixed Popup Model Handling
  • Bug fixes

1.115.0 ​

2024-01-19

  • Fixed Binding Logic
  • Added Popups (Confirm, Inform, Select Entry, PDF View, Message View)

1.114.0 ​

2024-01-12

  • Fixed Cross App Navigation
  • Fixed Table Output
  • Changed Debugger Tools

1.113.0 ​

2024-01-03

  • Added New Debugging Tools
  • Changed UI5 Module Loading
Edit this page on GitHub ↗ Last updated:
On this page