offdataai
SAP · data model template

SAP Finance FI/CO EDW data model

Data Vault 2.0 raw vault for SAP Finance: hubs (gl_account/cost_center/profit_center/accounting_document/company_code), transactional posting links (G/L posting with dmbtr/wrbtr, cost-center posting) plus a cost-center-to-company link, and satellites for SKA1/SKB1, CSKS, CEPC, BKPF, T001 with a G/L-account effectivity satellite. Hash keys and DV metadata are generated by the DDL layer.

SAP FI/CO financial accounting and controlling modeled as a Data Vault 2.0 raw vault: G/L account, cost center, profit center, accounting document, and company-code hubs anchored on SAP business keys (saknr, kostl, prctr, belnr+bukrs+gjahr, bukrs); transactional G/L and cost-center posting links carrying amounts (dmbtr/wrbtr); and satellites mirroring SKA1/SKB1, CSKS, CEPC, BKPF, and T001. Built for SOX/IFRS audit lineage and multi-source financial consolidation. It is a Data Vault 2.0 raw vault: hubs for business keys, links for relationships and satellites for descriptive history, with hash keys and hash diffs generated in the DDL.

Data Vault 2.0SAPSOXIFRSGDPR
14
tables
95
columns
14
relationships
3
PII columns

Opening the template creates a project with the ERD, platform-native DDL, a dbt project and documentation already generated (recommended platform: Snowflake). Edit it in plain English or on the canvas, then ship it to any supported warehouse.

Subject areas

hubslinkssatellites

Design decisions

  • Hubs anchor on stable SAP finance business keys

    SAP financial keys (saknr, kostl, prctr, belnr+bukrs+gjahr) are stable and shared across FI/CO modules, so hubs built on them let postings and master data from multiple SAP and non-SAP ledgers integrate by business key.

  • Composite business key for accounting documents

    A BKPF document number is only unique within a company code and fiscal year, so the accounting-document hub uses the composite belnr+bukrs+gjahr business key to guarantee a stable, collision-free hash.

  • Non-historized link for G/L line postings

    G/L line items are immutable posting events; modeling them as a non-historized link carrying dmbtr/wrbtr directly avoids a satellite and keeps the financial ledger insert-only and auditable.

  • Effectivity satellite on G/L account status

    Account posting blocks and deletion flags change over time; an effectivity satellite records the valid period of each status for as-of period-close reporting.

  • Auditability drives DV for SAP finance

    load_date + record_source on every row provide a queryable SOX/IFRS audit trail for the financial ledger without scraping change-document logs.

Tables in the SAP Finance FI/CO EDW model

Every table with its grain, columns, types and keys. PK marks a primary key, BK a business key and PII a column classified as personal data, which gets a masking strategy by default.

Hubs (5)

hub_gl_account

Grain: one row per unique hub_gl_account business key

SAP G/L account business key (SKA1.SAKNR).

ColumnTypeKeys
saknrvarcharBK
load_datetimestamp
record_sourcevarchar

hub_cost_center

Grain: one row per unique hub_cost_center business key

SAP cost center business key (CSKS.KOSTL).

ColumnTypeKeys
kostlvarcharBK
load_datetimestamp
record_sourcevarchar

hub_profit_center

Grain: one row per unique hub_profit_center business key

SAP profit center business key (CEPC.PRCTR).

ColumnTypeKeys
prctrvarcharBK
load_datetimestamp
record_sourcevarchar

hub_accounting_document

Grain: one row per unique hub_accounting_document business key

SAP accounting document business key (BKPF.BELNR+BUKRS+GJAHR).

ColumnTypeKeys
belnrvarcharBK
bukrsvarcharBK
gjahrvarcharBK
load_datetimestamp
record_sourcevarchar

hub_company_code

Grain: one row per unique hub_company_code business key

SAP company code business key (T001.BUKRS).

ColumnTypeKeys
bukrsvarcharBK
load_datetimestamp
record_sourcevarchar

Links (3)

lnk_gl_posting

Grain: one row per G/L line posting (non-historized transactional link)

Transactional link — SAP G/L line item postings (BSEG) carrying amounts.

ColumnTypeKeys
accounting_document_hkbinary
gl_account_hkbinary
company_code_hkbinary
buzeivarcharBK
shkzgvarchar
dmbtrdecimal
wrbtrdecimal
waersvarchar
load_datetimestamp
record_sourcevarchar

lnk_cost_center_posting

Grain: one row per cost center line posting (non-historized transactional link)

Transactional link — controlling cost center postings (COEP) carrying amounts.

ColumnTypeKeys
cost_center_hkbinary
gl_account_hkbinary
accounting_document_hkbinary
buzeivarcharBK
wkgbtrdecimal
kwaervarchar
load_datetimestamp
record_sourcevarchar

lnk_cost_center_company

Grain: one row per lnk_cost_center_company relationship

Which company code a cost center is assigned to (CSKS).

ColumnTypeKeys
cost_center_hkbinary
company_code_hkbinary
load_datetimestamp
record_sourcevarchar

Satellites (6)

sat_gl_account_master

Grain: one row per gl_account_hk per change

G/L account master satellite (SKA1 / SKB1 / SKAT).

ColumnTypeKeys
gl_account_hkbinaryPK
load_datetimestampPK
txt50varchar
ktoksvarchar
xbilkboolean
gvtypvarchar
mwskzvarchar
waersvarchar
load_end_datetimestamp
record_sourcevarchar

sat_cost_center_master

Grain: one row per cost_center_hk per change

Cost center master satellite (CSKS / CSKT).

ColumnTypeKeys
cost_center_hkbinaryPK
load_datetimestampPK
ktextvarchar
verakvarcharPII
kosarvarchar
kokrsvarchar
datbidate
load_end_datetimestamp
record_sourcevarchar

sat_profit_center_master

Grain: one row per profit_center_hk per change

Profit center master satellite (CEPC / CEPCT).

ColumnTypeKeys
profit_center_hkbinaryPK
load_datetimestampPK
ktextvarchar
verakvarcharPII
kokrsvarchar
segmentvarchar
load_end_datetimestamp
record_sourcevarchar

sat_accounting_doc_header

Grain: one row per accounting_document_hk per change

Accounting document header satellite (BKPF).

ColumnTypeKeys
accounting_document_hkbinaryPK
load_datetimestampPK
blartvarchar
budatdate
bldatdate
monatvarchar
waersvarchar
usnamvarcharPII
xreversalvarchar
load_end_datetimestamp
record_sourcevarchar

sat_gl_account_status

Grain: one row per G/L account per status effectivity change

Effectivity satellite — G/L account blocking/deletion status over time.

ColumnTypeKeys
gl_account_hkbinaryPK
load_datetimestampPK
blocking_statusvarchar
mark_for_deletionboolean
effective_fromdate
effective_todate
is_activeboolean
load_end_datetimestamp
record_sourcevarchar

sat_company_code_master

Grain: one row per company_code_hk per change

Company code master satellite (T001).

ColumnTypeKeys
company_code_hkbinaryPK
load_datetimestampPK
butxtvarchar
land1varchar
waersvarchar
ktoplvarchar
perivvarchar
load_end_datetimestamp
record_sourcevarchar

Relationships

Each relationship is a foreign key on the first table referencing the second.

  • lnk_gl_posting.accounting_document_hk → hub_accounting_document (many-to-one)
  • lnk_gl_posting.gl_account_hk → hub_gl_account (many-to-one)
  • lnk_gl_posting.company_code_hk → hub_company_code (many-to-one)
  • lnk_cost_center_posting.cost_center_hk → hub_cost_center (many-to-one)
  • lnk_cost_center_posting.gl_account_hk → hub_gl_account (many-to-one)
  • lnk_cost_center_posting.accounting_document_hk → hub_accounting_document (many-to-one)
  • lnk_cost_center_company.cost_center_hk → hub_cost_center (many-to-one)
  • lnk_cost_center_company.company_code_hk → hub_company_code (many-to-one)
  • sat_gl_account_master.gl_account_hk → hub_gl_account (many-to-one)
  • sat_cost_center_master.cost_center_hk → hub_cost_center (many-to-one)
  • sat_profit_center_master.profit_center_hk → hub_profit_center (many-to-one)
  • sat_accounting_doc_header.accounting_document_hk → hub_accounting_document (many-to-one)
  • sat_gl_account_status.gl_account_hk → hub_gl_account (many-to-one)
  • sat_company_code_master.company_code_hk → hub_company_code (many-to-one)

Related templates

All templates →
Start for $1

From requirements to AI-ready context, in one platform.

Describe your business in a conversation, start from a template or connect your own database. Your first model is ready in minutes.

Get startedBook a demo

Plans from $1/month · cancel any time