abap2UI5-addons/popups
Ready-made dialogs for an abap2UI5abap2UI5One ABAP class implementing z2ui5_if_app is the whole app: the browser loads a generic UI5 shell once, and every interaction after that is an HTTP roundtrip back into ABAP.community org, abap app: confirm, inform, select from a list, file up- and download, table, text edit, PDF, HTML, messages, range, value help and search help, each opened with one factory( ) call.
Almost every app needs the same handful of dialogs, and building each one as an XML view with its own events and callbacks is repetitive work. Each popup here is an abap2UI5abap2UI5One ABAP class implementing z2ui5_if_app is the whole app: the browser loads a generic UI5 shell once, and every interaction after that is an HTTP roundtrip back into ABAP.community org, abap app of its own: it is opened with client->nav_app_call( z2ui5_cl_popup_to_confirm=>factory( ... ) ), and the outcome comes back either as an event the caller named or from the popup's result( ) method after check_on_navigated( ). The classes in src/ were moved here out of the abap2UI5 core framework, and the repository's original classes stay in src/99/ as obsolete. The value-help and search-help popups build their views through abap2UI5-addons/layout-managementlayout-managementAn abap2UI5 addon that renders an internal table or a structure as a UI5 table or form with a settings popup, where the user lays it out and saves the result as a layout variant.independent, abap, which is pulled into the system alongside. The utilities the popups call are a trimmed, renamed copy of abap-util's context class rather than a dependency, because abapGitabapGitA Git client written in ABAP that runs inside the system, so objects are cloned, pulled and pushed without leaving it; with no package manager in ABAP, a cloned repository is how code is distributed.community org, abap has no dependency management.
Facts
Where it sits
Who is behind it
In the atlas: maintains 21@abap2UI5-addonsmaintainerabapsheepContributes to this
In the atlas: contributes to 6@abapsheepoblomov-devContributes to this
In the atlas: maintains 4, contributes to 44@oblomov-dev2 contributors
Before choosing this
Conditions
PracticalFunctional boundary
The value-help and search-help popups read whichever DDIC check table the user selects without an authorisation check of their own, so the README asks for your own checks and a restriction on which tables may be browsed before they are used beyond a development system. The transport-request popup works only on-premise, and the search help does not yet run on the Cloud stack.
What it declares
Every artifact
- Type
- Package
- Origin
- By a community org
As a package
- Where it runs
- does not say
- Distributed through
- does not say
Connections
Producing a web user interface from ABAP code
UI5 apps written as one ABAP class, rendered by a generic shell
Git client written in ABAP that runs inside the system
Table and form layouts with saved variants for abap2UI5
Download
README
quoted from abap2UI5-addons/popups under MIT, readpopups
Ready-to-use popups and dialogs for your abap2UI5 apps - one factory( ) call each.
Confirm, inform, select from a list, edit a text, up- and download a file,
show a table, a PDF, HTML or messages, pick a range, a value help or a search
help: each popup is an abap2UI5 app of its own that you call with
client->nav_app_call( ) and that hands its result back to your app. The
classes were moved here from the abap2UI5 core framework.
Part of abap2UI5-addons - addons and apps for abap2UI5, installed with abapGit.
Why
Almost every app needs the same handful of dialogs: "Are you sure?", "Enter a value", "Pick one of these", "Upload a file". Building each of them as an XML view with its own events, buffers and callbacks is repetitive work.
popups gives you these dialogs as finished classes. You call the popup, it
renders itself, and your app gets the result back - either as an event you
name, or through the popup's result( ) method.
Good for:
- abap2UI5 developers who need standard dialogs without writing views.
- Moving classic code to abap2UI5 - counterparts for
POPUP_TO_CONFIRM,POPUP_TO_INFORM, file up- and download andCL_DEMO_OUTPUT.
Installation
Requirements
- ABAP Cloud (S/4 Public Cloud, BTP ABAP Environment), S/4 Private Cloud or
On-Premise, or SAP NetWeaver AS ABAP 7.50 or higher; NetWeaver 7.02 with the
downported branch
702 - abap2UI5
- abap2UI5-addons/layout-management -
pull it together with this repository: the Value-Help/Search-Help popups
build their views with
z2ui5_cl_ui5_view_builder, so an older layout-management (whosez2ui5_cl_layo_pop=>render_layout_functionstill takes az2ui5_cl_xml_view) fails activation with"HEADER" is not type-compatible with formal parameter "XML"
No dependency on abap-util at installation time - the needed utilities are embedded as a vendored copy (see Utility class).
Steps - with abapGit, in this order:
- abap2UI5
- abap2UI5-addons/layout-management
- this repository, from the branch that fits your system:
| System | Branch to pull |
|---|---|
| ABAP Cloud, S/4HANA, NetWeaver 7.50 or higher | main |
| NetWeaver 7.02 - 7.40 | 702 (downported automatically from main) |
On NetWeaver 7.02 pull layout-management from its 702 branch as well.
Start - run a sample like any abap2UI5 app, e.g.
?app_start=z2ui5_cl_popup_sample_05 for the confirm popup. All samples are
listed under Samples.
Usage
Call a popup with nav_app_call( ) and react to the event it raises when it
closes:
METHOD z2ui5_if_app~main.
IF client->check_on_event( `DELETE` ).
client->nav_app_call( z2ui5_cl_popup_to_confirm=>factory(
i_question_text = `Delete the entry?`
i_event_confirm = `DELETE_CONFIRMED`
i_event_cancel = `DELETE_CANCELED` ) ).
ELSEIF client->check_on_event( `DELETE_CONFIRMED` ).
client->message_box_display( `Entry deleted` ).
ELSEIF client->check_on_event( `DELETE_CANCELED` ).
client->message_box_display( `Nothing changed` ).
ENDIF.
ENDMETHOD.
Popups that return data hand it over through result( ). When control comes
back, read it from the previous app:
" open
client->nav_app_call( z2ui5_cl_popup_textedit=>factory( `this is a text` ) ).
" back in your app
IF client->check_on_navigated( ).
TRY.
DATA(lo_prev) = client->get_app( client->get( )-s_draft-id_prev_app ).
DATA(lv_text) = CAST z2ui5_cl_popup_textedit( lo_prev )->result( )-text.
CATCH cx_root.
ENDTRY.
ENDIF.
Features
- Confirm, Inform & Select popups (
z2ui5_cl_popup_to_confirm,z2ui5_cl_popup_to_inform,z2ui5_cl_popup_to_select) - File Download & Upload (
z2ui5_cl_popup_file_dl,z2ui5_cl_popup_file_ul) - Table, Data & Demo Output (
z2ui5_cl_popup_table,z2ui5_cl_popup_data,z2ui5_cl_popup_demo_output) - Text Editor, HTML & PDF display (
z2ui5_cl_popup_textedit,z2ui5_cl_popup_html,z2ui5_cl_popup_pdf) - Messages, Error & Input Validation (
z2ui5_cl_popup_messages,z2ui5_cl_popup_error,z2ui5_cl_popup_input_val) - Range Selection (
z2ui5_cl_popup_get_range,z2ui5_cl_popup_get_range_m) - Image Editor & JS Loader (
z2ui5_cl_popup_image_edit,z2ui5_cl_popup_js_loader) - Value-Help & Search-Help (
z2ui5_cl_popup_value_help,z2ui5_cl_popup_search_help) - Transport Requests (
z2ui5_cl_popup_show_tr) - Samples for all popups (
src/02/,z2ui5_cl_popup_sample_*)
Samples
| Sample | Popup |
|---|---|
z2ui5_cl_popup_sample_01 | Value-Help (z2ui5_cl_popup_value_help) |
z2ui5_cl_popup_sample_02 | Search-Help (z2ui5_cl_popup_search_help) |
z2ui5_cl_popup_sample_03 | Image editor (z2ui5_cl_popup_image_edit) |
z2ui5_cl_popup_sample_04 | HTML (z2ui5_cl_popup_html) |
z2ui5_cl_popup_sample_05 | Confirm (z2ui5_cl_popup_to_confirm) |
z2ui5_cl_popup_sample_06 | Inform (z2ui5_cl_popup_to_inform) |
z2ui5_cl_popup_sample_07, _17 | Select from a list (z2ui5_cl_popup_to_select) |
z2ui5_cl_popup_sample_08 | Messages and errors (z2ui5_cl_popup_messages, z2ui5_cl_popup_error) |
z2ui5_cl_popup_sample_09 | Text editor (z2ui5_cl_popup_textedit) |
z2ui5_cl_popup_sample_10 | Input value (z2ui5_cl_popup_input_val) |
z2ui5_cl_popup_sample_11 | File upload (z2ui5_cl_popup_file_ul) |
z2ui5_cl_popup_sample_12, _13 | PDF (z2ui5_cl_popup_pdf) |
z2ui5_cl_popup_sample_14 | Select-options over several fields (z2ui5_cl_popup_get_range_m) |
z2ui5_cl_popup_sample_15 | Table (z2ui5_cl_popup_table) |
z2ui5_cl_popup_sample_16 | File download (z2ui5_cl_popup_file_dl) |
z2ui5_cl_popup_sample_18 | CL_DEMO_OUTPUT (z2ui5_cl_popup_demo_output) |
z2ui5_cl_popup_sample_19 | Range of one field (z2ui5_cl_popup_get_range) |
Demo
Search-Help
Value-Help
Transport Requests
Package Structure
| Package | Content |
|---|---|
src/ | Popup classes (z2ui5_cl_popup_*) |
src/00/ | Context/utility class z2ui5_cl_popup_context — a vendored copy from abap-util, see below |
src/02/ | Samples (z2ui5_cl_popup_sample_*) |
src/03/ | Popups with layout-management dependency (Value-Help, Search-Help) |
src/99/ | Obsolete: the original classes of this repository, kept for compatibility |
The classes in src/ were moved here from the abap2UI5 core framework
(formerly the built-in popups in its obsolete package); the previous content
of this repository lives in src/99/ (obsolete).
Utility class - vendored copy from abap-util
z2ui5_cl_popup_context (src/00/) is a renamed copy of zabaputil_cl_util_context from the abap-util master catalog, reduced to the methods actually used by the popup apps. This keeps the installation dependency-free (abapGit has no dependency management) and namespace-isolated, while abap-util remains the catalog that contains all utility classes with all methods.
How the copy is maintained:
- Only the context class is trimmed at method level — unused methods are removed (the private helpers a kept method needs stay in the copy); other classes from abap-util would be vendored as-is.
- If a popup needs a utility method that is not in the copy yet, it is added directly to the local
z2ui5_cl_popup_context(if it already exists in abap-util, it is copied from there with its private helpers instead of re-implemented). - Every few weeks an AI compares abap-util with all consumers and merges locally added methods back into abap-util, so the master catalog stays the superset of all methods.
Security
The value-help and search-help popups read the DDIC check table the user selects, without an authorization check of their own. Before using them beyond a development system, add your own authorization checks and restrict which tables may be browsed.
Limitations & Todo
- Transports currently only work in On-Premise
- Search-Help not yet running on Cloud Stack
Development
npm ci
npm run check # all gates below, as in CI
npm run lint # abaplint, Standard ABAP (v750)
npm run check:cloud # abaplint, ABAP Cloud
npm run check:abap2ui5 # abap2UI5-linter over apps and views
npm run rename # namespace rename check
npm run downport # downport the source to 7.02 syntax
Contributing
Issues and pull requests are welcome - whether you're fixing bugs, adding new functionality, or improving documentation. Read CONTRIBUTING.md first.
License
MIT - see LICENSE.
History
Others providing
Compare all 17 on the UI written in ABAP page →- abap2UI5-localabap2UI5-localThe whole abap2UI5 framework folded into the local classes of one HTTP handler, so an app runs without the framework installed as a package.community org, abapabap2UI5 folded into the local classes of one HTTP handlerfrom ABAP
- abap2UI5abap2UI5One ABAP class implementing z2ui5_if_app is the whole app: the browser loads a generic UI5 shell once, and every interaction after that is an HTTP roundtrip back into ABAP.community org, abapUI5 apps written as one ABAP class, rendered by a generic shellfrom ABAP
- abap-cloud-guiabap-cloud-guiA report-style programming model for abap2UI5: one class produces a selection screen with a WRITE list or an ALV grid, running as a UI5 app on ABAP Cloud as well as on NetWeaver 7.02.independent, abapReport-style programming model for abap2UI5 on ABAP Cloudfrom ABAP
- custom-controlscustom-controlsThirteen custom controls for abap2UI5, a signature pad and a scanner that reads several barcodes at once among them, each one an ABAP builder class with a single render( ) method and all of them shipped in a BSP of their own.community org, abapThirteen custom UI5 controls for abap2UI5 appsfrom ABAP
- http-connectorhttp-connectorAn add-on that makes the abap2UI5 apps of one ABAP system reachable through another: a thin ICF handler on the consumer system forwards every roundtrip to the source system through an SM59 destination.community org, abapForwards abap2UI5 roundtrips to another system over HTTPfrom ABAP
- layout-managementlayout-managementAn abap2UI5 addon that renders an internal table or a structure as a UI5 table or form with a settings popup, where the user lays it out and saves the result as a layout variant.independent, abapTable and form layouts with saved variants for abap2UI5from ABAP
- abap2UI5 for Excelabap2UI5 for ExcelAn Office add-in that runs an abap2UI5 app in Excel's task pane, where the app reads and writes the workbook through the z2ui5.cc.ExcelBridge control.community org, abapOffice add-in running an abap2UI5 app in Excel's task panefrom ABAP
- rap-extrap-extFloorplan classes that read a CDS entity's UI annotations at runtime and render a list report, worklist, tree, object page, overview page, value help or action dialog as an abap2UI5 app.community org, abapFloorplans rendered from CDS UI annotations as abap2UI5 appsfrom ABAP
- selection-screenselection-screenSelect-options with saved variants for an abap2UI5 app, built from a database table name or from an internal table the app passes in.independent, abapSelect-options with saved variants for abap2UI5 appsfrom ABAP
- abap2UI5 frontend-webcomponentabap2UI5 frontend-webcomponentAn alternative abap2UI5 frontend: one ES module registering <abap2ui5-app>, which renders the views an unchanged abap2UI5 app class sends with UI5 Web Components and no UI5 core.community org, abapabap2UI5 frontend rendering with UI5 Web Componentsfrom ABAP
- abap2UI5 frontendabap2UI5 frontendThe abap2UI5 frontend as installable ABAP artefacts: per system type one generated branch carrying the BSP or HTTP service with its handler, pulled into the system with abapGit.community org, abapabap2UI5 frontend as ABAP artefacts installed with abapGitfrom ABAP
- abap2UI5 Layout Editorabap2UI5 Layout EditorA browser editor that lays out a UI5 view by drag and drop and writes it out as one abap2UI5 app class, pulled into the system with abapGit.community org, abapDrag-and-drop UI5 view editor that writes an abap2UI5 app classfrom ABAP
- abap2UI5 protocolabap2UI5 protocolThe abap2UI5 roundtrip written down: a versioned specification of the wire between frontends and backends, JSON Schemas for its messages, and two conformance suites that test either side.community org, abapVersioned specification of the abap2UI5 roundtrip protocolfrom ABAP
- ZFPM_TOOLSZFPM_TOOLSA report that shows the development objects of an FPM hierarchy in one view and edits, copies, deletes, imports and exports the hierarchy as a whole rather than one object at a time.independent, abapEdits, copies and transports a whole FPM hierarchy at oncefrom ABAP
- ZWD_CALENDAR_VHZWD_CALENDAR_VHA value help for date fields in Web Dynpro ABAP screens that shows a calendar view, so the user picks a day from it instead of typing the date.independent, abapWeb Dynpro ABAP calendar value help for date fieldsfrom ABAP
- abap_mustacheabap_mustacheA Mustache template engine for ABAP, rendering logic-less templates into HTML or any other text from a structure or table of any type, with partials and a separate Steampunk-compatible branch.independent, abapMustache template engine for ABAPfrom ABAP
Details
Sources
Sources are graph entities: the same page may back several entries, and an unreachable source flags every row that rests on it.
Compatibility and provenance
abaplint
Flavors
“ABAP Cloud (S/4 Public Cloud, BTP ABAP Environment), S/4 Private Cloud or On-Premise, or SAP NetWeaver AS ABAP 7.50 or higher; NetWeaver 7.02 with the downported branch `702`” — abap2UI5-addons/popups — README, Installation
“ABAP Cloud (S/4 Public Cloud, BTP ABAP Environment), S/4 Private Cloud or On-Premise, or SAP NetWeaver AS ABAP 7.50 or higher; NetWeaver 7.02 with the downported branch `702`” — abap2UI5-addons/popups — README, Installation
Contributors
History in the atlas
- First seen.
For your agent
- Ref
artifact:abap2ui5-addons-popups- JSON
- /artifacts/abap2ui5-addons-popups.json
- MCP
- Connecting an agent