ABAP RAP (src/zaem_core)
├─ Tables (ZAEMA_*) + Draft tables (ZAEMDR_*)
├─ CDS View Entities (ZAEMC_*) and Consumption/Projection (ZAEMI_*)
├─ Behavior Definitions (managed, draft)
├─ Service Definitions/Bindings (OData V4)
└─ Behavior Pool classes (empty for managed scenario)
UI5
├─ s5-aem-maintain (Fiori elements V4 List Report/Object Page bound to /Config)
└─ s5-aem-overview (Freestyle UI5 shell; roadmap for KPIs/tiles)
| Table | Keys | Non-key fields |
|---|---|---|
| ZAEMA_AREA | CLIENT, ID, CONFIG_ID |
TITLE, LAST_CHANGED_AT, LOCAL_LAST_CHANGED_AT |
| ZAEMA_BBLOCK | CLIENT, ID, CONFIG_ID |
TITLE, LAST_CHANGED_AT, LOCAL_LAST_CHANGED_AT |
| ZAEMA_CONFIG | CLIENT, ID |
TITLE, ACTIVE, VERSION, LAST_CHANGED_AT, LOCAL_LAST_CHANGED_AT |
| ZAEMA_EXTDOM | CLIENT, ID, CONFIG_ID |
TITLE, LAST_CHANGED_AT, LOCAL_LAST_CHANGED_AT |
| ZAEMA_EXTSTYLE | CLIENT, ID, CONFIG_ID |
TITLE, TIER_ID, LAST_CHANGED_AT, LOCAL_LAST_CHANGED_AT |
| ZAEMA_EXTUC | CLIENT, ID |
TITLE, AREA, BUSINESS_CONTEXT, DIAGRAM, LAST_CHANGED_AT, LOCAL_LAST_CHANGED_AT |
| ZAEMA_OSEDOM | CLIENT, ID, CONFIG_ID |
TITLE, LAST_CHANGED_AT, LOCAL_LAST_CHANGED_AT |
| ZAEMA_TEBBLOCK | CLIENT, ID, CONFIG_ID |
TITLE, TIER_ID, EXTENSION_DOMAIN_ID, BUILDING_BLOCK_ID, LAST_CHANGED_AT, LOCAL_LAST_CHANGED_AT |
| ZAEMA_TIER | CLIENT, ID, CONFIG_ID |
TITLE, LAST_CHANGED_AT, LOCAL_LAST_CHANGED_AT |
| ZAEMDR_AREA | MANDT, ID, CONFIGID |
TITLE, LASTCHANGEDAT, LOCALLASTCHANGEDAT |
| ZAEMDR_BBLOCK | MANDT, ID, CONFIGID |
TITLE, LASTCHANGEDAT, LOCALLASTCHANGEDAT |
| ZAEMDR_CONFIG | MANDT, ID |
TITLE, ACTIVE, VERSION, LASTCHANGEDAT, LOCALLASTCHANGEDAT |
| ZAEMDR_EXTDOM | MANDT, ID, CONFIGID |
TITLE, LASTCHANGEDAT, LOCALLASTCHANGEDAT |
| ZAEMDR_EXTSTYLE | MANDT, ID, CONFIGID |
TITLE, TIERID, LASTCHANGEDAT, LOCALLASTCHANGEDAT |
| ZAEMDR_EXTUC | MANDT, ID |
TITLE, AREA, BUSINESSCONTEXT, DIAGRAM, LASTCHANGEDAT, LOCALLASTCHANGEDAT |
| ZAEMDR_OSEDOM | MANDT, ID, CONFIGID |
TITLE, LASTCHANGEDAT, LOCALLASTCHANGEDAT |
| ZAEMDR_TEBBLOCK | MANDT, ID, CONFIGID |
TITLE, TIERID, EXTENSIONDOMAINID, BUILDINGBLOCKID, LASTCHANGEDAT, LOCALLASTCHANGEDAT |
| ZAEMDR_TIER | MANDT, ID, CONFIGID |
TITLE, LASTCHANGEDAT, LOCALLASTCHANGEDAT |
Draft support is implemented via shadow tables ZAEMDR_*. Each active table ZAEMA_* has a corresponding draft table with compatible keys and draft administration columns, used by RAP DraftRoot/Node. |
ZAEMC_*: base view entities overZAEMA_*tables (domain layer).ZAEMI_*: consumption/projection views for UI exposure, including dedicated value‑help projections (..._TIERVH,..._EXTDOMVH,..._BBLOCKVH, and..._COMBO_*VH)..ddls.baseinfoshows base sources for value‑help views include both active and draft tables (e.g.ZAEMA_TIER,ZAEMDR_TIER) to make VH work consistently while editing drafts.
- Managed implementation with draft (empty BP classes
ZBP_AEMI_CONFIG,ZBP_AEMI_EXTUC). - Behavior definitions exist for consumption entities (e.g.
ZAEMC_CONFIG,ZAEMI_EXTUC) and are bound through OData V4 service bindings. - Draft administrative data is exposed via standard
I_DraftAdministrativeDataentity set.
Service Definitions/Bindings:
ZAEM_EXPOSE_CONFIG→ exposesConfig,Tier,ExtentionStyle, and value‑help entity sets.ZAEM_EXPOSE_EXTUC→ exposes use‑case entities.
The FE app consumes /sap/opu/odata4/sap/zaemui_config_v4/srvd/sap/zaem_expose_config/0001/ with local metadata for mock mode.
AEM delivers two patterns:
- Simple VH views (
ZAEMI_TIERVH,ZAEMI_EXTDOMVH,ZAEMI_BBLOCKVH) used as classic value lists. - Combo VH views (
ZAEMI_COMBO_TIERVH,ZAEMI_COMBO_EXTDOMVH,ZAEMI_COMBO_BBLOCKVH) that filter by current configuration or parent keys (dropdown scenarios).
Key points:
- VH CDS include both active and draft sources (
.ddls.baseinfolists"FROM": ["ZAEMA_*","ZAEMDR_*"]), which ensures lookups also return draft rows created in the current session. - In OData metadata the consuming fields carry
Common.ValueListReferencespointing to F4 services (.../srvd_f4/...), generated by service binding. Inmetadata.xmlyou can see references attached to properties likeExtentionStyleType/TierId. - For draft documents the FE runtime uses DraftRoot semantics, so VH reads from the projection view which unions active and draft; write consistency is handled by RAP draft tables.
- Typical mapping inside VH:
- key: technical UUIDs (
ID,CONFIG_ID) - text:
TITLE - filter:
CONFIG_IDwhen in Combo VH
- key: technical UUIDs (
- Result: while editing a draft of
ExtentionStyle, dropdown forTierIdshows tiers from both activeZAEMA_TIERand unsaved drafts inZAEMDR_TIER, filtered by draft’sCONFIG_ID.
sap.app:s5aemmaintain- Data source
mainServicepoints to the OData V4 binding and uses local metadata for mock. - Routing defines:
ListReporton/ConfigObjectPageon/Config
- Annotations include Common/UI vocabularies and the AEM service.
- Table layout: responsive table via
com.sap.vocabularies.UI.v1.LineItemsettings.
- Minimal shell (
App.view.xml,App.controller.js) and component wiring. - Roadmap: KPIs/tiles bound to an aggregated model of extensions per tier/domain.
- Tables:
ZAEMA_*active;ZAEMDR_*draft. - CDS domain:
ZAEMC_*(Core view entities). - CDS UI/consumption:
ZAEMI_*, including*_VHfor value helps. - Behavior pools:
ZBP_AEMI_*per consumption entity. - Services:
ZAEM_EXPOSE_*(SRVD/SRVB), UI bindingZAEMUI_*_V4.
- Import with abapGit (
.abapgit.xml). - Activate DDIC (tables/domains), CDS, BDEF.
- Publish service bindings (OData V4).
cd s5-aem-maintain
npm ci
npm start
# app serves with local OData V4 metadata mockcd s5-aem-overview
npm ci
npm start.abapgit.xml– abapGit descriptorsrc/zaem_core/*– all ABAP artifacts (tables, CDS, behavior, services)s5-aem-maintain/*– Fiori elements app for maintaining configurations5-aem-overview/*– freestyle app for overview
AEM is a reference for governing where and how to extend: tiers (Presentation/Application/Data), extension styles (Side‑by‑Side, On‑Stack), domains, and building blocks. The model lets you configure and visualize allowed patterns, and the FE app serves as an admin UI for these rules.
- ABAP RAP (managed, draft): https://help.sap.com/docs/abap-cloud/abap-rap/abap-restful-application-programming-model
- Draft handling: https://help.sap.com/docs/abap-cloud/abap-rap/draft-capability
- OData V4 value help annotations: https://github.com/SAP/odata-vocabularies
- Fiori elements V4: https://ui5.sap.com/#/topic/26f208a5551d4b3b924c0dca887c6f52
- SAPUI5 OData V4 model: https://ui5.sap.com/#/topic/38a71f974d0240adb0cc53f253c5e6de
- Clean ABAP: https://github.com/SAP/styleguides/blob/main/clean-abap/CleanABAP.md
- SAP Application Extension Methodology Overview: https://help.sap.com/docs/sap-btp-guidance-framework/sap-application-extension-methodology/sap-application-extension-methodology-overview