SAP Asset Accounting Analytics data model
Kimball warehouse for SAP FI-AA Asset Accounting: a transaction-grain line-item fact (ANEP / ACDOCA) and a periodic-snapshot fact (ANLC / ANLP) of per-area asset values and depreciation, sharing conformed asset (SCD2), asset-class, depreciation-area, transaction-type, cost-center, company-code, date and fiscal-period dimensions. The depreciation area is modelled as a dimension because each asset carries parallel valuations (book/tax/group/IFRS); accounting documents (belnr) are degenerate dimensions; SAP fiscal year/period drives Asset History Sheet, net-book-value and posted/planned depreciation reporting.
SAP Asset Accounting (FI-AA) reporting mart migrated from ECC / S/4HANA into Snowflake. Models fixed-asset accounting at two grains: an asset transaction / line-item fact (ANEP, ACDOCA) for acquisitions, retirements, transfers and write-ups, and a periodic-snapshot fact (ANLC / ANLP) carrying acquisition value, accumulated depreciation, net book value, and planned/posted depreciation per asset per depreciation area per fiscal period. Conformed dimensions cover the asset master (ANLA, SCD2, keyed bukrs+anln1+anln2), asset class (ANKA), depreciation area (afabe / T093) for parallel valuation, transaction type (bwasl / TABWT), cost center, company code (T001 / T093C), date and SAP fiscal period. Supports the Asset History Sheet, net-book-value, and depreciation reporting for SOX / IFRS / GAAP. It is a Kimball dimensional model: fact tables at a declared grain surrounded by conformed dimensions, ready for BI tools and a semantic layer.
- 10
- tables
- 105
- columns
- 16
- relationships
- 2
- 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
Design decisions
Dual-fact design: transaction line items plus a periodic snapshot
FI-AA posts discrete asset transactions in ANEP / ACDOCA (acquisitions, retirements, transfers, write-ups) but reports net book value and depreciation as period balances in ANLC / ANLP. A transaction-grain fact preserves every movement for audit while a periodic-snapshot fact gives fast, additive-by-period balances for the Asset History Sheet without re-aggregating millions of line items.
Depreciation area modelled as a conformed dimension
Every SAP asset carries parallel valuations across depreciation areas (afabe, table T093) — book, local tax, group/consolidation, IFRS and cost-accounting — each with its own acquisition value and accumulated depreciation in ANLC. Making the area a dimension lets both facts store one row per asset per area, so reports can pick a single valuation basis (e.g. IFRS) without double counting.
SCD2 on the asset master (ANLA)
Asset attributes that drive reporting — cost center / location assignment, responsible person, super number, description — change over an asset's life. Type-2 history on dim_asset preserves the as-was assignment so depreciation and net-book-value trends remain comparable and reconcilable across periods.
SAP fiscal-period accounting as a dedicated dimension
FI-AA values (ANLC) and posted depreciation (ANLP) are keyed by fiscal year (gjahr) and posting period (perio, 1-16 including special closing periods) under a fiscal year variant (periv) that rarely matches the calendar. A separate fiscal-period dimension models that calendar so period-close and year-end reporting line up with the SAP ledger.
Auditability for SOX / IFRS / GAAP
Fixed-asset balances are material to the financial statements, so the line-item fact retains accounting/reference documents (belnr, xblnr) as degenerate dimensions and transaction types (bwasl) categorise every movement. Together with the periodic snapshot this supports the full Asset History Sheet roll-forward (opening + additions - retirements - depreciation = closing) demanded by SOX controls and IFRS / GAAP disclosure.
Tables in the SAP Asset Accounting Analytics 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.
Fact tables (2)
fct_asset_transaction
Grain: one row per FI-AA asset transaction / line item (ANEP, ACDOCA)
Transaction-grain asset accounting fact — acquisitions, retirements, transfers, write-ups.
| Column | Type | Keys |
|---|---|---|
| asset_transaction_key | bigint | PK |
| date_key | bigint | |
| asset_value_date_key | bigint | |
| fiscal_period_key | bigint | |
| asset_key | bigint | |
| asset_class_key | bigint | |
| cost_center_key | bigint | |
| company_code_key | bigint | |
| depreciation_area_key | bigint | |
| transaction_type_key | bigint | |
| accounting_document | varchar | |
| document_line | varchar | |
| reference_document | varchar | |
| transaction_amount | decimal | |
| acquisition_value_change | decimal | |
| quantity | decimal | |
| currency | varchar |
fct_asset_depreciation_period
Grain: one row per asset per depreciation area per fiscal period (ANLC / ANLP)
Periodic-snapshot fact — per-area asset values and depreciation by fiscal period for net-book-value and Asset History Sheet reporting.
| Column | Type | Keys |
|---|---|---|
| asset_depreciation_key | bigint | PK |
| fiscal_period_key | bigint | |
| asset_key | bigint | |
| asset_class_key | bigint | |
| cost_center_key | bigint | |
| company_code_key | bigint | |
| depreciation_area_key | bigint | |
| date_key | bigint | |
| acquisition_value | decimal | |
| accumulated_depreciation | decimal | |
| net_book_value_begin | decimal | |
| net_book_value_end | decimal | |
| planned_ordinary_depreciation | decimal | |
| posted_ordinary_depreciation | decimal | |
| special_depreciation | decimal | |
| unplanned_depreciation | decimal | |
| write_up_amount | decimal | |
| useful_life_remaining_periods | smallint | |
| currency | varchar |
Dimension tables (8)
dim_date
Grain: one row per calendar day
| Column | Type | Keys |
|---|---|---|
| date_key | bigint | PK |
| full_date | date | BK |
| day_of_month | smallint | |
| month_number | smallint | |
| month_name | varchar | |
| quarter | smallint | |
| year | smallint | |
| is_business_day | boolean | |
| is_period_end | boolean |
dim_fiscal_period
Grain: one row per SAP fiscal year/period (gjahr/period)
| Column | Type | Keys |
|---|---|---|
| fiscal_period_key | bigint | PK |
| fiscal_period_code | varchar | BK |
| fiscal_year | smallint | |
| fiscal_period | smallint | |
| fiscal_variant | varchar | |
| period_start_date | date | |
| period_end_date | date | |
| is_special_period | boolean | |
| period_status | varchar |
dim_asset
Grain: one row per fixed asset per SCD2 version (ANLA, keyed bukrs+anln1+anln2)
SCD type 2
| Column | Type | Keys |
|---|---|---|
| asset_key | bigint | PK |
| asset_number | varchar | BK |
| asset_subnumber | varchar | |
| description | varchar | |
| additional_description | varchar | |
| capitalization_date | date | |
| deactivation_date | date | |
| inventory_number | varchar | |
| serial_number | varchar | |
| asset_super_number | varchar | |
| business_area | varchar | |
| location | varchar | |
| responsible_person | varchar | PII |
| quantity | decimal | |
| base_unit | varchar | |
| is_active | boolean |
dim_asset_class
Grain: one row per asset class (ANKA, classifies ANLA.anlkl)
| Column | Type | Keys |
|---|---|---|
| asset_class_key | bigint | PK |
| asset_class | varchar | BK |
| description | varchar | |
| account_determination | varchar | |
| screen_layout | varchar | |
| number_range | varchar | |
| asset_class_type | varchar |
dim_depreciation_area
Grain: one row per depreciation area (afabe, table T093) — parallel valuation view
| Column | Type | Keys |
|---|---|---|
| depreciation_area_key | bigint | PK |
| depreciation_area | varchar | BK |
| description | varchar | |
| area_type | varchar | |
| is_real_area | boolean | |
| posts_to_gl | varchar | |
| currency | varchar | |
| target_group | varchar |
dim_transaction_type
Grain: one row per FI-AA asset transaction type (bwasl, table TABWT)
| Column | Type | Keys |
|---|---|---|
| transaction_type_key | bigint | PK |
| transaction_type | varchar | BK |
| description | varchar | |
| transaction_category | varchar | |
| debit_credit_indicator | varchar | |
| is_acquisition | boolean | |
| is_retirement | boolean |
dim_cost_center
Grain: one row per cost center (CSKS, assigned in ANLZ.kostl)
| Column | Type | Keys |
|---|---|---|
| cost_center_key | bigint | PK |
| cost_center | varchar | BK |
| name | varchar | |
| profit_center | varchar | |
| responsible_person | varchar | PII |
| controlling_area | varchar |
dim_company_code
Grain: one row per SAP company code (T001, with chart of depreciation T093C)
| Column | Type | Keys |
|---|---|---|
| company_code_key | bigint | PK |
| company_code | varchar | BK |
| company_name | varchar | |
| country | varchar | |
| local_currency | varchar | |
| chart_of_depreciation | varchar | |
| fiscal_year_variant | varchar |
Relationships
Each relationship is a foreign key on the first table referencing the second.
- fct_asset_transaction.date_key → dim_date (many-to-one)
- fct_asset_transaction.asset_value_date_key → dim_date (many-to-one)
- fct_asset_transaction.fiscal_period_key → dim_fiscal_period (many-to-one)
- fct_asset_transaction.asset_key → dim_asset (many-to-one)
- fct_asset_transaction.asset_class_key → dim_asset_class (many-to-one)
- fct_asset_transaction.cost_center_key → dim_cost_center (many-to-one)
- fct_asset_transaction.company_code_key → dim_company_code (many-to-one)
- fct_asset_transaction.depreciation_area_key → dim_depreciation_area (many-to-one)
- fct_asset_transaction.transaction_type_key → dim_transaction_type (many-to-one)
- fct_asset_depreciation_period.fiscal_period_key → dim_fiscal_period (many-to-one)
- fct_asset_depreciation_period.asset_key → dim_asset (many-to-one)
- fct_asset_depreciation_period.asset_class_key → dim_asset_class (many-to-one)
- fct_asset_depreciation_period.cost_center_key → dim_cost_center (many-to-one)
- fct_asset_depreciation_period.company_code_key → dim_company_code (many-to-one)
- fct_asset_depreciation_period.depreciation_area_key → dim_depreciation_area (many-to-one)
- fct_asset_depreciation_period.date_key → dim_date (many-to-one)
Related templates
All templates →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.
