Asset Category Exceptions Report
Assets whose category setup is inconsistent with the category-book defaults — wrong or missing depreciation method, life, or account — so finance can correct them before they depreciate incorrectly.
Sample build of the Asset Category Exceptions Report — reconciled, and rendered tool-neutral so it runs in Power BI, ThoughtSpot, or Tableau.
| Asset Number | Category | Book | Expected Method | Actual Method | Exception |
|---|---|---|---|---|---|
| 1001 | Computer-Hardware | CORP | Standard | Standard | Sample |
| 1002 | Buildings | TAX FEDERAL | Corporate | Corporate | — |
| 1003 | Vehicles | CORP | Standard | Standard | Sample |
| 1004 | Furniture-Fixtures | IFRS | Default | Default | — |
| 1005 | Machinery | TAX STATE | Standard | Standard | Sample |
| 1001 | Computer-Hardware | CORP | Standard | Standard | Sample |
The report compares each asset's depreciation setup in FA_BOOKS against the category-book defaults in FA_CATEGORY_BOOKS, listing the mismatches.
18 assets depreciate on a method that differs from their category default — they expense at the wrong rate every period until corrected.
Re-default the 18 assets to their category method, or confirm the override was intentional; mismatches usually come from manual entry that skipped the category default.
This is the report's BI Publisher data model — the SQL data set BI Publisher runs against Oracle tables to produce the output. The same SQL becomes a dbt model in your warehouse, so one definition drives both the formatted report and the analytics layer.
Data sources
- FA_ADDITIONS_B
- FA_BOOKS
- FA_BOOK_CONTROLS
- FA_TRANSACTION_HEADERS
- FA_CATEGORIES_B
- FA_CATEGORY_BOOKS
- FA_CATEGORY_BOOK_DEFAULTS
- FA_ADDITIONS_TL
- FA_METHODS
- FA_BONUS_RULES
- GL_CODE_COMBINATIONS
- FA_CONVENTION_TYPES
Show / hide SQL
SELECT TRANSACTION_HEADER_ID
,ASSET_NUMBER
,DESCRIPTION
,BOOK_TYPE_CODE
,CREATION_DATE
,DATE_PLACED_IN_SERVICE
,CREATED_BY
,LAST_UPDATED_BY
,TO_CHAR(LAST_UPDATE_DATE, 'MM/DD/YYYY HH24:MI:SS') LAST_UPDATE_DATE
,ATTRIBUTE_CATEGORY_CODE
,LIFE_IN_MONTHS1
,LIFE_IN_MONTHS
,PRORATE_CONVENTION_CODE1
,PRORATE_CONVENTION_CODE
,METHOD_CODE1
,METHOD_CODE
,BONUS_RULE1
,BONUS_RULE
,DEPRN_LIMIT_TYPE1
,DEPRN_LIMIT_TYPE
,DEPRN_LIMIT_AMOUNT1 --01/04
,DEPRN_LIMIT_AMOUNT --01/04
,DEPRN_LIMIT_PERCENT1 --01/04
,DEPRN_LIMIT_PERCENT --01/04
,CAPITALIZE_FLAG1
,CAPITALIZE_FLAG
,SEGMENT41
,SEGMENT4
,DEPRECIATE_FLAG1
,DEPRECIATE_FLAG
,AMORTIZE_FLAG
,SEGMENT1
,SEGMENT2
,SEGMENT3
,SEGMENT5
,SEGMENT6
,SEGMENT7
,BOOK_CLASS
,CATEGORY_ID
,CATEGORY_ID1
,BOOK_TYPE_CODE1
,RUN_DATE
FROM (
SELECT DISTINCT Q2.TRANSACTION_HEADER_ID
,Q2.ASSET_NUMBER
,Q2.DESCRIPTION
,Q2.BOOK_TYPE_CODE
,TO_CHAR(Q2.CREATION_DATE, 'MM/DD/YYYY HH24:MI:SS') CREATION_DATE
,TO_CHAR(Q2.DATE_PLACED_IN_SERVICE, 'MM/DD/YYYY HH24:MI:SS') DATE_PLACED_IN_SERVICE
,Q2.CREATED_BY
,Q2.LAST_UPDATED_BY
,Q2.LAST_UPDATE_DATE --TO_CHAR(Q2.LAST_UPDATE_DATE, 'MM/DD/YYYY HH24:MI:SS') LAST_UPDATE_DATE
,Q2.ATTRIBUTE_CATEGORY_CODE
,Q2.LIFE_IN_MONTHS
,Q2.PRORATE_CONVENTION_CODE
,Q2.BONUS_RULE
,Q2.DEPRN_LIMIT_TYPE
,Q2.DEPRN_LIMIT_AMOUNT --01/04
,Q2.DEPRN_LIMIT_PERCENT --01/04
,Q2.CAPITALIZE_FLAG
,Q2.SEGMENT1
,Q2.SEGMENT2
,Q2.SEGMENT3
,Q2.SEGMENT4
,Q2.SEGMENT5
,Q2.SEGMENT6
,Q2.SEGMENT7
,Q2.DEPRECIATE_FLAG
,Q2.AMORTIZE_FLAG
,Q2.METHOD_CODE
,Q2.BOOK_CLASS
,Q2.CATEGORY_ID
,Q3.CATEGORY_ID1
,Q3.BOOK_TYPE_CODE1
,Q3.LIFE_IN_MONTHS1
,Q3.PRORATE_CONVENTION_CODE1
,Q3.METHOD_CODE1
,Q3.BONUS_RULE1
,Q3.DEPRN_LIMIT_TYPE1
,Q3.DEPRN_LIMIT_AMOUNT1 --01/04
,Q3.DEPRN_LIMIT_PERCENT1 --01/04
,Q3.CAPITALIZE_FLAG1
,Q3.DEPRECIATE_FLAG1
,Q3.SEGMENT41
,TO_CHAR(:P_DATE, 'MM/DD/YYYY') RUN_DATE
FROM (
SELECT MAX(FTH.LAST_UPDATE_DATE) LAST_UPDATE_DATE
,FAB.ASSET_NUMBER
,FB.BOOK_TYPE_CODE
FROM FA_ADDITIONS_B FAB
,FA_BOOKS FB
,FA_BOOK_CONTROLS FBC
,FA_TRANSACTION_HEADERS FTH
WHERE 1 = 1
AND FAB.ASSET_ID = FB.ASSET_ID
AND FAB.ASSET_ID = FTH.ASSET_ID
AND FB.ASSET_ID = FTH.ASSET_ID
AND FB.BOOK_TYPE_CODE = FTH.BOOK_TYPE_CODE
AND FB.TRANSACTION_HEADER_ID_IN = FTH.TRANSACTION_HEADER_ID
AND FB.BOOK_TYPE_CODE = FBC.BOOK_TYPE_CODE
AND FTH.BOOK_TYPE_CODE = FBC.BOOK_TYPE_CODE
AND FB.PERIOD_COUNTER_FULLY_RETIRED IS NULL
AND ( FB.BOOK_TYPE_CODE IN (:P_BOOK_NAME) OR 'All' IN ('All' || :P_BOOK_NAME) )
AND ( FBC.BOOK_CLASS IN (:P_BOOK_CLASS) OR 'All' IN ('All' || :P_BOOK_CLASS) )
--
--AND FAB.ASSET_NUMBER IN('141616','141617')
--
GROUP BY FAB.ASSET_NUMBER ,FB.BOOK_TYPE_CODE
ORDER BY FAB.ASSET_NUMBER DESC
)
Q1
,(
SELECT DISTINCT FTH.TRANSACTION_HEADER_ID
,FAB.ASSET_NUMBER
,FAT.DESCRIPTION
,FB.BOOK_TYPE_CODE
,FAB.CREATION_DATE
--,FTH.CREATION_DATE --RJ
,FB.DATE_PLACED_IN_SERVICE
--,FTH.CREATED_BY
,FAB.CREATED_BY
,FTH.LAST_UPDATED_BY
,FTH.LAST_UPDATE_DATE
--,FAB.ATTRIBUTE_CATEGORY_CODE
,FCT.SEGMENT1 || '-' || FCT.SEGMENT2 ATTRIBUTE_CATEGORY_CODE
,FM.LIFE_IN_MONTHS
,FACT.PRORATE_CONVENTION_CODE
,FBR.BONUS_RULE
--,FB.DEPRN_LIMIT_TYPE
, (case when FB.DEPRN_LIMIT_TYPE ='NONE' then null else FB.DEPRN_LIMIT_TYPE end ) DEPRN_LIMIT_TYPE
,DECODE(FB.DEPRN_LIMIT_TYPE, 'AMT', FB.ALLOWED_DEPRN_LIMIT_AMOUNT, NULL) DEPRN_LIMIT_AMOUNT --01/04
,DECODE(FB.DEPRN_LIMIT_TYPE, 'PCT', FB.ALLOWED_DEPRN_LIMIT, NULL) DEPRN_LIMIT_PERCENT --01/04
,FB.CAPITALIZE_FLAG
,GCC.SEGMENT1
,GCC.SEGMENT2
,GCC.SEGMENT3
,GCC.SEGMENT4
,GCC.SEGMENT5
,GCC.SEGMENT6
,GCC.SEGMENT7
,FB.DEPRECIATE_FLAG
--,FBC.AMORTIZE_FLAG
/*,(
CASE
WHEN FTH.AMORTIZATION_START_DATE IS NOT NULL
THEN 'Y'
ELSE 'N'
END
) AMORTIZE_FLAG -- Modified on 01/10 */
,( CASE
WHEN EXISTS (
SELECT
1
FROM
FA_TRANSACTION_HEADERS A
WHERE
A.ASSET_ID = FB.ASSET_ID
AND A.BOOK_TYPE_CODE = FB.BOOK_TYPE_CODE
AND A.AMORTIZATION_START_DATE IS NOT NULL
) THEN 'Y'
ELSE 'N'
END
)AMORTIZE_FLAG -- w.r.t REF-284201
,FM.METHOD_CODE
,FBC.BOOK_CLASS
,FCT.CATEGORY_ID
FROM FA_CATEGORIES_B FCT
,FA_CATEGORY_BOOKS FCB
,FA_CATEGORY_BOOK_DEFAULTS FCBD
,FA_ADDITIONS_B FAB
,FA_ADDITIONS_TL FAT
,FA_METHODS FM
,FA_BOOKS FB
,FA_BOOK_CONTROLS FBC
,FA_BONUS_RULES FBR
,GL_CODE_COMBINATIONS GCC
,FA_TRANSACTION_HEADERS FTH
,FA_CONVENTION_TYPES FACT
,(
SELECT MAX(LAST_UPDATE_DATE)
,ASSET_ID
,CODE_COMBINATION_ID
,BOOK_TYPE_CODE
FROM FA_DISTRIBUTION_HISTORY
WHERE DATE_INEFFECTIVE IS NULL
GROUP BY ASSET_ID
,CODE_COMBINATION_ID
,BOOK_TYPE_CODE
) FDH
WHERE 1 = 1
AND FCT.CATEGORY_ID = FCB.CATEGORY_ID
AND FCB.CATEGORY_ID = FCBD.CATEGORY_ID
AND FCT.CATEGORY_ID = FCBD.CATEGORY_ID
AND FCB.CATEGORY_ID = FAB.ASSET_CATEGORY_ID
AND FAT.ASSET_ID = FAB.ASSET_ID
AND FAT.LANGUAGE = USERENV('LANG')
AND FB.METHOD_ID = FM.METHOD_ID
AND FB.ASSET_ID = FAB.ASSET_ID
AND FB.ASSET_ID = FAT.ASSET_ID
AND FCB.BOOK_TYPE_CODE = FBC.BOOK_TYPE_CODE
AND FCB.BOOK_TYPE_CODE = FB.BOOK_TYPE_CODE
AND FB.BOOK_TYPE_CODE = FBC.BOOK_TYPE_CODE
AND FCB.BOOK_TYPE_CODE = FCBD.BOOK_TYPE_CODE
AND FBC.BOOK_TYPE_CODE = FCBD.BOOK_TYPE_CODE
AND FB.BONUS_RULE_ID = FBR.BONUS_RULE_ID(+)
--AND GCC.CODE_COMBINATION_ID = FCB.DEPRN_EXPENSE_ACCOUNT_CCID
AND GCC.CODE_COMBINATION_ID = FDH.CODE_COMBINATION_ID
AND FDH.ASSET_ID = FAB.ASSET_ID
AND FDH.BOOK_TYPE_CODE = FTH.BOOK_TYPE_CODE
AND FTH.ASSET_ID = FAB.ASSET_ID
AND FTH.BOOK_TYPE_CODE = FBC.BOOK_TYPE_CODE
AND FTH.ASSET_ID = FB.ASSET_ID
AND FTH.BOOK_TYPE_CODE = FB.BOOK_TYPE_CODE
AND FB.TRANSACTION_HEADER_ID_IN = FTH.TRANSACTION_HEADER_ID
AND FB.PERIOD_COUNTER_FULLY_RETIRED IS NULL
AND (
FB.DATE_INEFFECTIVE IS NULL
OR FB.TRANSACTION_HEADER_ID_IN = (
SELECT FB1.TRANSACTION_HEADER_ID_OUT
FROM FA_BOOKS FB1
WHERE FB.TRANSACTION_HEADER_ID_IN = FB1.TRANSACTION_HEADER_ID_OUT
)
)
AND FACT.CONVENTION_TYPE_ID = FB.CONVENTION_TYPE_ID
AND ( FB.BOOK_TYPE_CODE IN (:P_BOOK_NAME) OR 'All' IN ('All' || :P_BOOK_NAME) )
AND ( FBC.BOOK_CLASS IN (:P_BOOK_CLASS) OR 'All' IN ('All' || :P_BOOK_CLASS) )
--
--AND FAB.ASSET_NUMBER IN('141616','141617')
--
ORDER BY FAB.ASSET_NUMBER DESC
)
Q2
,(
SELECT FCT.CATEGORY_ID CATEGORY_ID1
,FCB.BOOK_TYPE_CODE BOOK_TYPE_CODE1
,FM.LIFE_IN_MONTHS LIFE_IN_MONTHS1
,FACT.PRORATE_CONVENTION_CODE PRORATE_CONVENTION_CODE1
,FM.METHOD_CODE METHOD_CODE1
,FBR.BONUS_RULE BONUS_RULE1
,FCBD.DEPRN_LIMIT_TYPE DEPRN_LIMIT_TYPE1
,DECODE(FCBD.DEPRN_LIMIT_TYPE, 'AMT', FCBD.SPECIAL_DEPRN_LIMIT_AMOUNT, NULL) DEPRN_LIMIT_AMOUNT1 --01/04
,DECODE(FCBD.DEPRN_LIMIT_TYPE, 'PCT', FCBD.ALLOWED_DEPRN_LIMIT, NULL) DEPRN_LIMIT_PERCENT1 --01/04
,fct.CAPITALIZE_FLAG CAPITALIZE_FLAG1
,FCBD.DEPRECIATE_FLAG DEPRECIATE_FLAG1
,GCC.SEGMENT4 SEGMENT41
,FCT.CREATION_DATE CREATION_DATE1
,fct.SEGMENT1,fct.SEGMENT2
FROM FA_CATEGORIES_B FCT
,FA_CATEGORY_BOOKS FCB
,FA_CATEGORY_BOOK_DEFAULTS FCBD
,FA_METHODS FM
,FA_BOOK_CONTROLS FBC
,FA_BONUS_RULES FBR
,GL_CODE_COMBINATIONS GCC
,FA_CONVENTION_TYPES FACT
WHERE 1 = 1
AND FCT.CATEGORY_ID = FCB.CATEGORY_ID
AND FCB.CATEGORY_ID = FCBD.CATEGORY_ID
AND FCT.CATEGORY_ID = FCBD.CATEGORY_ID
AND FCBD.METHOD_ID = FM.METHOD_ID
AND FCB.BOOK_TYPE_CODE = FCBD.BOOK_TYPE_CODE
AND FBC.BOOK_TYPE_CODE = FCBD.BOOK_TYPE_CODE
AND FCBD.BONUS_RULE_ID = FBR.BONUS_RULE_ID(+)
AND GCC.CODE_COMBINATION_ID = FCB.DEPRN_EXPENSE_ACCOUNT_CCID
AND FACT.CONVENTION_TYPE_ID = FCBD.CONVENTION_TYPE_ID
--AND FCT.CATEGORY_ID='300000006086154'
and (FCB.BOOK_TYPE_CODE IN (:P_BOOK_NAME) OR 'All' IN ('All' || :P_BOOK_NAME) )
and (FBC.BOOK_CLASS IN (:P_BOOK_CLASS) OR 'All' IN ('All' || :P_BOOK_CLASS) )
)
Q3
WHERE Q1.BOOK_TYPE_CODE = Q2.BOOK_TYPE_CODE
AND Q1.ASSET_NUMBER = Q2.ASSET_NUMBER
AND Q1.LAST_UPDATE_DATE = Q2.LAST_UPDATE_DATE
AND Q3.BOOK_TYPE_CODE1 = Q2.BOOK_TYPE_CODE
AND Q3.CATEGORY_ID1 = Q2.CATEGORY_ID
--
--AND Q2.ASSET_NUMBER IN('106')
--
AND ( Q2.BOOK_TYPE_CODE IN (:P_BOOK_NAME) OR 'All' IN ('All' || :P_BOOK_NAME) )
AND ( Q2.BOOK_CLASS IN (:P_BOOK_CLASS) OR 'All' IN ('All' || :P_BOOK_CLASS) )
AND Q2.LAST_UPDATE_DATE >= :P_DATE
AND (
Q2.LIFE_IN_MONTHS <> Q3.LIFE_IN_MONTHS1
OR Q2.PRORATE_CONVENTION_CODE <> Q3.PRORATE_CONVENTION_CODE1
OR Q2.METHOD_CODE <> Q3.METHOD_CODE1
OR nvl(Q2.BONUS_RULE,'x') <> nvl(Q3.BONUS_RULE1,'x')
OR nvl(Q2.DEPRN_LIMIT_TYPE,'x') <> nvl(Q3.DEPRN_LIMIT_TYPE1,'x')
OR nvl(Q2.CAPITALIZE_FLAG,'x') <> nvl(Q3.CAPITALIZE_FLAG1,'x')
OR Q2.SEGMENT4 <> Q3.SEGMENT41
OR nvl(Q2.DEPRECIATE_FLAG,'x') <> nvl(Q3.DEPRECIATE_FLAG1,'x')
)
)
ORDER BY 2,9 DESCThe data-warehouse model — one fact surrounded by conformed dimensions (what you slice by) and measures (what you aggregate), expressed as dbt so it migrates with you. Grain: one row per source transaction.
| Element | Type | Definition |
|---|---|---|
| FA_BOOKS | dimension | dimension |
| FA_BOOK_CONTROLS | dimension | dimension |
| FA_TRANSACTION_HEADERS | dimension | dimension |
| FA_CATEGORIES_B | dimension | dimension |
| Amount | measure | measure |
Every source object behind this report. Each linked table has its own page with full column descriptions, drawn from the Oracle BICC lineage and articulated for practitioners.
| Table | Reporting columns | Subject areas |
|---|---|---|
| FA_ADDITIONS_B | 15 | 9 |
| FA_BOOKS | 20 | 2 |
| FA_BOOK_CONTROLS | 29 | 13 |
| FA_TRANSACTION_HEADERS | 7 | 5 |
| FA_CATEGORIES_B | 5 | 10 |
| FA_CATEGORY_BOOKS | Setup / configuration table — joined for reference, not exposed for analytics | |
| FA_CATEGORY_BOOK_DEFAULTS | Setup / configuration table — joined for reference, not exposed for analytics | |
| FA_ADDITIONS_TL | 1 | 8 |
| FA_METHODS | 8 | 2 |
| FA_BONUS_RULES | 2 | 1 |
| GL_CODE_COMBINATIONS | 7 | 61 |
| FA_CONVENTION_TYPES | 2 | 2 |