This Data Flow Specification (DFS) defines the end-to-end data flow required to meet the following requirements:
The models below are designed for
Can remove the measures for alternate currency /quantity as we will not use these as per KDD047 Universal parallel Ledgers. But then how does this fit in with currency roles?
A consolidated view of all the Requirements, KPIs and the supplying views covered by this DFS.
Overview:
GL transactions grouped by GL Accounts as defined by a particular Account Hierarchy
Based on Business Content
Recreates the S/4 model in a more logical fashion that in S/4 (removes the hard coding in the CDS views)
Differs in some way to the Functional Area Semantic Tag model
Purpose:
Simplified reporting using semantic tags
This flow will be shared with other POD's
Notes:

| Layer | Code | Prefix | Tech Name | Properties | Transformation | Performance |
|---|---|---|---|---|---|---|
| Inbound | 1TL_SemTagAccnt | 1TL_S4HR_ | I_SEMTAGGLACCOUNT | Standard technical fields (load date/time, source system) are added | ||
| x1TL_ACDOCA | 1TL_S4Hx_ | I_GLACCOUNTLINEITEMRAWDATA | Delta | Standard technical fields (load date/time, source system) are added | ||
| x1TL_Src Ledger | 1TL_S4Hx_ | I_LEDGERSOURCELEDGER | Delta | Standard technical fields (load date/time, source system) are added |
| |
| 1TL_Curr Role | 1TL_S4Hx_ | I_LEDGERCOMPANYCODECRCYROLES | Standard technical fields (load date/time, source system) are added |
| ||
| 1TL_Plan Cat | 1TL_S4HR_ | I_PLANNINGCATEGORY | Standard technical fields (load date/time, source system) are added |
| ||
| 1TL_GL Acnt Hier | 1TL_S4HR_ | I_GLACCOUNTHIERARCHY | Standard technical fields (load date/time, source system) are added |
| ||
|
| |||||
| Harmonisation | 2TL_ACDOCA | 2TL_HARM_ | I_GLAccountLineItemRawData | Union China with RoW for performance reasons | Persist | |
| 2TL_Src Ledger | 2TL_HARM_ | I_LedgerSourceLedger | Union China with RoW for performance reasons | Persist | ||
|
| |||||
| 2VR_Src Ledr | 2VR_HARM_ | I_LedgerSourceLedger |
|
| ||
| 2VR_Curr Role | 2VR_HARM_ | I_LedgerCompanyCodeCrcyRoles |
|
| ||
| 2VR_Lede / Cur | 2VR_HARM_ | I_CoCodeLedgerSourceLedger | Join Ledger and currency views |
| ||
| 2VR_SemTagAccnt | 2VR_HARM_ | I_SemTagGLAccount |
|
| ||
| 2VR_Plan Cat | 2VR_HARM_ | I_PlanningCategory |
|
| ||
| 2VR_Plan Cat2 | 2VR_HARM_ | I_PlanningCategory_V2 |
|
| ||
| 2VR_GLActHier | 2VR_HARM_ | I_GLAccountHierDir |
|
| ||
| 2VR_GLActHier2 | 2VR_HARM_ | I_GLAccountHierDir_V2 |
|
| ||
| 2VR_GL Acc Line Itm | 2VR_HARM_ | I_GLAccountLineItem |
|
| ||
| Propagation | ||||||
| 3VR | ActlPlnJournalEntryItemSemTag | Fact | Remove redundant measures Join ActPlan N:N SemTagGLAccount (filter for validity dates and excld FunctArea) | Can we reduce initial projection? | ||
| 3VR | ProfitLossSemanticTag | Fact | Create parameters for FinStatemtVersion and Category Reduce dimensions (need to align to our needs) Add associations | |||
| Reporting | 4MA_PL_SemTag | 4MA_ | ProfitLossSemanticTagKPIs | Measures: 19 restricted by Semantic tags and simple calculations Variables: FinStatemtVersion, Category, Date |
| Extractor Name | Properties | Build Jira Ref For Extension Information |
|---|---|---|
| I_GLAccountLineItemRawData | Delta | |
| I_LedgerCompanyCodeCrcyRoles | ||
| I_LedgerSourceLedger | ||
| I_PlanningCategory | ||
| I_GLAccountHierarchy |
Source: I_GLACCOUNTLINEITEMRAWDATA
Properties:
Source: 1TL_S4Hx_I_GLACCOUNTLINEITEMRAWDATA
Purpose:
Source: 2TL_HARM_I_GLACCOUNTLINEITEMRAWDATA
Purpose:
Source: 1TL_S4Hx_Z_I_PMNotifMaintenanceData
Purpose:
Source: 2VR_A2DAMM_MaintOrderTech
Transformations/Calculations:
Source: 2VR_A2DAMM_PMNotifMaintenanceData
Calculation:
Source: 2VR_PMNotif
Logic / Adjustments:
Union:
Purpose: Combine planned and unplanned downtime into a single reusable downtime fact.
Union of: 3VR_A2DAMM_UnplannedDownTime & 3VR_A2DAMM_PlannedDownTime
Target Field Mapping:
- Technical Object fields aligned across both sources.
- Downtime duration stored in hours (conversion applied where required).
No aggregation is performed at this stage.
Datamodel, calculations and associations.
Projection before union. Two objectives:
Create a shared downtime schema.
Standardise time fields
Planned: map scheduled basic start/end into StartDateTime, EndDateTime
Unplanned: map malfunction start/end into StartDateTime, EndDateTime
Common fields
Supports:
Includes technical details for:
| Report Field Description | SAP Table-Field Name / process | Comments / Calculation / Formula / Restriction dimensions and values | Aggregation of data | Example SAP field data |
| Notification Count | Process: constant 1 per notification row in unplanned projection | Counts maintenance notifications used in the unplanned side of the downtime fact. Supports: (a) Loss Driver # notifications per asset (ERP-1012) where required in dashboards, (b) general notification volume analysis. Implemented as 1 per row sourced from I_PMNotifMaintenanceData (notification grain). | SUM | 1 |
| Breakdown Notification Count | Process: CASE WHEN I_PMNotifMaintenanceData.MaintenanceObjectIsDown = 'X' THEN 1 ELSE 0 END | Counts only notifications where the object was truly down (breakdown). Used to restrict unplanned downtime views and support breakdown frequency analyses. | SUM | 1 / 0 |
| Downtime Duration (Seconds, Unplanned) | I_PMNotifMaintenanceData.MaintObjectDowntimeDuration | Raw downtime duration in seconds for unplanned breakdown events. Base measure for unplanned downtime calculations (hours) and Loss Driver (# breakdown hours). | SUM | 7200 |
| Downtime Hours (Unplanned) | Calculated: I_PMNotifMaintenanceData.MaintObjectDowntimeDuration / 3600 | Normalized unplanned downtime in hours derived from raw seconds. | SUM | 2 |
| Planned Order Count | Process: constant 1 per planned order row in planned projection | Counts planned maintenance orders included in the planned side of the downtime fact (e.g., by MaintenanceOrderType and/or MaintenanceOrderPlanningCode rules). | SUM | 1 |
| Planned Window Seconds | Calculated: (ScheduledBasicEndDateTime - ScheduledBasicStartDateTime) from SAP_PM_HL_MaintOrder date/time fields | Planned outage window duration in seconds, derived from scheduled basic start/end of the maintenance order. | SUM | 14400 |
| Planned Window Hours | Calculated: PlannedWindowSeconds / 3600 | Normalized planned downtime window in hours derived from scheduled basic dates/times. | SUM | 4 |
| Unified Downtime Hours | Calculated: CASE WHEN SourceType = 'NOTIF' THEN DowntimeHours(Unplanned) ELSE PlannedWindowHours END | Core downtime measure in the unified fact: - SourceType='NOTIF': uses unplanned downtime hours - SourceType='ORDER': uses planned downtime window hours Primary input to ERP-1012 planned vs unplanned comparisons and Loss Driver (# breakdown hours) (restricted to UNPLANNED). | SUM | 2.0 / 4.0 |
| Total Unplanned Downtime (Hours) | SAC Restricted Measure: SUM(Unified Downtime Hours) where PlannedVsUnplanned = 'UNPLANNED' | Restricted measure in SAC that sums Unified Downtime Hours only for unplanned (breakdown) records. Used directly in ERP-1012 KPI views. | SUM | |
| Total Planned Downtime (Hours) | SAC Restricted Measure: SUM(Unified Downtime Hours) where PlannedVsUnplanned = 'PLANNED' | Restricted measure in SAC that sums Unified Downtime Hours only for planned maintenance records. | SUM | |
| Downtime Ratio Planned / Unplanned | SAC Calculated Measure: TotalPlannedDowntime / NULLIF(TotalUnplannedDowntime, 0) | Ratio of planned to unplanned downtime for the selected context. Benchmarking measure. | CALCULATED | |
| Technical Availability % (optional) | SAC Calculated Measure: (AvailableTime - TotalUnplannedDowntime) / AvailableTime * 100 | High-level availability KPI. AvailableTime must be defined by business rule (e.g., 24h days in period, with or without planned windows). Not sourced from CDS. | CALCULATED |
tbd
tbd
| Field | Required/Optional | Scope | Default | Comment |
| Periods (Weeks / Months / Quarters) | Optional | Interval (Date or Fiscal Period) | Default = last xxxxx | Applied using CreationDate or CreationDateTime |
| Functional Location (Asset Hierarchy) | Optional | Hierarchy | No default | Filters the dataset based on the asset hierarchy, supported via FunctionalLocation from I_PMNotifMaintenanceData. (Does this hierarchy exist?) |
| Main Work Center | Optional | Multiple Single Values | No default | (_MainWorkCenter.WorkCenterInternalID). |
| Planner Group | Optional | Multiple Single Values | No default | Not supported in this Analytical Model because Planner Group is not a field in either I_MaintenanceNotification or I_PMNotifMaintenanceData. |
| Storage Location | Optional | Multiple Single Values | No default | Not supported in this Analytical Model. |
| Maintenance Event | Optional | Multiple Single Values | No default | No dedicated “Maintenance Event” field exists. Not supported in this Analytical Model. Potential exists for an alternative. |
Supports:
*Since this potentially is the difference between two consecutive breakdown records, more calculations may be required in a separate model. Complexity ramps up if it requires actual operating hours between failures.
Includes technical details for:
Dimensions & Measures are defined in the Functional Specification under “Dimensions & Measures: Requirements View”; the analytical model exposes those fields at notification grain without pre-aggregation.
| Report Field Description | SAP Table-Field Name / process | Comments / Calculation / Formula / Restriction dimensions and values | Aggregation of data | Example SAP field data |
| Notification Count | Process: constant 1 per record | Base measure for notification-level counting. | SUM | 1 |
| Breakdown Notification Count | Process: CASE WHEN MaintenanceObjectIsDown = 'X' THEN 1 ELSE 0 END | Counts notifications where the maintenance object is flagged as down. Used for breakdown frequency KPIs. | SUM | 1 |
| Downtime Duration (Seconds) | I_PMNotifMaintenanceData.MaintObjectDowntimeDuration | Raw downtime duration as stored in PM notification (AUSZT). No transformation. | SUM | 7200 |
| Downtime Duration (Hours) | Calculated: MaintObjectDowntimeDuration / 3600 | Convenience conversion of downtime seconds to hours. | SUM | 2 |
| Availability Before Malfunction (%) | I_PMNotifMaintenanceData.AvailyBeforeMalfunctionPercent | Availability percentage recorded before malfunction. Untransformed source value. | AVG | 98.5 |
| Availability After Malfunction (%) | I_PMNotifMaintenanceData.AvailyAfterMalfunctionPercent | Availability percentage recorded after malfunction. Untransformed source value. | AVG | 75 |
| Availability After Conclusion (%) | I_PMNotifMaintenanceData.AvailyAfterConclusionPercent | Availability percentage after notification completion. Untransformed source value. | AVG | 96 |
| System Condition Before Malfunction | I_PMNotifMaintenanceData.SystConditionBeforeMalfunction | System condition indicator before malfunction. Source value, no derivation. | AVG | 4 |
| System Condition After Malfunction | I_PMNotifMaintenanceData.SystConditionAfterMalfunction | System condition indicator after malfunction. Source value, no derivation. | AVG | 2 |
| System Condition After Completion | I_PMNotifMaintenanceData.SystConditionAfterCompletion | System condition indicator after completion. Source value, no derivation. | AVG | 4 |
| Emergency Notification Count | Process: CASE WHEN MaintPriority IN ('0','1') THEN 1 ELSE 0 END | Counts emergency notifications (priority 0 & 1). Used for ERP-1092 KPIs. | SUM | 1 |