Introduction

This Data Flow Specification (DFS) defines the end-to-end data flow required to meet the following requirements:

Sub areaData flowPurposeNotesJira
Financial Ledger Reporting

ACDOCA


Replicating business content for GLAccountLineItemRawData to create Semantic tags model that is used for financial reporting

It mirrors the CDS views used in S/4 but creates the semantic tag model in a more logical fashion that in S/4 (removes the hard coding in the CDS views)

This model provides all journal entry details. Organisational entities such as Company Code, Profit Centre, Cost Centre, Business Area, Functional Area, Financial dimensions like Ledger, G/L Account, Segment, Financial Document Type, Posting Key, Debit/Credit Code, are available in this data model. The model provides a source ledger as well as all the ledgers that apply to the relevant company codes.

This model maps the journal entries to the semantic tags defined based on G/L Accounts. The semantic tags based on functional areas are not considered in this model. 

Differs in some way to the Functional Area Semantic Tag model

Potentially need to create another AM to view different xxxx

I_JournalEntryItem - this separates AMOUNT by Dr/Cr - suggested for data flows (and suggesting using BALANCE from acdoca)

Incld Headcount, PlanTax
Net Working CapitalBSEG

The Operation Accounting Document item view provides details of an operational accounting document item (sourced from BSEG) like clearing document details, payment data, and tax data. The long-term vision is that table BSEG will be used only for open item management 

Used as the foundation of accounts receivable and accounts payable analysis, such as total payables and receivables, overdue receivables and payables, and future receivables.

Generates a balance and movements model (else look at stock, treasury and Group Reporting for inspiration)

There is a model that should cover the requirement for the 3 XREF fields not in ACDOCA

Leading ledger only
Fixed AssetsAssets

Ability to show Original cost, depreciation and net book value

  • Ideally showing all depreciation areas
  • Consider the index to revalue too
  • Ideally including Leases
  • Impairments is potentially a step too far


Statistical Key FiguresSKF

SKF will be calculated in SAC and retracted to both S/4 systems based on company code. 

SKF can be amended in S/4 and need to be extracted back into DSP



Group ReportingACDOCU

Std model

cash flow

loads of schedules - does it make sense to add a planning model for data capture? eg goodwill breakdown

I dont think it does the YTD model anymore

They run quarterly. projecting the 3rd Q forwards to predict the end picture

Reconciliation to Finance GL:

  • The values in company code currency should reconcile perfectly between Acdoca/u
  • Potentially the global currency value will be translated at a different rate
  • Previously they used YTD but now will have periodic, this should simplify many of the prior issues
Planning is not included in this model - need to add
Restructuring ProvisionsPlan

Payroll data is required to cater for workforce restructuring planning every quarter

(4 forms in total, similar in nature just different aggregation levels)



HSE ProvisionsPlan

data is required to cater for  planning every quarter (2 forms in total, one for qualitative and one for quantitative analysis and inputs)



Insurance Plan

Data regarding assets is required to cater for insurance planning every year



TaxTax

Ability to plan tax changes and create journals to be posted



Stock valuationStock

Stock values including future prices. Ensure you get value even if no stock on hand.

Look at C_StockQtyCurrentValue_3 for inspiration



Balances

There is a CDS called C_GLAccountBalance_F0707A This is implemented via a class

Predessor was probably C_CN_GLAccountBalanceSumQuery but this also uses a class

DSP approach in NWC appears the best bet




Vision:

The vision is to be able to run a sales report showing Net Sales from GR with a drill down to S/4

Concern is that any drill down will go to ACDOCU at best?

In a perfect world, we would create a KPI once and share it, to ensure consistency.

If a KPI is only calculated in the Analytical Model, it will not be shared. Reasons for defining at this level are:

Can remove the measures for alternate currency /quantity as we will not use these as per KDD047 Universal parallel LedgersBut 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. It has been decided that this will not be persisted but rather calculated.

Commentary will be added per model. This is not ideal as there is no leverage. 

Missing from diagram: depreciation, mbew, kinaxis LT plan

Source System Extractors

SystemCodeExtractor NamePurposeDeltaFrequencyJira RefExtended fields

S/4 x

ACDOCA

I_GLACCOUNTLINEITEMRAWDATA

View does not implement the logic for extension ledgers (just basis ledgers)

Includes Balances Brought Forward (000)

Ycontinuous
there will be
S/4 xBSEGI_OPERATIONALACCTGDOCITEMOpen Item management



S/4 xFQMFLOWAI_CASHLIQUIDITYACTUALFLOWCash liquidity actual flow for working capital inventory. Does not offer dimensions for PC, debtor, vendor, segmentY


S/4 xFQMFLOWFI_CASHLIQUIDITYFORECASTFLOWSame source as actual flowsY




I_FXDASTSTATISTICALLINEITEM

Statistical Depreciation areas

This will need to be exposed for extraction. Replicating the logic used in S/4 I_AssetDepreciationBalanceCube
Hopefully enabling valuation on Leased Assets

Restrict to VORGN <> AFAB, MOVCAT <> 05, SLALITTYPE not between 07203 and 07209 (check CDS for exact)

Consider need for I_AccountingPrincipleAssgmt



needed


I_CNSLDTNGROUPJRNLENTRITMDEX

Matrix consolidationYMonthly?
Potentially

Inbound Layer

No inbound field adjustments are applied. Standard technical fields (load date/time, source system) are retained as delivered.

Persist data as found in the source system CDS view. This should be including any extensions.

Any data sourced from both S/4 environments, will be created using delta capture and re-persisted in Harmonisation layer. Assumption is that this data can be in cold storage if available.

In the Business Content, some calculated fields are populated with Null values to make the model compatible with SAP S/4HANA release 2020. These fields will now be added in the 1TL object and mapped, removing the NULL calculation.

CodeTech NameLogicPotential ChangesPartitioning
1TL_ACDOCA

1TL_S4HR_I_GLAccountLineItemRawData

Retain all 402 fields even though SAP Business Content has 60 fields less. As the BCT is based on SAP 2023, I assume that these are new fields

extensions 

Source Ledger = 0L, CO, LG, LT, TX (will always be specified)

Fiscal Year = I guess can be specified

1TL_BSEG

1TL_S4HR_I_OperationalAcctgDocItem

Adds flag for cleared, based on date



1TL_CashA

1TL_S4HR_I_CashLiquidityActualFlow

Cash Actual Flow

Lower levels of the CDS have more dimensions, why are they excluded? cust, vend, PC, WBS, material

add dimensions?


1TL_CashF

1TL_S4HR_I_CashLiquidityForecastFlow

Cash Forecast Flow



1TL_Depr

1TL_S4HR_I_FxdAstStatisticalLineItem

Depreciation Areas



1TL_SKF

1TL_S4HR_I_

Statistical Key Figures



1TL_ConsolDEX

1TL_S4HR_I_CnsldtnGroupJrnlEntrItmDex

Consolidation



CDS View I_SemTagGLACcount from SAP S/4HANA provides the mapping between the G/L accounts and semantic tags. It is the key component of this model.

This CDS view does not have any key fields. The replication of data without key fields from CDS Views is not supported by the Replication Flow at moment. Instead the local table SAP_FI_IL_I_SemTagGLAccount is used in this model to support both SAP S/4HANA Cloud and SAP S/4HANA source systems. The inbound layer view SAP_FI_IL_SemTagGLAccount is based on this table.

Customer should perform the following activities after importing the content package:

or

The Inbound layer view G/L Account with Semantic Target (IL) (SAP_FI_IL_ SemTagGLAccount) is based on the local table SAP_FI_IL_I_SemTagGLAccount and has some simple data type conversions like date conversion.


Harmonisation Layer

Both transaction data or master data that is not tier 1 will require a union between environments and re-persisted. This is to improve performance.

As soon as a local table is joined with another dataset, the reference is lost and the "I" from the extractor can be dropped

2TL_ACDOCA - 2TL_HARM_I_GLAccountLineItemRawData

Purpose:

Persist after union for performance

Source / Union:

1TL_S4HR_I_GLAccountLineItemRawData

1TL_S4HC_I_GLAccountLineItemRawData

Filter:

Potentially consider (purely for performance)

Formula:

Potentially consider (purely for performance)

Key:

Ledger, CompanyCode, SourceLedger

Partitions:

Ledger, FiscalYear

Comments:

Set as Delta Capture

2VR_GLAccItm - 2VR_HARM_GLAccountLineItem

Purpose:

Casting dates and add the statistical derivations from the next level

Source:

2TL_HARM_I_GLAccountLineItemRawData

Filter: 

Formula:

Casting TO_DATE (PostingDate, DocumentDate, CreationDate, ServicesRenderedDate, PerformancePeriodStartDate, PerformancePeriodEndDate, ExchangeRateDate, ClearingDate, ValueDate, LastChangeDate)

add the statistical derivations here, rather than repeat in the level above

WBSIsStatisticalWBSElement - WHEN AccountAssignmentType <> 'PR' AND WBSElementInternalID <> '00000000' THEN 'X' ELSE '' END

IsStatisticalSalesDocument   -  WHEN AccountAssignmentType <> 'VB' AND SalesDocument <> '' THEN 'X' ELSE '' END

IsStatisticalCostCenter          -  WHEN ( AccountAssignmentType <> 'KL' AND AccountAssignmentType <> 'KS') AND CostCenter <> '' THEN 'X' ELSE '' END

IsStatisticalOrder.                   -  WHEN ( AccountAssignmentType <> 'OR' and AccountAssignmentType <> 'OP' and AccountAssignmentType <> 'OV' ) and OrderID <> '' THEN 'X' ELSE '' END

Comments:

Note that the fields set to null in BCT are available to be mapped in this release.

Changing name to replicate the corresponding CDS in S/4

2VR_HARM_CoCodeLedgerSourceLedger 

Purpose:

To provide currency roles and Company Code Assignment of Ledgers

Source:

 I_LedgerCompanyCodeCrcyRoles 

I_LedgerSourceLedger

Join:

[Many.....Many]2VR_HARM_CoCodeLedgerSourceLedger as 2VR_HARM_LedgerCompanyCodeCrcyRoles  LEFT JOIN  2VR_HARM__LedgerSourceLedger on Ledger = Ledger

Projection:

Remove repeated Ledger

Comments:

2VR_GLAccItmV1 - 2VR_HARM_GLAccountLineItem V1

Purpose:

To provide all the ledgers available to a company code

This has the effect of exploding the rows to ensure that all ledgers are created for every source ledger

Source:

2VR_HARM_GLAccountLineItem

2VR_HARM_CoCodeLedgerSourceLedger 

Filter:

Join:

[Many.....Many] 2VR_HARM_GLAccountLineItem INNER JOIN I_LedgerCompanyCodeCrcyRoles on SourceLedger = SourceLedger, CompanyCode = CompanyCode

Formula:

Comments:

SAP incorrectly defined as semantic type FACT

2VR_LeadLed - 2VR_HARM_GLAccountLineItemLeadingLedger

Purpose:

Restrict to Leading Ledger

Source:

2VR_HARM_GLAccountLineItem V1

I_FI_Ledger

Filter:

FI_Ledger  - IsLeadingLedger = 'X'

Projection:

FI_Ledger  - Ledger 

Join:

[Many.....1] 2VR_HARM_GLAccountLineItem V1 INNER JOINI_FI_Ledger on SourceLedger = Ledger

Formula:

Derivations applied at lower level, so not required here

Comments:

I do not understand why I apply this after adding all ledgers in the previous layer

I would suggest join should be ledger to account line item

2TL_BSEG - 2TL_HARM_I_OperationalAcctgDocItem

Purpose:

Persist after union for performance  

Source / Union:

1TL_S4HR_I_OperationalAcctgDocItem

1TL_S4HC_I_OperationalAcctgDocItem

Filter:

Formula:

Key:

CompanyCode, AccountingDocument, FiscalYear, AccountingDocumentItem

Partitions:

FiscalYear

Comments:

Set as Delta Capture

2VR_OpsItm - 2VR_HARM_I_OperationalAcctgDocItem

Purpose:

Casting dates and adding cleared flag

Source:

2TL_HARM_I_OperationalAcctgDocItem

Projection:

Removing 26 fields - project, fixedasset, material, valuationarea, jointventure, committmentitem, funds, profitabilitysegment etc

These are related to deprecation of fields and the purpose of th

Join:

Formula:

Casting TO_DATE (ClearingDate, ClearingCreationDate, ValueDate, DueCalculationBaseDate, LastDunningDate, TaxDeterminationDate, PostingDate, DocumentDate, NetDueDate, CashDiscount1DueDate, CashDiscount2DueDate)

Adding IsCleared - case when ClearingDate = '00000000' then '' else 'X' end

Comments:

Note that the fields set to null in BCT are available to be mapped in this release.

2TL_CashA - 2TL_HARM_I_CashLiquidityActualFlow

Purpose:

Persist after union for performance

Source / Union:

1TL_S4HR_I_CashLiquidityActualFlow

1TL_S4HC_I_CashLiquidityActualFlow

Filter:

Formula:

Comments:

Delta capture not required

2VR_CashA -  2VR_HARM_I_CashFlowActualItem

Purpose:

Cast dates and add fields

Source:

2TL_HARM_I_CashLiquidityActualFlow

Filter:

Projection:

CashFlowID, CshFlwValdtyStrtDteTmeVal as ValidFrom, CompanyCode, TransactionDate, PostingDate, TransactionCurrency, AmountInTransactionCurrency, CompanyCodeCurrency, AmountInCompanyCodeCurrency, GlobalCurrency, AmountInGlobalCurrency, BankAccountInternalID, Bank, BankName

Formula:

Cast TO_DATE for ( TransactionDate and PostingDate)

Adding ControllingArea, ProfitCentre,Segment, Customer, Supplier as NULL (hoping these are now standard fields in the CDS)

Comments:

Convert to Graphical

Combine SAP_FI_HL_CashFlowActualItem (adding NULL fields) and SAP_FI_IL_CashLiquidityActualFlow (casting)

2VR_CashAL -  2VR_HARM_I_CashLiquidityActualFlow

Purpose:

Cast dates and restrict

Source:

2TL_HARM_I_CashLiquidityActualFlow

Filter:

BankAccountInternalID  <> ''  AND BankAccountInternalID <> '0000000000'     should that not be OR rather than AND

Projection:

CashFlowID, CshFlwValdtyStrtDteTmeVal as ValidFrom, CompanyCode, TransactionDate, CompanyCodeCurrency, AmountInCompanyCodeCurrency, GlobalCurrency, AmountInGlobalCurrency

Formula:

Cast TO_DATE for ( TransactionDate and PostingDate)

Comments:

Convert to Graphical

2TL_CashF -  2TL_HARM_I_CashLiquidityForecastFlow

Purpose:

Persist after union for performance

Source / Union:

1TL_S4HR_I_CASHLIQUIDITYFORECASTFLOW

1TL_S4HC_I_CASHLIQUIDITYFORECASTFLOW

Filter:

Join:

Formula:

Comments:

Delta capture not required

2VR_CashF -  2VR_HARM_I_CashLiquidityForecastFlow

Purpose:

Casting dates and filtering

Source:

Filter:

BankAccountInternalID  <> ''  AND BankAccountInternalID <> '0000000000'     should that not be OR rather than AND

Projection:

CashFlowID, CshFlwValdtyStrtDteTmeVal as ValidFrom, CompanyCode, TransactionDate, CompanyCodeCurrency, AmountInCompanyCodeCurrency, GlobalCurrency, AmountInGlobalCurrency

Formula:

Cast TO_DATE for ( TransactionDate and PostingDate)

Comments:

Convert to Graphical combining the 2 views


2VR_GrpJnlItm -  2VR_HARM_GroupJournalEntryItem

Purpose:

Casting fields

Source:

1TL_S4HR_I_CNSLDTNGROUPJRNLENTRITMDEX 

Filter:

Formula:

TO_DECIMAL(AmountInTransactionCurrency,23,2)

TO_DECIMAL(AmountInLocalCurrency,23,2)

TO_DECIMAL(AmountInGroupCurrency,23,2)

TO_DATE(CreationDate)

Comments:

Relational semantic type
Consider removing fields that are not to be used like Funds management











Propagation Layer



3VR_VersMap -  3VR_HARM_VersionMapping

Purpose:

Union with itself
The first select is where group currency = group currency and the second select is where it is not equal

We assume this is relating to statistical postings

Source:

2VR_HARM_GroupJournalEntryItem

Union / Join:

2VR_HARM_GroupJournalEntryItem

          INNER JOIN ConsVersRelation on ConsolidationVersionElement = ConsolidationVersionElement

          INNER JOIN ConsVers on ConsolidationVersion = ConsolidationVersion and GroupCurrency = GroupCurrency 

UNION ALL

2VR_HARM_GroupJournalEntryItem

          INNER JOIN ConsVersRelation on ConsolidationVersionElement = ConsolidationVersionElement

          INNER JOIN ConsVers on ConsolidationVersion = ConsolidationVersion and GroupCurrency <> GroupCurrency 

adding fields ConsolidationVersion and FiscalYearVariant

Projection:

Removing creationdate, creationtime, creationdatetime (the count difference is -1 as we add 2 and remove these 3)

Formula:

The second select does not update the group currency and amount in group currency

Comments:

Need to see if any entries where group currency <> group currency. Potentially GRDC data

Else items in local currency that dont have a translation

3VR_GrpJnlEntry -  3VR_HARM_GroupJournalEntryItem1

Purpose:

Union with same source


Source:

2VR_HARM_VersionMapping

Union / Join:

2VR_HARM_VersionMapping

          INNER JOIN ConsGrpStr on ConsolidationVersion = ConsolidationVersion, ConsolidationUnit = ConsolidationUnit and FiscalYearPeriod between FromFiscalYearPeriod and ToFiscalYearPeriod

          INNER JOIN ConsGrpStr on ConsolidationVersion = ConsolidationVersion, PartnerConsolidationUnit = ConsolidationUnit and FiscalYearPeriod between FromFiscalYearPeriod and ToFiscalYearPeriod andConsolidationGroup = ConsolidationGroup

          where PostingLevel = 20

                 Replacing the ConsolidationGroup from the joined table

UNION ALL

2VR_HARM_VersionMapping

          INNER JOIN ConsGrpStr on ConsolidationVersion = ConsolidationVersion, ConsolidationUnit = ConsolidationUnit and FiscalYearPeriod between FromFiscalYearPeriod and ToFiscalYearPeriod andConsolidationGroup = ConsolidationGroup

          where PostingLevel = 02 or 12 AND RecordType = 0, A, D or E

UNION ALL

2VR_HARM_VersionMapping

          INNER JOIN ConsGrpStr on ConsolidationVersion = ConsolidationVersion, ConsolidationUnit = ConsolidationUnit and FiscalYearPeriod between FromFiscalYearPeriod and ToFiscalYearPeriod

          INNER JOIN ConsGrpStr on ConsolidationVersion = ConsolidationVersion, PartnerConsolidationUnit = ConsolidationUnit and FiscalYearPeriod between FromFiscalYearPeriod and ToFiscalYearPeriod andConsolidationGroup = ConsolidationGroup

          where PostingLevel = 22 AND RecordType = 0, A, D or E

UNION ALL

2VR_HARM_VersionMapping

         where  RecordType = U OR (RecordType = 0 AND PostingLevel in ( '', '00', '01', '08', '0C', '0T', '10', '20', '30' )  

Projection:

Formula:

Comments:

Probably move to Propagation layer

Create as Graphical




Only at this layer will we add additional datasets like plan and headcount
I am worried that the BSEG leg does not use PLAN

Ensure we perform group by when aggregating......

TypeCodeTech NameRootLogicPotential Changes


Headcount





2VR_ActPlnItm
ACDOCA/ PLAN

2VF_HARM_GLAccountLineItem V1 union with the plan data


VR3VR_AcPlSemTagActlPlnJournalEntryItemSemTag

ACDOCA/ PLAN

Join ActPlan N:N SemTagGLAccount (filter for validity dates and excld FunctArea)

Remove redundant measures

Can we reduce initial projection?

Need to add headcount somewhere, maybe here?

VF3VF_PFSemTagProfitLossSemanticTag

ACDOCA/ PLAN

Create parameters for FinStatemtVersion and Category

Reduce dimensions (need to align to our needs)

Add associations




SemTag Leading Ledger

ACDOCA/ PLAN

see BCT help doc

Dead end
VR3VR_JEBalTSJournalEntryBalanceTimeSeries

ACDOCA

Every month includes all postings belonging to this month and all postings from the past, and aggregates the data as cumulative balances

Therefore, it excludes all postings with Fiscal Period ‘000’, which can be viewed as balance carry-forward items, which otherwise would lead to double counted values.

Convert SQL to graphical?
VR3VR_JESTTim3VR_JEBalSTTimJournalEntryBalanceSemTagTimeSeries

ACDOCA

Every month includes all postings belonging to this month and all postings from the past, and aggregates the data as cumulative balances

Therefore, it excludes all postings with Fiscal Period ‘000’, which can be viewed as balance carry-forward items, which otherwise would lead to double counted values.

Convert SQL to graphical?
VR3VR_JESTTimJournalEntrySemTagTimeSeries

ACDOCA

Each month shows the changes or postings that occurred in this month.

The values of the Financial Data Model Configuration (FinancialDataModelConfiguration) table are not fixed and can be changed by the user. If you define a G/L Account Hierarchy before joining with G/L Account with Semantic Tag (IL), you restrict the data from Journal Entry item Operational View to a single G/L Account Hierarchy by default. This is a requirement for Net Working Capital Time Series Consumption (NetWorkingCapitalTimeSeries). 

Convert SQL to graphical?
VF3VF_InventInventoryTimeSeries

ACDOCA

Combines data from “Journal Entry Balance Time Series”, “Journal Entry Balance Semantic Tag Time Series” and “Journal Entry Semantic Tag Time Series”.

Some semantic tag KPIs must include data from the past months, whereas others need to consider only the movements of the relevant months.

Every branch introduces a calculated field UnionBranch which is included in some KPIs to check which type of data should be considered. 

  • ‘BALANCE’ selects data from Journal Entry Balance Time Series,
  • 'SEMTAGBAL' from Journal Entry Balance Semantic Tag Time Series and
  • 'SEMTAG' from Journal Entry Semantic Tag Time Series.



Cash Balances

 

 


VR3VR_CashTSCashBalanceTimeSeriesCashA

Read from CashFlowActualItem, returns cash balance with bank account on End of MonthDate

  • restrict to bank relevant transactions
  • add logic for currency role
  • add logic for time series dimensions
SQL to Graphic View?
TL3TL_CashBalTTotalCashBalanceTimeSeriesTable

CashA

Dataflow aggregates an interim result from CashBalanceTimeSeries and persists the results for performance.

This table is updated on an hourly basis.


VF3VF_CashBalCTotalCashBalanceTimeSeriesCube

CashA

Projection of TotalCashBalanceTimeSeriesTable adding associations


VF3VF_CashWk

CashActualFlowByCalendarWeek

 CashA

Read from CashLiquidityActualFlow

  • add logic for currency role
  • Adding country as an attribute of company ? cannot see the logic of creating as a dimension

SQL to Graphic View?

Combine with lower layer?

VF3VF_CashFcstCashForecastFlow

CashF

Read from CashLiquidityForecastFlow

  • add logic for currency role
  • Adding country as an attribute of company ? cannot see the logic of creating as a dimension
SQL to Graphic View?
VF3VF_CashFcstCCashForecastBalanceFlow

CashF / CashA

Union Actual and Forecast adding associations

  • Union Forecast
    • CashForecastFlow  (starting balance)
      • Filter: read < prior 2 years (all data before previous 2 years)
      • Formula: amend transdate to day-725 , set RecType = 1 and remove the balance (sum amounts)
    • CashForecastFlow (2 yrs back and 1 mnth forward)
      • Filter: read prior 2 years upto month +1 (25 months)
      • Formula:  set RecType = 0 and remove the balance
  • Union Actual
    • CashActualFlowByCalendarWeek  (alias starting balance incorrectly?)
      • Filter: read < prior 2 years (all data before previous 2 years)
      • Formula: set RecType = 1 (date is still per week?)
    • CashActualFlowByCalendarWeek (2 yrs back and 1 mnth forward)  
      • Filter: read prior 2 years upto month +1 (25 months)
      • Formula: set RecType = 0
will we have migrated history?
VR3VR_CashAWCashActualFlowByCalendarWeek

 

Read from CashLiquidityActualFlow

  • add logic for currency role
  • Adding country as an attribute of company ? cannot see the logic of creating as a dimension
SQL to Graphic View?
VT3VT_CashACWTCashActualFlowByCalendarWeekTable

 

Read from CashActualFlowByCalendarWeek and persist for performance?

  • DF using aggregation (Sum)
DF to Transformation Flow
VF3VF_CashACWCashActualFlowByWeek

 

Reads from CashActualFlowByWeek adding Associations




Net Working Capital

 

 


VR3VR_GLAccOpsJournalEntryItemOperationalView

ACDOCA/ BSEG

ACDOCA (GLAccountLineItemLeadingLedger) + BSEG (OperationalAcctgDocItem).  1:N

This will add the 3 XREF fields


VR3VR_OpsItemTSJournalEntryOperationalViewTimeSeries

ACDOCA/ BSEG

Reads using SQL, JournalEntryItemOperationalView with inner join on TimeSeriesMonthlyValues to restrict to monthly balances

Restricted to Debtors and Creditors and excludes Statistical Items

Flag for items that are sales-related or not (IsSalesRelated indicator). 

Performs the currency role selection

SQL to Graphic View?


3VR_NWCTSUnNetWorkingCapitalBalanceTimeSeriesUnion

ACDOCA/ BSEG

Union of:

  • CashBalanceTimeSeries - just for total cash amount
  • JournalEntryBalanceTimeSeries  - Debtors, Creditors and Stock
  • JournalEntrySemTagTimeSeries - Net Sales and Cost of Sales
  • JournalEntryOperationalViewTimeSeries - Revenue and Purchases
SQL to Graphic View?

3TL_NWCTableNetWorkingCapitalBalanceTimeSeriesTable

ACDOCA/ BSEG

A dataflow retrieves the data from “Net Working Capital Balance Time Series Union” and aggregates an interim result that is stored in the Net Working Capital Balance Time Series table. When you combine data from multiple areas, this may result in complex KPIs on top and may lead to serious performance issues, as live data from the inbound layer is processed to calculate the KPIs.

  • To prevent this, an interim result is stored and updated hourly via the Net Working Capital Persist Task Chain task chain (SAP_FI_TC_NetWorkingCapitalPersist).
  • Also updated by DF NetWorkingCapitalRolling reading from NWCRolling12MonTimeSeries (Append using Aggregation with MAX (YTD?))





Replace DF with Transformation Flow

VF3VF_NWCCubeNetWorkingCapitalBalanceTimeSeriesCube

ACDOCA/ BSEG

Just a projection (removing Amount in Group Currency?) on NetWorkingCapitalBalanceTimeSeriesTable

Add Grp Curr?


Payables / Receivables

 

 


VR3VR_OpsItemPrOperationalAcctDocItemProj

BSEG

Convert SQl to Graphical view (just restricting the fields read from OperationalAcctgDocItem)

SQL to Graphic View?
VR3VR_APItmBaseAPARLineItemBase

ACDOCA/ BSEG

Read JournalEntryItemOperationalView

Returns cleared vendor and customer items that are sales-related, for example, invoice and credit memo, and excludes the statistical items and items from recurring documents.

  • Restrict to Leading Ledger
  • Restrict to DocType (Debtor / Creditor)
  • Currency sign correction
  • Create parameter (key date). Includes those items that have been posted counting from the value of the input parameter and still not cleared at the point of Key Date.
SQL to Graphic View?
VR3VR_APARWRAPAROpenItemWRJ

ACDOCA/ BSEG

Reading from APARLineItemBase and restricting by joining on OperationalAcctDocItemProj to sales related, doc type <> V/P , Inv ref not Null

Selects open items with an invoice reference (payments)

When calculating arrears days for partial payment cases for base invoice items, the net due date of the reference item would be used instead of the net due date of the base item.

SQL to Graphic View?
VR3VR_APARNorjAPAROpenItemNORJ

ACDOCA/ BSEG

Reading from APARLineItemBase and restricting to doc type V/P, Inv ref is Null

Selects open items with no invoice reference (partial payments). The net due date of the base item is retrieved for further calculation.

SQL to Graphic View?
VR3VR_APARUnionAPARLineItemUnionACDOCA/ BSEGLinks AP/AR Open Item with the Reference Join (APAROpenItemWRJ) view and the AP/AR Open Item no Reference Join (APAROpenItemNORJ) view, which retrieves dimensions and amounts fields for both direct payment and partial payment cases of open items for further calculation.SQL to Graphic View?
VR3VR_APAROpenAPAROpenItem

Reading from APARLineItemUnion

  • derive currency role
  • calculates the days between the key date and net due date of open items and
  • expose the minus as “NetDueArrearsDays”
  • “ItemCategory” field is added according to “FinancialAccountType” to distinguish AP and AR items for the Working Capital Dashboard.

SQL to Graphic View?

Please dont use OIDs Anymore. Product and CostCenter are exceptions right now.

VF3VF_APAROpenCAPAROpenItemCACDOCA/ BSEG

Adding Associations




Days Sales Outstanding

 

 


VF3VF_DSOBaseDaysSalesOutStdgDrctBaseACDOCA/ BSEG

Reading from JournalEntryItemOperationalView

  • Restrict to Leading ledger, Sales related, Account Type = Debtor, DocCat <> null, exclude reversals
  • Create parameter for key date (posting and clearing dates)
  • Calculations for Clearing days, Net due days, clearing date minus 1 year as preceding year

SQL to Graphic View?

prior year?

VR3VF_DSOAggDaysSalesOutStdgDrctLineItemACDOCA/ BSEG

Nested select from DaysSalesOutStdgDrctBase (for calculations before group by?)

  • derive clearing year month and subsequent Year Month (2025-01 as 202501) - why not in previous layer?
  • add logic for currency roles

Why is it called line item when aggregated?

SQL to Graphic View?
VR3VF_DSOTS DaysSalesOutStdgDrctLineItemTmeSersACDOCA/ BSEG

Nested select from CalendarMonth with left outer join on DaysSalesOutStdgDrctLineItem

To perform if before aggregation?

SQL to Graphic View?

perform string on lower level?

VF3VF_DSOCube DSODrctLineItemACDOCA/ BSEGAdd associations


Days Payable Outstanding

 

 


VF3VF_DPOBaseDaysPyblOutStdgDrctBaseACDOCA/ BSEG

Reading from JournalEntryItemOperationalView

  • Restrict to Leading ledger, Sales related, Account Type = Creditor, DocCat <> null, exclude reversals
  • Create parameter for key date (posting and clearing dates)
  • Calculations for Clearing days, Net due days, clearing date minus 1 year as preceding year

SQL to Graphic View?

prior year?

VR3VF_DPOAggDaysPyblOutStdgDirectACDOCA/ BSEG

Nested select from DaysPyblOutStdgDrctBase (for calculations before group by?)

  • derive clearing year month and subsequent Year Month (2025-01 as 202501) - why not in previous layer?
  • add logic for currency roles

Why is it called line item when aggregated?

SQL to Graphic View?
VR3VF_DPOTS DaysPyblOutStdgDrctLineItemTmeSersACDOCA/ BSEG

Nested select from CalendarMonth with left outer join on DaysPyblOutStdgDrctLineItem

To perform if before aggregation?

SQL to Graphic View?

perform string on lower level?

VF3VF_DPOCube DPODrctLineItemACDOCA/ BSEGAdd associations


On Time Payments

 

 


VR3VR_OTPBaseOnTimePaymentRateBaseACDOCA/ BSEG

Reading from JournalEntryItemOperationalView, returns cleared vendor items

  • Restrict to Leading ledger, Sales related, Account Type = Creditor, DocCat <> null, exclude reversals
  • Create parameter for key date (posting and clearing dates) includes those items that have been cleared in the last 24 months counting from the value of the input parameter
  • Calculations for changing signs and counting - counts the number of invoice line items as InvoiceNumber and marks the invoice items by the date comparison of ClearingDate and NetDueDate. Invoice items whose ClearingDate before NetDueDate would be counted as OntimeInvoiceNumber while for items whose ClearingDate after NetDueDate would be counted as OverDueInvoiceNumber.

SQL to Graphic View?

Time range as 2 years

VR3VR_OTPAggOnTimePaymentRateSumACDOCA/ BSEG

Nested select from OnTimePaymentRateBase (for calculations before group by?)

  • add logic for currency roles
SQL to Graphic View?
VF3VF_OTPCube OnTimePaymentRateACDOCA/ BSEGAdd associations


Cash Discounts

 

 


VR3VR_DiscBase APCshDiscRealizedBaseACDOCA/ BSEG

Reading from OperationalAcctgDocItem

  • concat YearMonth (2025-01 as 202501)
  • correct signage (*-1)
  • Add parameter for key date (clearing)
  • Restrict to leading ledger, Creditors and cleared doc's (plus others)

SQL to Graphic View?

VR3VR_DiscCnv APCshDiscRealizedConvertACDOCA/ BSEG

Reading from APCshDiscRealizedBase, returns cleared vendor items

  • As there is no direct global currency amount for discount-related amount, transaction currency and transaction currency amount retrieved used here, and global currency is retrieved from the join with CompanyCodeCurrencyRole by company code and currency role for further currency transform. Other measures like "TakenCshDiscInTransacCrcy" and AmountInTransactionCurrency" can be directly retrieved from the invoice items
  • conversion type M and PostingDate as reference date
SQL to Graphic View?
VR3VR_DiscAgg APCshDiscRealizedACDOCA/ BSEG

Nested select from APCshDiscRealizedConvert (for calculations before group by?)

  • add logic for currency role
  • Add month
SQL to Graphic View?
VF3VF_DiscCubeAPCshDiscRealizedCACDOCA/ BSEGAdd associations


Assets 

Read from Acdoca/Bseg

  • restrict to asset account (SubLedAccLineItemType  = 07940 or between 07000 and 07209 or between 07900 and 0796
  • union the depreciation areas (I_FxdAstStatisticalLineItem)
  • consider including AssetBalanceWithTmpPlanVal (no data at present)


Reporting Layer

TypeCodeTech NameLogicFunctional Spec
MA4MA_PL_SemTag

4MA_R2RGLR_SemanticTags

ProfitLossSemanticTagKPIs

Currency handling: select single based on role

Quantity Conversion: 

Measures: 19 restricted by Semantic tags and simple calculations

Variables: FinStatemtVersion, Category, Date

1564

682

MA4MA_InventInventoryTimeSeries

Provides a balance and movements for the entire TB (not sure why called inventory) - includes semantic tags

Dimensions: a limited set - will have to review if adequate

Currency handling: select single based on role

Quantity Conversion: 

Measures: 19 restricted by Semantic tags and simple calculations

Variables: FinStatemtVersion, Category, Date


MA4MA_NWCNetWorkingCapitalTimeSeries

Read from NetWorkingCapitalBalanceTimeSeriesCube. The goal is to be able to calculate moving averages for specific KPI’s 

It combines data from different areas such as Cash, Accounts Receivables, Accounts Payables, and Inventory. 

When you combine data from multiple areas, this may result in complex KPIs on top and may lead to serious performance issues, as live data from the inbound layer is processed to calculate the KPIs. To prevent this, an interim result is stored and updated hourly via the Net Working Capital Persist Task Chain task chain


MA4MA_ARAPARAPOpenItem

It provides overdue payables/receivables, future payables/receivables, and total payables/receivables in the point of Key Date.

This analytical model distinguishes open items to overdue and future items by the comparison of posting date and net due date of open invoice items.


MA4MA_DSODSODrctLineItem

It provides per calendar month the measures DSO, Best Possible DSO and the DSO 12 months before. Days Sales Outstanding (DSO) is to measure the time elapsed between the completion of a sale and the collection of the revenue, that is, the time taken to process accounts receivable items.

This analytical model calculates DSO according to the direct calculation method. The direct calculation method is based on original documents.

The period of time between posting an invoice (posting date) and receiving the payment for the invoice (clearing date) is calculated for the relevant document line item to provide accurate results.


MA4MA_DPODPODrctLineItem

This model provides measures DPO and corresponding DPO 12 months before according to the direct calculation method.

Direct Days Payables Outstanding (DPO) is calculated based on the period of time between posting an invoice (posting date) and actual paying for the invoice (clearing date) along with the invoice amount.


MA4MA_CashBalCashBalanceTimeSeries

Provides cash balance with bank account on End of MonthDate.

The cash balance amount is represented by two currencies, that is, Company Code Currency and Global Currency.

Cash Balance also contains the transaction currency amount and bank information, as it can be drilled down by Transaction Currency and bank dimension.

Reconcile to I_CashFlowCube

more dmensions?
MA4MA_CashFrcstCashForecastBalncFlw

Consumption View for Forecast Cash Balance & Flow


MA4MA_CashWeekCashActualFlowByWeek

 Reads from view of the same name CashActualFlowByWeek


MA4MA_DiscAPAPCashDiscount

This model provides measures realized discount, lost discount, discounted spend, and discount realization rate, which is calculated based on the discount-related fields on invoice line items along with the invoice amount.


MA4MA_OnTimeOnTimePaymentRate

This model provides measures on-time payment rate from year to Key Date and its comparison rate of the whole last calendar year based on the date comparison between actual paying for the invoice (clearing date) and proposed payment date for the invoice (net due date) along with the invoice number count.


MA
Assets

This will either be Acdoca or Acdoca/Bseg base with depreciation areas and fixed asset master data

Logic to emulate I_AssetDepreciationBalanceCube with less parameters

293
MA4MA_InsInsurance

Corporate Insurance Management is a process managed by a central global insurance team which relies on data provided by each site with ongoing business operations for obtaining quotations of annual insurance premiums from third-party insurance providers for the subsequent premium cycle. Various forward-looking financial data need to be provided to the corporate insurance team by each site in annual intervals.

  • Fixed Assets

    • Equipments

      • Owned

      • Leased (excl. the ones that retire before the enxt premium cycle starts)

    • Buildings

      • Owned

      • Leased (excl. the ones that retire before the enxt premium cycle starts)

  • Peak Stock

    • Expected peak stock over the next premium cycle period.

  • Contribution Margin

    • Expected contribution over the next premium cycle period.

  • Project Costs

    • Expected CAPEX that become Fixed Assets within the next premium cycle period.

1321
MA4MA_RestRestructuring

SAC Planning model integrated with ProfitLossSemanticTag

  • Integration with Successfactors to pull employee-relevant data (e.g. Standard Costs, grading, actual leaving date, etc.)

  • Facilitate upload of external data (e.g. standard costs for non-SAP entities) via Excel upload interface or similar

  • Integration with S/4 HANA to pull prior-period actuals and to push final values back to S/4 HANA.

  • Data feeds from Group Reporting to facilitate reconciliation of financial plan figures

  • To include Site
1320
MA4MA_HSEHSE

SAC Planning model integrated with ProfitLossSemanticTag

  • Facilitate upload of external data (e.g. standard costs for non-SAP entities) via Excel upload interface or similar
  • Integration with S/4 HANA to pull prior-period actuals and to push final values back to S/4 HANA.

  • Data feeds from Group Reporting to facilitate reconciliation of financial plan figures

  • Net present value calculations for long-term HSE provisions based on interest rates maintained in the system

  • To include Site
1320
MA4MP_SKFSKF

SKF will be calculated in SAC and retracted to both S/4 systems based on company code.

1843
MA4MP_TaxTax

Ability to plan for tax and post results into S/4 as journal entries


4MA_R2RGLR_SemanticTags

Supports:

Includes technical details for:

Calculated Measures (Post Aggregation Calculations / exception aggregation etc)

Report Field DescriptionSAP Table-Field Name / processComments / Calculation / Formula / Restriction dimensions and valuesAggregation of dataExample SAP field data

Inverted amount

Amount In Global Currency * -1


Calculated


Amortization of Intangible Asset

Inverted amount when Semantic Tag = 'AMORINASST'


Restricted


COGS

Inverted amount when Semantic Tag = 'RECO_COS'


Restricted


Depreciation of Tangible Assets

Inverted amount when Semantic Tag = 'DPRTASSET'


Restricted


Gross Revenue

Inverted amount when Semantic Tag = 'GROSS_REV'


Restricted


Income Tax

Inverted amount when Semantic Tag = 'INCOMETAX'


Restricted


Net Income

Inverted amount when Semantic Tag = 'PL_RESULT'


Restricted


Net Revenue

Inverted amount when Semantic Tag = 'RECO_REV'


Restricted


Employee Expense

Amount in Global Currency when Semantic Tag = 'EMPLEXP'


Restricted


Operating Expense

Inverted amount when Semantic Tag = 'OPEREXP'


Restricted


Recognized Revenue

Inverted amount when Semantic Tag = 'RECO_REV'


Restricted


Gross Profit

Recognized Revenue + COGS


Calculated


Gross Margin

(Gross Profit / Recognized Revenue) * 100


Calculated


Total Operating Expense

COGS + Operating Expense


Calculated


Operating Profit

Recognized Revenue + Total Operating Expense


Calculated




Restricted Measures

tbd

Currency Conversions

tbd

Variables

FieldRequired/OptionalScopeDefaultComment
Periods (Weeks / Months / Quarters)OptionalInterval (Date or Fiscal Period)Default = last xxxxxApplied using CreationDate or CreationDateTime


Data access controls


4MA_R2RGLR_Account Balance & Movements

Supports:

Calculated Measures (Post Aggregation Calculations / exception aggregation etc)

Report Field DescriptionSAP Table-Field Name / processComments / Calculation / Formula / Restriction dimensions and valuesAggregation of dataExample SAP field data

Amount in Currency Role Currency (AmountInCurrencyRoleCurrency)

Source measure for every measure described here. This measure distinguishes between Amount in Global Currency and Amount in Company Code Currency.




Capital Employed (CapitalEmployed)

TotalAssets-CurrentLiabilities




Cash Asset Ratio (CashAssetRatio)

Liquidity/CurrentLiabilities based on semantic tag 'CSH_CSHEQV' and 'CURLIABEQU'.




Cash Asset Ratio Last (CashAssetRatioLast)

CashAssetRatio with exception aggregation LAST




Cost Of Sales (CostOfSalesAmount)

Shows SemanticTag = 'RECO_COS' assigned movements within a month. UnionBranch = ‘SEMTAG’.




Current Liabilities – LAST (CurrentLiabilities)

Displays SemanticTag = 'CURLIABEQU' assigned balances cumulated on month level with exception aggregation LAST. UnionBranch = ‘SEMTAGBAL’.




EBIT (EBIT)

NetIncomeAmount-(IncomeTax+Interest)




Income Tax (IncomeTax)

Displays SemanticTag = 'INCOMETAX' assigned movements within a month. UnionBranch = ‘SEMTAG’.




Interest (Interest)

Displays SemanticTag = 'INTEREST' assigned movements within a month. UnionBranch = ‘SEMTAG’.




Liquidity – LAST (Liquidity)

Displays SemanticTag = 'CSH_CSHEQV' assigned balances cumulated on month level with exception aggregation LAST. UnionBranch = ‘SEMTAGBAL’.




Marketable Securities – LAST (MarketableSecuritiesAmount)

Displays SemanticTag = 'MARK_SEC' assigned balances cumulated on month level with exception aggregation LAST. UnionBranch = ‘SEMTAGBAL’.




Net Income (NetIncomeAmount)

Displays SemanticTag = 'PL_RESULT' assigned movements within a month. UnionBranch = ‘SEMTAG’.




Number Of Days In Month (NumberOfDaysInMonth)

Displays the number of days of every month based on Time Series Date that provides the end date of a month.




Numbers Of Days In Month Max (NumbersOfDaysInMonthMax)

MAximum Number of Days In Month to provide the number of days of the selected time range.




Quick Ratio (QuickRatio)

TotalLiquidityLast/CurrentLiabilities




ROCE (ROCE)

Refers to a financial ratio that assesses the profitability and capital efficiency of a company by dividing EBIT by Capital Employed. Capital Employed = Total Assets - Current Liabilities, which are based on Semantic Tag 'ASSET' and 'CURLIABEQU'.

Formula: EBIT/CapitalEmployed




ROCE Last (ROCELast)

LAST of ROCE




Total Assets – LAST (TotalAssets)

Shows SemanticTag = 'ASSET' assigned balances cumulated on a monthly basis with exception aggregation LAST. UnionBranch = ‘SEMTAGBAL’.




Total Inventory (TotalInventory)

Displays data assigned with TransactionTypeDetermination = 'BSX' cumulated on a monthly basis. UnionBranch = ‘BALANCE’.




Total Inventory Average (TotalInventoryAverage)

Average of Total Inventory based on Time Series Date that provides the end date of a month.




Total Liquidity (TotalLiquidity)

Displays your Total Liquidity based on 'Cash and Cash Equivalence' (Semantic Tag 'CSH_CSHEQV'), 'Marketable Securities' (Semantic Tag 'MARK_SEC'), and 'Accounts Receivables'. Accounts Receivables includes all open invoices up to the current month (Financial Account Type = 'D' and isOpen = 'X').

Formula: SemanticTag = 'CSH_CSHEQV' or ( SemanticTag = 'ACCREC2') or SemanticTag = 'MARK_SEC'.




Total Liquidity Last (TotalLiquidityLast)

Displays Total Liquidity balances cumulated on a monthly basis with exception aggregation LAST.




4MA_R2RGLR_APAROpenItems

Supports:

Includes technical details for:

Calculated Measures (Post Aggregation Calculations / exception aggregation etc)

Report Field DescriptionSAP Table-Field Name / processComments / Calculation / Formula / Restriction dimensions and valuesAggregation of dataExample SAP field data
Amount
Currency derived using currency rolesSUM1


4MA_R2RGLR_APCashDiscount

Supports:

Includes technical details for:

Calculated Measures (Post Aggregation Calculations / exception aggregation etc)

Report Field DescriptionSAP Table-Field Name / processComments / Calculation / Formula / Restriction dimensions and valuesAggregation of dataExample SAP field data
Discount realisation rate

SUM1
On time payment rate

OntimeInvoiceNumber / InvoiceNumber



Overdue payment rate

OverDueInvoiceNumber / InvoiceNumber





4MA_R2RGLR_Depreciation

Supports:

Includes technical details for:

Calculated Measures (Post Aggregation Calculations / exception aggregation etc)

Report Field DescriptionSAP Table-Field Name / processComments / Calculation / Formula / Restriction dimensions and valuesAggregation of dataExample SAP field data



SUM1


4MA_R2RGR_GrpJrnlMtrxElm

Supports:

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.

Dimensions (significant only) 

Assume that Semantic Tags cannot be used 

Attribute for discontinued ops?

DimensionDesignVariableParameter
Consol COA
Mandtory
Consol Group
Mandtory
Version
Mandtory
FYPeriod
Mandtory
PrfctHier

Mandtory
SegmentHier

Mandtory
UnitHier

Mandtory
Key date

Mandtory
Ref Date

Mandtory
Seg for Elim0

Segment1

Proft Centre elim2

Profit Centre3

Consol Unit4

FinStatItem5

Doc Type6

SubItem7

Elim Member8

Supplier9

Cost Centre10

Cont Area11

Missing: Asset

Calculated Measures (Post Aggregation Calculations / exception aggregation etc)

Consider using a structure for Current and Prior, movement(variance)

Report Field DescriptionSAP Table-Field Name / processComments / Calculation / Formula / Restriction dimensions and valuesAggregation of dataExample SAP field data

Transaction Amount



SUM

Company Amount



SUM

Group Amount



SUM

Quantity



SUM


Outbound Layer