Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

Document Links

Jira
serverSyensqo's Jira
columnIdsissuekey,summary,issuetype,created,updated,duedate,assignee,reporter,priority,status,resolution
columnskey,summary,type,created,updated,due,assignee,reporter,priority,status,resolution
maximumIssues20
jqlQuerykey in (ERP-1044,ERP-1038)
serverIdd8efc1ef-48bd-3b4e-8714-ad827f4f059b

Introduction

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

Sub areaData flowDriverPurposeNotesJira
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 than 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, PlanTaxIncld Headcount, Plan

Jira
serverSyensqo's Jira
serverIdd8efc1ef-48bd-3b4e-8714-ad827f4f059b
keyERP-682

Jira
serverSyensqo's Jira
serverIdd8efc1ef-48bd-3b4e-8714-ad827f4f059b
keyERP-1564

Net Working CapitalBSEG

The Operation Accounting Document item view provides details of an

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  The long-term vision is that table BSEG will be used only for open item management 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 Showing all depreciation areas
  • Consider the index to revalue too
  • Ideally including Leases
  • Impairments is potentially a step too far
There is no business content for this

Jira
serverSyensqo's Jira
serverIdd8efc1ef-48bd-3b4e-8714-ad827f4f059b
keyERP-293

Statistical 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.

There is no business content for this

Jira
serverSyensqo's Jira
serverIdd8efc1ef-48bd-3b4e-8714-ad827f4f059b
keyERP-1843

Group ReportingACDOCU

There is new improved business content for matrix elimination in group reporting that we will use. Significantly it is now periodic rather than year to date.

Cash flow is difficult to replicate into DSP and not included in the business content. As all the data is in a single system, the starting point will be to use SAC LIVE reporting on S/4.

There are currently around 30 schedules required. 

They run quarterly, projecting the 3rd Quarter forwards to predict the year end picture.

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/uACDOCA/U (where data is in ACDOCA, eg nothing for China)
  • The global Potentially the global currency value will be translated at a different rate, this will be explained by the currency revaluation
  • Previously they used YTD but now will have periodic, this should simplify many of the prior reconciliation issues
Planning is not included in this model - need to add if required
Restructuring ProvisionsPlan

The workforce is analysed to consider any possible restructuring and create financial provisions.

  • Payroll data is
required to cater for workforce restructuring planning every quarter
  • required 
  • Four
(4
  • forms in total, similar in nature just different aggregation levels
)

Jira
serverSyensqo's Jira
serverIdd8efc1ef-48bd-3b4e-8714-ad827f4f059b
keyERP-1320

HSE ProvisionsPlan

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


Jira
serverSyensqo's Jira
serverIdd8efc1ef-48bd-3b4e-8714-ad827f4f059b
keyERP-1320

Insurance Plan

Insurance is provided for the group centrally. Each site needs to provide a valuation for assets (including stock) and potential loss of income.


Jira
serverSyensqo's Jira
serverIdd8efc1ef-48bd-3b4e-8714-ad827f4f059b
keyERP-1321

Insurance PlanData regarding assets is required to cater for insurance planning every year

TaxTax

Ability to plan tax changes and create journals to be posted in S/4 as provisions.


Jira
serverSyensqo's Jira
serverIdd8efc1ef-48bd-3b4e-8714-ad827f4f059b
keyERP-1764

Stock valuationStock

Stock values including future prices. Join MATDOC to MBEW to ensure that you get a

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:

  • Performance on aggregated data is better
  • Some KPI's must be calculated pre aggregation eg price x quantity

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

...

Table of Contents
maxLevel2
indent5
absoluteUrltrue
excludeIntroduction|Source System Extractors

Source System Extractors

...

S/4 x

...

ACDOCA

...

I_GLACCOUNTLINEITEMRAWDATA

...

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

Includes Balances Brought Forward (000)

...

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

...

There is no business content for this

Gaps

ItemDetailStatus
PlanningPlanning for maintenance and production orders may be in ACDOCP. These are not R2R requirementsOpen
Missing requirementStock valuation requirements.Open
Headcount dataHeadcount is shown but as a ghost as not in scope at present. Assuming will be covered in B2F where the seed data should be actuals.Open
Kinaxis integrationKinaxis Long Term plan has not been designed as expected to be covered in the B2F POD.Open
Bridges

Opening, closing balance and difference. Assume this logic is possible in models based on 3VR_OpsItemTS.

There is a CDS called C_GLAccountBalance_F0707A This is implemented via a class (predecessor was C_CN_GLAccountBalanceSumQuery).

Open
Functional Area Semantic Tag

No requirement as yet for this model. It is not included in SAP business content. The model is very similar to the Profit Centre model.

Open
Cashflow in GR

As this is a difficult area to recreate, it is envisaged that a plausible solution would be to run this using a LIVE model in SAC without DSP.

Open
Group Reporting data incomplete

Planning functionality may be required for parameters and data not available in S/4.

Open
Drill through in GR

Currently we do not believe this is plausible as data is captured from China using the data collector.

Open
Reuse of KPI

In a perfect world, we would create a KPI once and share it, to ensure consistency. If we stack models this will work, but this is probably not feasible in all cases

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

  • Performance on aggregated data is better
  • Some KPI's must be calculated pre aggregation eg price x quantity
Open

Commentary

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

Open

Leases

Real Estate is being used for Leases but there are no requirements as yet outside of what is included within ACDOCA.

Open
Actual Cash Flow

A very restricted set of dimensions, consider expanding this based on business needs (eg customer and vendor)

Open
Fixed Assets
  • Consider the index to revalue too
  • Understood to be including Leases
  • Impairments assumed to be performed at an aggregated level rather than per asset.
Open

Data Flow Diagram

draw.io Diagram
bordertrue
diagramNameDDFS-R2RGLR
simpleViewerfalse
width
linksauto
tbstyletop
lboxtrue
diagramWidth2721
height923
revision84

Table of Contents
maxLevel2
indent5
absoluteUrltrue
excludeDocument Links|Gaps|Introduction|Data Flow Diagram|Source System Extractors


Orange font implies a change from SAP standard business content

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). This is implemented in 2VR_GLAccItmV1

Includes Balances Brought Forward (000)

YContinuous
Yes
S/4 xBSEGI_OPERATIONALACCTGDOCITEMOpen Item management
Continuous

S/4 xFQMFLOWAI_CASHLIQUIDITYACTUALFLOWCash liquidity actual flow for working capital inventory. YContinuous

S/4 xFQMFLOWFI_CASHLIQUIDITYFORECASTFLOWSame source as actual flowsYContinuous

S/4 xDEPR

I_FXDASTSTATISTICALLINEITEM

Statistical Depreciation areas - 

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

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




TBC


S/4 xFINSSKF

 I_FINSTATISTICALKEYFIGITEMBSC

Statistical Key FiguresY


S/4ACDOCU

I_CNSLDTNGROUPJRNLENTRITMDEX

Matrix consolidationYContinuous
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 NameLogicPartitioning
1TL_ACDOCA

1TL_S4Hx_I_GLACCOUNTLINEITEMRAWDATA

Retain all 402 fields even though SAP Business Content has 60 fields less. As the BCT is based on SAP 2023

Fiscal Year 

1TL_BSEG

1TL_S4Hx_I_OPERATIONALACCTGDOCITEM

Adds flag for cleared, based on date


1TL_CashA

1TL_S4Hx_I_CASHLIQUIDITYACTUALFLOW

Cash Actual Flow

Lower levels of the CDS have more dimensions (see gaps)


1TL_CashF

1TL_S4Hx_I_CASHLIQUIDITYFORECASTFLOW

Cash Forecast Flow


1TL_Depr

1TL_S4Hx_I_FXDASTSTATISTICALLINEITEM

Depreciation Areas


1TL_SKF

1TL_S4Hx_I_FINSTATISTICALKEYFIGITEMBSC

Statistical Key Figures


1TL_ConsolDEX

1TL_S4Hx_I_CNSLDTNGROUPJRNLENTRITMDEX

Consolidation



...

Harmonisation Layer

  • Both transaction data or master data that is not tier

...

I_CNSLDTNGROUPJRNLENTRITMDEX

...

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.

...

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

...

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

Fiscal Year = I guess can be specified

...

1TL_S4HR_I_OperationalAcctgDocItem

...

Adds flag for cleared, based on date

...

1TL_S4HR_I_CashLiquidityActualFlow

...

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

...

1TL_S4HR_I_CashLiquidityForecastFlow

...

1TL_S4HR_I_FxdAstStatisticalLineItem

...

I_CnsldtnGroupJrnlEntrItmDex

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:

  • Create a remote table from CDS View I_SemTagGLAccount of the connected SAP S/4HANA system and replicate the data.

  • Create a dataflow to populate the local table SAP_FI_IL_I_SemTagGLAccount from the remote table. (For SAP S/4HANA Cloud sources a conversion from Date to String Datatype is needed in the dataflow.)

or

  • Replace the local table SAP_FI_IL_I_SemTagGLAccount with the remote table in the inbound layer view SAP_FI_IL_ SemTagGLAccount.

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

...

  • 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

...

  • .
  • While it is very tempting to remove fields that are not required by Syensqo, we will keep them in the models. As we are converting the SQL views to Graphical views, the optimiser will exclude them. Examples here being industry solution specific such as Public Sector. However, SAP do remove deprecated fields such as Material which is now replaced with Product.

2TL_ACDOCA - 2TL_S4HARM_I_GLAccountLineItemRawData

Purpose:

Persist after union the 2 datasources into a single table for performance to avoid the runtime union.

Source / Union:

1TL_S4HR_I_GLAccountLineItemRawDataGLACCOUNTLINEITEMRAWDATA

1TL_S4HC_I_GLAccountLineItemRawDataGLACCOUNTLINEITEMRAWDATA

Filter:

Potentially consider (purely for performance)

    • remove additional amount/quantity fields as we cannot use these (wanting to persist in this state to improve performance)

Formula:

Potentially consider (purely for performance)

    • perform any calculations likes tonnes conversion storing the results
    • conversion to budget group currency (appears they want to convert the other way around, comparing to prior year)

Key:

Key:

Ledger, CompanyCode, Ledger, CompanyCode, SourceLedger

Partitions:

Ledger, FiscalYear

Comments:

Set as Delta Capture

2VR_GLAccItm - 2VR_

...

S4HARM_GLAccountLineItem

Purpose:

Casting dates and add the statistical derivations from the next level

Source:

2TL_HARMS4HARM_I_GLAccountLineItemRawData

...

Formula:

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

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

...

Changing name to replicate the corresponding CDS in S/4.

2VR_LeadLed - 2VR_

...

S4HARM_

...

GLAccountLineItemLeadingLedger

Purpose:

...

Restrict to Leading Ledger.

This should be the object that is shared with other PODs for reporting.

Source:

 I2VR_S4HARM_LedgerCompanyCodeCrcyRoles  GLAccountLineItem

I_LedgerSourceLedger_FI_Ledger

Filter:

FI_Ledger  - IsLeadingLedger = 'X'

Projection:

FI_Ledger  - Ledger 

Join:

[Many.....Many1] 2VR_HARM_CoCodeLedgerSourceLedger as 2VR_HARM_LedgerCompanyCodeCrcyRoles  LEFT JOIN  2VR_HARM__LedgerSourceLedger on Ledger S4HARM_GLAccountLineItem V1 INNER JOIN I_FI_Ledger on SourceLedger = Ledger

Projection:

Remove repeated Ledger

...

Formula:

Derivations applied at lower level, so not required here


2VR_

...

S4HARM_CoCodeLedgerSourceLedger 

Purpose:

To provide all the ledgers available to a company codeThis has the effect of exploding the rows to ensure that all ledgers are created for every source ledgercurrency roles and Company Code Assignment of Ledgers.

Source:

2VR I_HARM_GLAccountLineItemLedgerCompanyCodeCrcyRoles 

2VR_HARM_CoCodeLedgerSourceLedger 

...

I_LedgerSourceLedger

Join:

[Many.....Many]2VR_S4HARM_CoCodeLedgerSourceLedger as 2VR_HARMS4HARM_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:

...

LedgerCompanyCodeCrcyRoles  LEFT JOIN  2VR_S4HARM__LedgerSourceLedger on Ledger = Ledger

Projection:

Remove repeated Ledger

Comments:

Not shown in diagram (hence no alias) as this is master data

2VR_GLAccItmV1 - 2VR_S4HARM_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_HARMS4HARM_GLAccountLineItem V1

I2VR_FIS4HARM_Ledger

Filter:

FI_Ledger  - IsLeadingLedger = 'X'

Projection:

FI_Ledger  - Ledger 

CoCodeLedgerSourceLedger 

Join:

[Many.....1Many] 2VR_HARMS4HARM_GLAccountLineItem V1 INNER JOINI_FI_LedgerJOIN I_LedgerCompanyCodeCrcyRoles 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

SourceLedger, CompanyCode = CompanyCode

Comments:

SAP incorrectly defined as semantic type FACT

2TL_BSEG - 2TL_

...

S4HARM_I_OperationalAcctgDocItem

Purpose:

Persist after union for performance  the 2 datasources into a single table for performance to avoid the runtime union.

Source / Union:

1TL_S4HR_I_OperationalAcctgDocItem

1TL_S4HC_I_OperationalAcctgDocItem

Filter:

...

Key:

CompanyCode, AccountingDocument, FiscalYear, AccountingDocumentItem

Partitions:

FiscalYear

Comments:

Set as Delta Capture

2VR_OpsItm - 2VR_

...

S4HARM_I_OperationalAcctgDocItem

Purpose:

Casting dates and adding cleared flag

Source:

2TL_HARMS4HARM_I_OperationalAcctgDocItem

...

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

...

the relevance to the solution.

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_

...

S4HARM_I_CashLiquidityActualFlow

Purpose:

Persist after union the 2 datasources into a single table for performance to avoid the runtime union.

Source / Union:

1TL_S4HR_I_CashLiquidityActualFlow

1TL_S4HC_I_CashLiquidityActualFlow

...

Formula:

Comments:

Delta capture not required.

2VR_CashA -  2VR_

...

S4HARM_I_CashFlowActualItem

Purpose:

Cast dates , restrict fields and apply a filterand add fields.

Source:

2TL_HARMS4HARM_I_CashLiquidityActualFlow

Filter:

BankAccountInternalID <> ''  AND BankAccountInternalID <> '0000000000'

Projection:

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

Formula:

Cast TO_DATE for ( TransactionDate and PostingDate)

Comments:

Convert to Graphical

alias - full

Purpose:

Source:

Filter:

Join:

Formula:

Comments:

...

 

...

 

...

 

...

Read from CashLiquidityActualFlow 

  • adding fields that dont get populated)
  • Amend to include the previous layer (casting date)

...

Convert SQL to graphical?

Combine inbound layer (CashLiquidityActualFlow)

Adding ControllingArea, ProfitCentre,Segment, Customer, Supplier as NULL (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_S4HARM_I_CashLiquidityActualFlow

Purpose:

Cast dates and restrict to bank related.

Source:

2TL_S4HARM_I_CashLiquidityActualFlow

Filter:

BankAccountInternalID  <> ''  AND BankAccountInternalID <> '0000000000'    

Formula:

Cast TO_DATE for ( TransactionDate and PostingDate)

Comments:

Convert to Graphical

2TL_CashF -  2TL_S4HARM_I_CashLiquidityForecastFlow

Purpose:

Persist the 2 datasources into a single table for performance to avoid the runtime union.

Source / Union:

1TL_S4HR_I_CASHLIQUIDITYFORECASTFLOW

1TL_S4HC_I_CASHLIQUIDITYFORECASTFLOW

Comments:

Delta capture not required.

2VR_CashF -  2VR_S4HARM_I_CashLiquidityForecastFlow

Purpose:

Casting dates and filtering for bank related.

Filter:

BankAccountInternalID  <> ''  AND BankAccountInternalID <> '0000000000'    

Formula:

Cast TO_DATE for ( TransactionDate and PostingDate)

Comments:

Convert to Graphical combining the 2 views

...

2TL_SKF -  2TL_S4HARM_I_FinStatisticalKeyFigItemBsc

Purpose:

Persist the 2 datasources into a single table for performance to avoid the runtime union.

Source:

1TL_S4HR_I_FinStatisticalKeyFigItemBsc

1TL_S4HC_I_FinStatisticalKeyFigItemBsc

2VR_SKF -  2VR_S4HARM_I_FinStatisticalKeyFigItemBsc

Purpose:

Cast dates and remove deprecated fields.

Source:

2TL_S4HARM_I_FinStatisticalKeyFigItemBsc

Projection:

Remove deprecated fields (WBS and Project)

Formula:

TO_DATE (ValidityStartDate)

...

2TL_Depr -  2TL_S4HARM_I_FxdAstStatisticalLineItem

Purpose:

Persist the 2 datasources into a single table for performance to avoid the runtime union.

Source:

1TL_S4HR_I_FxdAstStatisticalLineItem

1TL_S4HC_I_FxdAstStatisticalLineItem

2VR_Depr -  2VR_S4HARM_I_FxdAstStatisticalLineItem

Purpose:

Cast dates and remove deprecated fields.

Source:

2TL_S4HARM_I_FxdAstStatisticalLineItem

Projection:

Remove fields not required (eg additional currencies that Syensqo do not intend to use).

Formula:

TO_DATE (ValidityStartDate)



...

2VR_GrpJnlItm -  2VR_S4HARM_GroupJournalEntryItem

Purpose:

Casting fields

Source:

1TL_S4HR_I_CNSLDTNGROUPJRNLENTRITMDEX 

Formula:

TO_DECIMAL(AmountInTransactionCurrency,23,2)

TO_DECIMAL(AmountInLocalCurrency,23,2)

TO_DECIMAL(AmountInGroupCurrency,23,2)

TO_DATE(CreationDate)

Comments:

Relational semantic type.









...

Propagation Layer


SKF

Purpose:

Enrich with accounting principle

Source:

I_AccountingPrincipleAssgmt

3VR_AcPlSemTag - ActlPlnJournalEntryItemSemTag

Purpose:


Source:


Join:

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

Filter:

Formula:


Comments:

Remove redundant measures

Can we reduce initial projection?

Need to add headcount somewhere, maybe here?

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:

    • Create a remote table from CDS View I_SemTagGLAccount of the connected SAP S/4HANA system and replicate the data.

    • Create a dataflow to populate the local table SAP_FI_IL_I_SemTagGLAccount from the remote table. (For SAP S/4HANA Cloud sources a conversion from Date to String Datatype is needed in the dataflow.)

or

    • Replace the local table SAP_FI_IL_I_SemTagGLAccount with the remote table in the inbound layer view SAP_FI_IL_ SemTagGLAccount.

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.



3VR_VersMap -  3VR_SPOD_R2RGLR_VersionMapping

Purpose:

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

Relating to statistical postings and adjustments in Local Currency, not envisaged as being used in our scenario

Source:

2VR_S4HARM_GroupJournalEntryItem

Union / Join:

2VR_S4HARM_GroupJournalEntryItem

          INNER JOIN ConsVersRelation on ConsolidationVersionElement = ConsolidationVersionElement

          INNER JOIN ConsVers on ConsolidationVersion = ConsolidationVersion and GroupCurrency = GroupCurrency 

UNION ALL

2VR_S4HARM_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

Switch to graphical view

3VR_GrpJnlEntry -  3VR_SPOD_R2RGLR_GroupJournalEntryItem1

Purpose:

Union with same source


Source:

2VR_S4HARM_VersionMapping

Union / Join:

2VR_S4HARM_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 (two-sided elimination entries)

                 Replacing the ConsolidationGroup from the joined table

UNION ALL

2VR_S4HARM_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_S4HARM_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 (two-sided elimination entries)  AND RecordType = 0, A, D or E

UNION ALL

2VR_S4HARM_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

  • For Group Journal Entry Items with two-sided elimination entries, the consolidation unit and partner consolidation unit need to be assessed along a given consolidation hierarchy on which node in the hierarchy they meet. Above this hierarchy node, the posting needs to be eliminated. Therefore, the posting gets assigned to an elimination member on this hierarchy node.

  • For all other Group Journal Entry Items, the elimination member information should be still available to allow showing all postings along one common hierarchy in a report. In this case the elimination member is just to be filled with the consolidation unit if the consolidation unit exists for the chosen consolidation unit hierarchy.




...

2VR_HARM_I_CashLiquidityActualFlow

...

Read from CashLiquidityActualFlow 

Restrict where BankIntID not NULL

...

Convert SQL to graphical?

Combine inbound layer

...

2TL_HARM_I_CashLiquidityForecastFlow

...

Persist after union for performance

...

 

...

2VR_HARM_I_CashLiquidityForecastFlow

...

Restrict where BankIntID not NULL

Amend to include the previous layer (casting date)

...

Convert SQL to graphical?

Combine inbound layer

Propagation Layer

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

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

Can we reduce initial projection?

Need to add headcount somewhere, maybe here?
TypeCodeTech NameRootLogicPotential Changes


Headcount





2VR_ActPlnItm
ACDOCA/ PLAN

2VF_HARMS4HARM_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


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)

...