AppApptypeAn application you deploy and use, installed into a system or loaded into an application as a component, rather than a library whose functions you call.See every one →What this type is →by a community orgby a community orgoriginPublished by a community organisation, so it outlives any one maintainer.See every one →

config-management

Keeps the theme, UI5 bootstrap source, custom CSS and Content-Security-Policy of an abap2UI5 page in database tables instead of in code, with a popup app to edit them.

The settings of an abap2UI5 page usually live in code, so changing the theme or the UI5 bootstrap source means editing the HTTP handler or the user exit. config-management keeps THEME, APP_TITLE, UI5_SRC, DEBUG_MODE, STYLES_CSS and CSP_POLICY in the tables Z2UI5_CONFIG and Z2UI5_THEMES, reads them through z2ui5_cl_config_service with an in-memory cache, and ships the popup app z2ui5_cl_app_icf_config to edit them; UI5_SRC and CSP_POLICY are system-wide and only a master user holding the authorization object Z2UI5_CONF may change them. It does not hook itself into the framework: the README asks the user to implement z2ui5_if_ui5_exit in a class of their own and apply the stored values in set_config_http_get, and a field with nothing stored keeps the abap2UI5 default. It installs with abapGit next to abap2UI5 1.145.0 or later and is written for Standard ABAP 7.50.

Facts

Last pushLicenceMIT

Where it sits

Lives in
Provides
ConfigurationABAPConfigurationcapabilityPer-environment settings without per-environment code — profiles, layered configuration, and bindings resolved from the platform at start-up.
Add-on to
abap2UI5abap2UI5artifactOne 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.
Requires
abap2UI5abap2UI5artifactThe framework it extends: it stores the settings of the abap2UI5 page, and the user exit z2ui5_if_ui5_exit applies them to every page abap2UI5 serves. The README names release 1.145.0 or later.abapGitabapGitartifactPulling the repository into a system: the README's installation steps install abap2UI5 first and then this repository with abapGit.

Who is behind it

abap2UI5-addonsabap2UI5-addonsOrganisationMaintains this
In the atlas: maintains 21
@abap2UI5-addons
maintainerKarthikeyan RavikumarPersonContributes to this
In the atlas: contributes to 2
@kartefact
oblomov-devPersonContributes to this
In the atlas: maintains 4, contributes to 44
@oblomov-dev
2 contributors

Before choosing this

Conditions

PracticalFunctional boundary

APP_TITLE is not applied by the exit: the title field was removed from z2ui5_if_ui5_exit=>ty_s_http_config in abap2UI5 1.145.0, so an app that wants it as its browser tab title sets it while it runs. The live theme preview runs the frontend action THEMING / setTheme and needs UI5 1.118 or later; on an older release a saved theme applies with the next page load. The code is written for ABAP 7.50 and the README states there is no downported 7.02 version, no 702 branch and no workflow that builds one.

What it declares

Every artifact

Type
App
Origin
By a community org

As an app

Where it runs
does not say
Distributed through
abapGit

Connections3

README

quoted from abap2UI5-addons/config-management under MIT, read
abap2UI5-addons/config-management/README.mdOn GitHub

config-management

abap2UI5-addons ABAP abap2UI5 License
ABAP Standard

Store the settings of the abap2UI5 page in database tables instead of in code. Theme, UI5 bootstrap source, custom CSS and Content-Security-Policy are kept in tables and edited in a popup app; a user exit of your own applies them to every page abap2UI5 serves. For abap2UI5 administrators who want to change those settings at runtime without touching the HTTP handler.

Part of abap2UI5-addons - addons and apps for abap2UI5, installed with abapGit.

466231499-ebaa079d-8f53-483f-be75-e40e9a4dc7c9

Why

The settings of the abap2UI5 page usually live in code. Changing the theme or the UI5 source then means changing the HTTP handler or the user exit. config-management moves them to the database:

  • Eliminates need to modify HTTP handler code for configuration changes
  • Enables per-user customization (themes, custom CSS, etc.)
  • Provides secure admin-only controls for system-level settings
  • Maintains framework performance through intelligent caching
  • Supports UI5 theme compatibility validation

This enhancement significantly improves the flexibility and maintainability of abap2UI5 installations by moving configuration from code to database, while maintaining full backward compatibility.

Installation

Requirements

  • Standard ABAP 7.50 or higher - the code is written for ABAP 7.50 and is syntax-checked at that release on every pull request. There is no downported 7.02 version: no 702 branch, and no workflow that builds one.
  • abap2UI5 1.145.0 or later

Steps - with abapGit, in this order:

  1. abap2UI5
  2. this repository (branch main) next to abap2UI5 - the HTTP handler stays as it is
  3. Connect the user exit. abap2UI5 reads the settings of its page from its user exit, z2ui5_if_ui5_exit. Implement the interface in a class of your own - abap2UI5 finds the class by the interface, there is nothing to register - and let it apply the stored configuration:
CLASS zcl_my_abap2ui5_exit DEFINITION PUBLIC FINAL CREATE PUBLIC.
  PUBLIC SECTION.
    INTERFACES z2ui5_if_ui5_exit.
  PROTECTED SECTION.
  PRIVATE SECTION.
ENDCLASS.

CLASS zcl_my_abap2ui5_exit IMPLEMENTATION.

  METHOD z2ui5_if_ui5_exit~set_config_http_get.

    " cs_config arrives filled with the abap2UI5 defaults - a value is only
    " replaced when one is stored, so an empty entry keeps the default
    DATA(lv_theme) = z2ui5_cl_config_service=>get_current_theme( ).
    IF lv_theme IS NOT INITIAL.
      cs_config-theme = lv_theme.
    ENDIF.

    DATA(lv_src) = z2ui5_cl_config_service=>get_config( `UI5_SRC` ).
    IF lv_src IS NOT INITIAL.
      cs_config-src = lv_src.
    ENDIF.

    DATA(lv_styles_css) = z2ui5_cl_config_service=>get_config( `STYLES_CSS` ).
    IF lv_styles_css IS NOT INITIAL.
      cs_config-styles_css = lv_styles_css.
    ENDIF.

    " the complete <meta http-equiv="Content-Security-Policy" ...> tag
    DATA(lv_csp) = z2ui5_cl_config_service=>get_config( `CSP_POLICY` ).
    IF lv_csp IS NOT INITIAL.
      cs_config-content_security_policy = lv_csp.
    ENDIF.

  ENDMETHOD.

  METHOD z2ui5_if_ui5_exit~set_config_http_post.
  ENDMETHOD.

ENDCLASS.
  • abap2UI5 calls one exit only. If your system already has a class implementing z2ui5_if_ui5_exit, add the lines above to that class instead.
  • set_config_http_get runs for every response, not only for the page request - the response headers come from it too. z2ui5_cl_config_service caches the configuration, so that costs one table read per request.
  • The fields of z2ui5_if_ui5_exit=>ty_s_http_config are src, theme, content_security_policy, styles_css, t_add_config and t_security_header. The title field is gone (removed in abap2UI5 1.145.0, the page carries a constant <title>), so APP_TITLE is not applied by the exit. An app that wants it as its browser tab title sets it while it runs:
client->follow_up_action( val   = client->cs_event-set_title
                          t_arg = VALUE #( ( z2ui5_cl_config_service=>get_config( `APP_TITLE` ) ) ) ).

Start - open the configuration app like any abap2UI5 app - ?app_start=z2ui5_cl_app_icf_config on your abap2UI5 ICF path, or its class name on the abap2UI5 start page. It fills the configuration tables with their defaults on its first start.

Usage

Configurable parameters
  • THEME: UI5 theme with version-specific compatibility
  • APP_TITLE: Application title - stored for apps to set as tab title, the exit has no title field (see Installation)
  • UI5_SRC: UI5 bootstrap source URL (admin-only, one value for all users)
  • DEBUG_MODE: Debug mode toggle
  • STYLES_CSS: Custom CSS injection
  • CSP_POLICY: Content Security Policy (admin-only, one value for all users) - the complete <meta http-equiv="Content-Security-Policy" ...> tag

Components

Core Configuration Service
  • z2ui5_cl_config_service: Central service for managing application configurations
    • User-specific and global configuration support
    • In-memory caching for performance
    • Authority-based access control (master user vs regular user)
    • Automatic fallback to framework defaults
Configuration App
  • z2ui5_cl_app_icf_config: The configuration popup
    • Theme selection from the themes of the running UI5 release (Z2UI5_THEMES)
    • Real-time theme preview with global application, reverted on Cancel
    • Form-based editing for all configurable parameters
    • Role-based field visibility (admin-only fields)
    • Automatic initialization of default configurations
User Exit
  • your z2ui5_if_ui5_exit class (see Installation): Applies the stored configuration to every page abap2UI5 serves
    • Replaces hard-coded values with dynamic database lookups
    • Keeps the abap2UI5 default wherever nothing is stored
Database Objects
  • Z2UI5_CONFIG: Main configuration table with user/global scope support
  • Z2UI5_THEMES: UI5 theme compatibility matrix by version
  • Z2UI5_CONF: Message class for configuration-related messages
  • Z2UI5_CX_CONFIG_ERROR: Exception class for configuration errors

Security & Authorization

  • Z2UI5_CONF: Authorization object with the fields ACTVT and CONFIG_TYP
  • Master user concept for sensitive configurations (UI5_SRC, CSP_POLICY)
  • Configuration locking mechanism for system-critical settings

Technical Implementation

  • ABAP 7.50: the code uses 7.40 syntax (inline declarations, NEW, COND, VALUE) and abaplint checks it at v750 (abaplint.jsonc)
  • Efficient caching strategy to minimize database calls
  • Theme preview through the whitelisted frontend action THEMING / setTheme (client->cs_event-control_global) - abap2UI5 no longer runs raw JavaScript such as sap.ui.getCore().applyTheme(). It needs UI5 1.118 or later; on an older release the saved theme applies with the next page load
  • Released abap2UI5 API (src/02) only: views built with z2ui5_cl_ui5_view_builder, no frozen src/99 classes such as z2ui5_cl_xml_view or z2ui5_cl_pop_to_select
  • Transaction-safe with COMMIT WORK AND WAIT and rollback on errors

Development

npm ci
npm run check

npm run check runs what CI runs: abaplint at v750 (abap-standard.yaml).

Contributing

Issues and pull requests are welcome - see CONTRIBUTING.md.

License

MIT - see LICENSE.

MIT, read
Configuration
  1. abaKLibrary for managing ABAP constants from registered sourcesfrom ABAP
  2. aqoABAP application options as a structure with a generated editorfrom ABAP
  3. com.sap.cds:cds-feature-cloudfoundryReads bound service credentials on SAP BTP, Cloud Foundry for CAP Javafrom CAP
  4. com.sap.cds:cds-feature-k8sReads SAP BTP Operator service bindings on Kyma for CAP Javafrom CAP
  5. com.sap.cds:cds-services-bomMaven bill of materials pinning CAP Java module versionsfrom CAP
  6. abap-dynamic-assignmentFramework for runtime parameters, ranges and value mappings in ABAPfrom ABAP
  7. abap-gencustGeneric customizing table and reader for ad hoc ABAP parametersfrom ABAP
  8. abap-tvarvcHelper class for reading TVARVC parameters and select-optionsfrom ABAP
  9. @sap/cdsCAP Node.js runtimefrom CAP

Details

Sources3
GitHub APIdiscovered herechecked
github.com/abap2UI5-addons/config-managementtree, pushes, contributors, CIchecked
README.mdquoted, and what the entry declareschecked

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
discovered viaGitHub API
first seen in the atlas
ecosystem and domainabap, operations-and-runtime
abaplint
issues under its own abaplint configuration0
lines1,111
statements770
objects9
files6
analysed, main
abaplint version2.120.84
Flavors1
Standard ABAP
“Standard ABAP 7.50 or higher” — abap2UI5-addons/config-management — READMEchecked
Contributors2

From the repository’s contributor list, .

History in the atlas1
  1. First seen.
For your agent
Ref
artifact:abap2ui5-addons-config-management
JSON
/artifacts/abap2ui5-addons-config-management.json
MCP
Connecting an agent