Skip to content

S5Consulting/s5-application-extension-methodology

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

9 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

SAP Application Extension Methodology

Purpose

High‑level architecture

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)

Domain model (DB tables)

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.

CDS modeling

  • ZAEMC_*: base view entities over ZAEMA_* tables (domain layer).
  • ZAEMI_*: consumption/projection views for UI exposure, including dedicated value‑help projections (..._TIERVH, ..._EXTDOMVH, ..._BBLOCKVH, and ..._COMBO_*VH).
  • .ddls.baseinfo shows 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.

RAP behavior

  • 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_DraftAdministrativeData entity set.

Services (OData V4)

Service Definitions/Bindings:

  • ZAEM_EXPOSE_CONFIG → exposes Config, 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.

Value Help (VH) – how it actually works

AEM delivers two patterns:

  1. Simple VH views (ZAEMI_TIERVH, ZAEMI_EXTDOMVH, ZAEMI_BBLOCKVH) used as classic value lists.
  2. 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.baseinfo lists "FROM": ["ZAEMA_*","ZAEMDR_*"]), which ensures lookups also return draft rows created in the current session.
  • In OData metadata the consuming fields carry Common.ValueListReferences pointing to F4 services (.../srvd_f4/...), generated by service binding. In metadata.xml you can see references attached to properties like ExtentionStyleType/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_ID when in Combo VH
  • Result: while editing a draft of ExtentionStyle, dropdown for TierId shows tiers from both active ZAEMA_TIER and unsaved drafts in ZAEMDR_TIER, filtered by draft’s CONFIG_ID.

UI

s5-aem-maintain (Fiori elements V4)

  • sap.app: s5aemmaintain
  • Data source mainService points to the OData V4 binding and uses local metadata for mock.
  • Routing defines:
    • ListReport on /Config
    • ObjectPage on /Config
  • Annotations include Common/UI vocabularies and the AEM service.
  • Table layout: responsive table via com.sap.vocabularies.UI.v1.LineItem settings.

s5-aem-overview (Freestyle UI5)

  • Minimal shell (App.view.xml, App.controller.js) and component wiring.
  • Roadmap: KPIs/tiles bound to an aggregated model of extensions per tier/domain.

Naming conventions

  • Tables: ZAEMA_* active; ZAEMDR_* draft.
  • CDS domain: ZAEMC_* (Core view entities).
  • CDS UI/consumption: ZAEMI_*, including *_VH for value helps.
  • Behavior pools: ZBP_AEMI_* per consumption entity.
  • Services: ZAEM_EXPOSE_* (SRVD/SRVB), UI binding ZAEMUI_*_V4.

How to run

Backend (ABAP RAP)

  1. Import with abapGit (.abapgit.xml).
  2. Activate DDIC (tables/domains), CDS, BDEF.
  3. Publish service bindings (OData V4).

Frontend (UI5)

cd s5-aem-maintain
npm ci
npm start
# app serves with local OData V4 metadata mock
cd s5-aem-overview
npm ci
npm start

Repository map

  • .abapgit.xml – abapGit descriptor
  • src/zaem_core/* – all ABAP artifacts (tables, CDS, behavior, services)
  • s5-aem-maintain/* – Fiori elements app for maintaining configuration
  • s5-aem-overview/* – freestyle app for overview

Design intent

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.

References

About

SAP Application Extension Methodology

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published