Introduction
This Data Flow Specification (DFS) defines the end-to-end data flow required to meet the following requirements:
- ERP-xx Business Case
- etc.
The models below are designed for
- semantic tag - gl account
- fixed assets (need all depreciation areas)
- Lease FX
- tax
- cash flow (flows?) - maybe covered by GR rather
- SKF
- Headcount
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?
Reporting is done in tons so store rather than calc. Where if we dont persist again
Probably the same for value at bud rate
A consolidated view of all the Requirements, KPIs and the supplying views covered by this DFS.
GL Account Semantic Tags (Model)
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 |
Source System Extractors
| Extractor Name | Properties | Build Jira Ref For Extension Information |
|---|---|---|
| I_GLAccountLineItemRawData | Delta | |
| I_LedgerCompanyCodeCrcyRoles | ||
| I_LedgerSourceLedger | ||
| I_PlanningCategory | ||
| I_GLAccountHierarchy |
Inbound Layer
Source: I_GLACCOUNTLINEITEMRAWDATA
Properties:
- Delta
- Standard technical fields (load date/time, source system) are added
Harmonisation Layer
2TL_HARM_I_GLACCOUNTLINEITEMRAWDATA
Source: 1TL_S4Hx_I_GLACCOUNTLINEITEMRAWDATA
Purpose:
- Union China with RoW for performance reasons
2VR_HARM_
Source: 2TL_HARM_I_GLACCOUNTLINEITEMRAWDATA
Purpose:
- H
2VR_A2DAMM_PMNotifMaintenanceData
Source: 1TL_S4Hx_Z_I_PMNotifMaintenanceData
Purpose:
- Harmonise notification maintenance data.
- Preserve raw downtime duration (seconds) and malfunction timestamps.
- Align technical object identifiers with order data.
Propagation Layer
3VR_A2DAMM_PlannedDownTime
Source: 2VR_A2DAMM_MaintOrderTech
Transformations/Calculations:
- Planned downtime window derived from Scheduled Basic Start and End date/time.
- PlannedVsUnplanned flag set to 'PLANNED'.
- SourceType set to 'ORDER'.
3VR_A2DAMM_UnplannedDownTime
Source: 2VR_A2DAMM_PMNotifMaintenanceData
Calculation:
- Unplanned downtime duration sourced from MaintObjectDowntimeDuration (seconds).
- PlannedVsUnplanned flag set to 'UNPLANNED'.
- SourceType set to 'NOTIF'.
3VF_A2MAMM_PMNotifMaintenanceData
Source: 2VR_PMNotif
Logic / Adjustments:
- Project the notification-centric reporting grain (1 row per Maintenance Notification).
- Include required dimensions from the FS (e.g., Notification Type/Priority/Origin, Maintenance Plant, Creation Date/Time, Equipment, Functional Location).
- Include raw downtime duration (seconds) and derived hours where required (no pre-aggregation).
3VF_A2DAMM_DowntimeFact
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:
Projection before union. Two objectives:
Create a shared downtime schema.
- SourceType = 'ORDER' / 'NOTIF'
- PlannedVsUnplanned = 'PLANNED' / 'UNPLANNED'
- DowntimeSeconds and/or DowntimeHours
- Normalise Functional Location: I_PMNotifMaintenanceData.RelevantFunctionalLocation & I_MaintOrderTechObjCube._LocationAccountAssignment.FunctionalLocation
Standardise time fields
Planned: map scheduled basic start/end into StartDateTime, EndDateTime
Unplanned: map malfunction start/end into StartDateTime, EndDateTime
Union:
Common fields
- Equipment
- Functional Location
- MaintenancePlanningPlant
- MaintenancePlannerGroup
- MaintenancePlant
Reporting Layer
4MA_A2DAMM_DowntimeFact
Supports:
- ERP-1012 Asset Down Time Planned vs Unplanned
- ERP-1012 Loss Driver (# breakdown hours)
Includes technical details for:
- Post-aggregation calculations
- Restricted measures
- Time-based analysis and drill-through
Calculated Measures (Post Aggregation Calculations / exception aggregation etc)
| 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 |
Restricted Measures
tbd
Currency Conversions
tbd
Variables
| 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. |
Data access controls
4MA_A2DAMM_PMNotifMaintenanceData
Supports:
- ERP-1012 Loss Driver (# breakdown hours) – unplanned downtime hours from notifications
- ERP-1012 Loss Driver (# notifications) – notification counts and status-driven slicing
- ERP-1012 Technical Availability (input measures) – unplanned downtime and breakdown flags used in SAC availability calculations
- ERP-1013 MTBF assuming the definition is "Time between failure events".*
*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:
- Post-aggregation calculations in SAC (e.g., hours conversions, ratios, availability formulas)
- Restricted measures by breakdown / downtime flags and status
- Time-based analysis (malfunction start/end, creation dates) and drill-through to Maintenance Notification
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.
Calculated Measures (Post Aggregation Calculations / exception aggregation etc)
| 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 |