{"ref":"artifact:abap2ui5-addons-layout-management","page":"/artifacts/abap2ui5-addons-layout-management","json":"/artifacts/abap2ui5-addons-layout-management.json","generated":"2026-10-26","drafted_with_ai":true,"entity":{"id":"abap2ui5-addons-layout-management","name":"layout-management","artifact_type":"package","ecosystem":"abap","domain":"ui-and-frontend-bridge","origin_ring":"independent","use_as":"dependency","description":{"one_line":"An [abap2UI5](artifact:abap2ui5-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.","short":"Table and form layouts with saved variants for abap2UI5","what_it_solves":"In a hand-written UI5 view every column sits in the code, so an app that wants ALV-like layouts has to build the layout dialog and its persistence itself. layout-management takes an internal table or a structure, builds the table or simple form from it via RTTI, adds a settings button that opens the layout popup, and stores what the user picks in its own database tables `z2ui5_t_11` and `z2ui5_t_12` under up to four handles the app passes; the default variant is loaded at the next start. A generic mode does the same for a view that is neither a table nor a form: controls registered by their `id` are hidden, moved inside the aggregation they sit in and relabelled, applied to the finished XML by `xml_apply_layout( )`. Every write goes through the interface `z2ui5_if_layo_auth`, whose shipped default allows a user's own layouts, allows deletion by the owner only and denies shared layouts; no authorization object ships with it, because the right object differs per installation. It is pulled in with [abapGit](artifact:abapgit-abapgit) after [abap2UI5](artifact:abap2ui5-abap2ui5), from `main` for ABAP Cloud, S/4HANA and NetWeaver 7.50 and higher, or from the downported `702` branch for NetWeaver 7.02 to 7.40.","when_not_to_use":"The layout is rendered into an [abap2UI5](artifact:abap2ui5-abap2ui5) view and its events are passed on from the app's `main` method, so there is nothing here for a UI outside an abap2UI5 app. Shared layouts stay denied until a class implementing `z2ui5_if_layo_auth` exists in the system, so an installation whose key users are to maintain shared layouts has that class and its authorization object to write first.","to_build_on_it":"The XML handling is `z2ui5_cl_layo_xml_tree`, with no dependency on the framework or the database and ABAP Unit tests over it, so work on the control-level transformation can happen apart from the rendering and the persistence. Six sample app classes, `z2ui5_cl_layo_sample_01` to `_06`, cover a table, a simple form, both on one page and the generic mode."},"links":{"repo":"https://github.com/abap2UI5-addons/layout-management"},"type_properties":{"distribution":{"value":["abapgit"],"sources":[{"url":"https://github.com/abap2UI5-addons/layout-management","title":"abap2UI5-addons/layout-management — README, Installation","checked":"2026-10-17","quote":"**Steps** - with [abapGit](https://abapgit.org), in this order:"}]}},"identity":{"license":"MIT"},"source_available":true,"maintainers":["actor:abap2ui5-addons"],"flavors":[{"key":"abap-cloud","source":{"url":"https://github.com/abap2UI5-addons/layout-management","title":"abap2UI5-addons/layout-management — README, Installation","checked":"2026-10-17","quote":"ABAP Cloud (S/4 Public Cloud, BTP ABAP Environment), S/4 Private Cloud"}},{"key":"standard-abap","source":{"url":"https://github.com/abap2UI5-addons/layout-management","title":"abap2UI5-addons/layout-management — README, Installation","checked":"2026-10-17","quote":"SAP NetWeaver AS ABAP 7.50 or higher"}}],"provides":[{"capability":"capability:abap-ui-from-abap","what_it_does":"Builds a UI5 table or simple form out of an ABAP internal table or structure via RTTI, renders it into an [abap2UI5](artifact:abap2ui5-abap2ui5) view with `z2ui5_cl_layo_xml_builder`, and lets the user set the visible columns or fields, their order, labels and sorting in a popup that is saved as a layout variant in the addon's own tables.","sources":[{"url":"https://github.com/abap2UI5-addons/layout-management","title":"abap2UI5-addons/layout-management — README, Features","checked":"2026-10-17","quote":"**Generic Output** - Universal table and form rendering"},{"url":"https://github.com/abap2UI5-addons/layout-management","title":"abap2UI5-addons/layout-management — README, Why","checked":"2026-10-17","quote":"layout-management does that once. It builds the table or form from your data"}]}],"requires":[{"ref":"artifact:abap2ui5-abap2ui5","for":"The addon runs as part of an [abap2UI5](artifact:abap2ui5-abap2ui5) app and calls the framework's utility class `z2ui5_cl_util` directly; its own documentation calls abap2UI5 a hard dependency, installed before this repository.","requirement":"required","basis":"binding","role":"framework","sources":[{"url":"https://raw.githubusercontent.com/abap2UI5-addons/layout-management/main/AGENTS.md","title":"abap2UI5-addons/layout-management — AGENTS.md, Utility Access","checked":"2026-10-17","quote":"abap2UI5 is a hard dependency of this addon"}]},{"ref":"artifact:abapgit-abapgit","for":"How the classes and the two variant tables get into the system: the README's installation steps pull [abap2UI5](artifact:abap2ui5-abap2ui5) and then this repository with [abapGit](artifact:abapgit-abapgit), from the branch that fits the system.","requirement":"required","basis":"binding","role":"installation","sources":[{"url":"https://github.com/abap2UI5-addons/layout-management","title":"abap2UI5-addons/layout-management — README, Installation","checked":"2026-10-17","quote":"**Steps** - with [abapGit](https://abapgit.org), in this order:"}]}],"provenance":{"discovered_via":[{"source":"source:github"}],"first_seen":"2026-10-17"},"drafted_with_ai":true,"contributors":["actor:abapsheep","actor:jelliottp","actor:oblomov-dev"]},"effective_normative_relations":[],"readings":{"liveness":[{"label":"Maintenance","tier":"unknown","evidence":"no release data"},{"label":"Continuity","tier":"good","evidence":"5 contributors, org-owned"},{"label":"Repository","tier":"good","evidence":"pushed 2026-10, not archived"}],"compatibility":[{"label":"Declared for","tier":"good","evidence":"SAP_BASIS 750 and up, in its abaplint config: includes every maintained line to 816"},{"label":"Survived majors","tier":"unknown","evidence":"not read on ABAP: its lines run side by side"},{"label":"Maintainer's CI","tier":"good","evidence":"check-rename green, 2026-10-20"}],"practice":[{"label":"Tests","tier":"poor","evidence":"none found in the tree"},{"label":"Docs","tier":"good","evidence":"README 14 KB"},{"label":"Changelog","tier":"fair","evidence":"none in the repo"}],"reach":[{"value":null,"unit":"installs/week"},{"value":2,"unit":"watching"}]},"signals":{"crawled_at":"2026-10-24","npm":"not published under this name","stars":2,"forks":2,"open_issues":1,"archived":false,"pushed_at":"2026-10-20","license_spdx":"MIT","org_owned":true,"default_branch":"main","created_at":"2024-08-24T06:52:32Z","open_prs":1,"tree_truncated":false,"test_files":0,"workflows":6,"other_ci":false,"readme_bytes":14382,"docs_files":0,"changelog":false,"license_file":true,"dts_files":0,"first_commit":"2024-08-24","last_commit":"2026-10-20","commits":226,"contributors":5,"ci_status":"success","ci_run_at":"2026-10-20","ci_workflow":"check-rename","ci_event":"push","readme_path":"README.md","readme_sha":"65f60266f82dc2f7d21359c3f715be685cf9112b","repo_read":"2026-10-24","abap_syntax":{"repo":"abap2UI5-addons/layout-management","file":"abaplint.jsonc","url":"https://github.com/abap2UI5-addons/layout-management/blob/HEAD/abaplint.jsonc","version":"v750","floor":"750","checked":"2026-10-26"}},"release_notes":{"license":"MIT","quotable":true,"source":{"kind":"github-releases","url":"https://github.com/abap2UI5-addons/layout-management/releases"},"format":"github-releases","releases":[{"version":"1.139.0","date":"2025-06-26","date_source":"github","heading":"1.139.0","url":"https://github.com/abap2UI5-addons/layout-management/releases/tag/1.139.0","sections":[],"hash":"e2e724a2b09d4e11"},{"version":"1.135.0","date":"2024-10-23","date_source":"github","heading":"1.135.0","url":"https://github.com/abap2UI5-addons/layout-management/releases/tag/1.135.0","sections":[],"hash":"8452f9312a987a55"},{"version":"1.134.0","date":"2024-09-22","date_source":"github","heading":"1.134.0","url":"https://github.com/abap2UI5-addons/layout-management/releases/tag/1.134.0","sections":[],"hash":"35be017ca516c545"}],"crawled_at":"2026-10-25"},"edges":{"maintainers":[{"ref":"actor:abap2ui5-addons","name":"abap2UI5-addons","json":"/actors/abap2ui5-addons.json"}],"contributors":[{"ref":"actor:abapsheep","name":"abapsheep","json":"/actors/abapsheep.json"},{"ref":"actor:jelliottp","name":"Josh Elliott","json":"/actors/jelliottp.json"},{"ref":"actor:oblomov-dev","name":"oblomov-dev","json":"/actors/oblomov-dev.json"}],"explained_by":[],"alternative_to_this":[],"needed_by":[{"ref":"artifact:abap2ui5-addons-popups","name":"abap2UI5-addons/popups","json":"/artifacts/abap2ui5-addons-popups.json","requirement":"required","role":"layout-renderer"},{"ref":"artifact:abap2ui5-addons-selection-screen","name":"selection-screen","json":"/artifacts/abap2ui5-addons-selection-screen.json","requirement":"required","role":"variant-persistence"}],"available_via":[],"parts":[],"add_on_to":{"ref":"artifact:abap2ui5-abap2ui5","name":"abap2UI5","json":"/artifacts/abap2ui5-abap2ui5.json"},"add_ons":[],"answered_through_parts":[]}}