Analytics Catalog/Oracle Fusion ERP/General Ledger/GL Balance Tracking for Licensing Contracts Report
Explore the catalogReportsModulesEnterprise modelOTBI subject areasBICC PVOs
Oracle Fusion · General Ledger

GL Balance Tracking for Licensing Contracts Report

General Ledger

Tracks general-ledger balances for a revenue stream by cost center, selling method, and currency over time — a movement view that follows specific account combinations period over period.

Related  A focused balance-tracking view; the General Ledger Trial Balance Monthly Movements Report applies the same movement logic across all accounts.

Run note · BIP run  High-volume GL extracts can exceed BI Publisher's online output limit and time out. Run it as a scheduled process (ESS) with output bursted to file or email rather than online preview, and bound it by ledger and period.

Sample build of the GL Balance Tracking for Licensing Contracts Report — reconciled, and rendered tool-neutral so it runs in Power BI, ThoughtSpot, or Tableau.

GL Balance Tracking for Licensing Contracts Report
Sample build · illustrative
Filters
Account From
1000-1410-000
Account To
1000-1410-000
Brand From
Sample
Brand To
Sample
Contract
Sample
Conversion Type
Standard
240
Account combos
$18.40M
Tracked balance
12
Periods
Account CombinationCost CenterSelling MethodCurrencyPeriodBalance
1000-2100-000$1,240,500.00StandardUSDAPR-26$1,240,500.00
1000-5400-000$842,150.75CorporateUSDMAR-26$842,150.75
1000-1410-000$96,400.00StandardUSDFEB-26$96,400.00
2000-2100-000$1,005,233.10DefaultUSDJAN-26$1,005,233.10
1000-6300-000$58,720.40StandardUSDDEC-25$58,720.40
1000-2100-000$1,240,500.00StandardUSDAPR-26$1,240,500.00
AI Analyst · active
reading

The report reads GL_BALANCES on the selected account combinations and trends them by cost center and selling method.

flag

One cost center's balance swings sharply month to month — a reclassification churn that nets out but distorts any single-month read.

root cause & next step

Trace the churn to a recurring reclass; if a manual reclass repeats every month, fix the original coding so the balance is right at source.

Illustrative data. The live interactive version — drill-through, filters, export, and the AI Analyst — runs on your warehouse. See it live →

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

How it interconnects: this data set reads the physical tables above. Those same tables surface in OTBI as subject areas and in BICC as PVOs — three lenses on one source. Open any table to trace its subject areas and View Objects.
SQL data set · genericized · parameterized · no hardcoded segments
Show / hide SQL
<![CDATA[WITH CONVERSION_TBL AS
(
SELECT
DISTINCT
CONVERSION_RATE,
FROM_CURRENCY,
USER_CONVERSION_TYPE
FROM
(
SELECT DISTINCT
1 CONVERSION_RATE,
'USD' FROM_CURRENCY,
GL.NAME,
GDCT.USER_CONVERSION_TYPE
FROM
GL_LEDGERS GL,
GL_DAILY_CONVERSION_TYPES GDCT,
GL_DAILY_RATES GDR
WHERE
1=1
AND GDCT.CONVERSION_TYPE				= GDR.CONVERSION_TYPE
AND GL.CURRENCY_CODE					= GDR.FROM_CURRENCY
AND GL.CURRENCY_CODE 					= 'USD'
AND UPPER(GDCT.USER_CONVERSION_TYPE)    IN ('STANDARD','CORPORATE')
AND (GL.name            				IN (:P_LEDGER)
OR  'All'                				IN (:P_LEDGER||'All'))
AND (GDCT.USER_CONVERSION_TYPE           IN (:P_CONVERSION_TYPE)
OR  'All'                				IN (:P_CONVERSION_TYPE||'All'))
UNION
SELECT distinct
	GDR.CONVERSION_RATE,
	GDR.FROM_CURRENCY,
	GL.NAME,
	GDCT.USER_CONVERSION_TYPE
FROM
	GL_DAILY_CONVERSION_TYPES GDCT,
	GL_DAILY_RATES GDR,
	GL_LEDGERS GL
WHERE
	1=1
	AND GDCT.CONVERSION_TYPE				= GDR.CONVERSION_TYPE
	AND GL.CURRENCY_CODE					= GDR.FROM_CURRENCY
	AND GDR.TO_CURRENCY						= 'USD'
	AND UPPER(GDCT.USER_CONVERSION_TYPE)    IN ('STANDARD','CORPORATE')
	AND GDR.CONVERSION_DATE					= (:P_RATE_DATE)
	AND (GL.name            				IN (:P_LEDGER)
	OR  'All'                				IN (:P_LEDGER||'All'))
	AND (GDCT.USER_CONVERSION_TYPE           IN (:P_CONVERSION_TYPE)
    OR  'All'                				IN (:P_CONVERSION_TYPE||'All'))
)
)

SELECT
	LEDGER_NAME,
	ACCOUNT_COMBINATION,
	ENTITY,
	SELLING_METHOD,
	COST_CENTER,
	ACCOUNT,
	LOCATION,
	BRAND,
	INTERCOMPANY,
	FUTURE1,
	FUTURE2,
	ENTERED_CURRENCY,
	FUNCTIONAL_CURRENCY,
	CONTRACT,
	SUM(BEG_BAL_ENTERED) BEG_BAL_ENTERED,
	SUM(RIGHTSLOGIC_ENTERED) RIGHTSLOGIC_ENTERED,
	SUM(RECEIVABLES_ENTERED) RECEIVABLES_ENTERED,
	SUM(MANUAL_ENTERED) MANUAL_ENTERED,
	SUM((BEG_BAL_ENTERED+RIGHTSLOGIC_ENTERED+RECEIVABLES_ENTERED+MANUAL_ENTERED)) END_BAL_ENTERED,
	SUM(BEG_BAL_ACCOUNTED) BEG_BAL_ACCOUNTED,
	SUM(RIGHTSLOGIC_ACCOUNTED) RIGHTSLOGIC_ACCOUNTED,
	SUM(RECEIVABLES_ACCOUNTED) RECEIVABLES_ACCOUNTED,
	SUM(MANUAL_ACCOUNTED) MANUAL_ACCOUNTED,
	SUM((BEG_BAL_ACCOUNTED+RIGHTSLOGIC_ACCOUNTED+RECEIVABLES_ACCOUNTED+MANUAL_ACCOUNTED)) END_BAL_ACCOUNTED,
	ROUND(CONVERSION_RATE,2) CONVERSION_RATE,
	USER_CONVERSION_TYPE rate_type,
	SUM(ROUND((CASE WHEN FUNCTIONAL_CURRENCY = 'USD' THEN (1*BEG_BAL_ACCOUNTED)
	ELSE 
	(CONVERSION_RATE*BEG_BAL_ACCOUNTED) END),2)) BEG_BAL_USD,
	SUM(ROUND((CASE WHEN FUNCTIONAL_CURRENCY = 'USD' THEN (1*RIGHTSLOGIC_ACCOUNTED)
	ELSE 
	(CONVERSION_RATE*RIGHTSLOGIC_ACCOUNTED) END),2)) RIGHTS_LOGIC_USD,
	SUM(ROUND((CASE WHEN FUNCTIONAL_CURRENCY = 'USD' THEN (1*RECEIVABLES_ACCOUNTED)
	ELSE 
	(CONVERSION_RATE*RECEIVABLES_ACCOUNTED) END),2))	RECEIVABLES_USD, 
	SUM(ROUND((CASE WHEN FUNCTIONAL_CURRENCY = 'USD' THEN (1*MANUAL_ACCOUNTED)
	ELSE 
	(CONVERSION_RATE*MANUAL_ACCOUNTED) END),2)) MANUAL_USD,
	SUM(ROUND((CASE WHEN FUNCTIONAL_CURRENCY = 'USD' THEN ((BEG_BAL_ACCOUNTED+RIGHTSLOGIC_ACCOUNTED+RECEIVABLES_ACCOUNTED+MANUAL_ACCOUNTED)*1)
	ELSE ((BEG_BAL_ACCOUNTED+RIGHTSLOGIC_ACCOUNTED+RECEIVABLES_ACCOUNTED+MANUAL_ACCOUNTED)*CONVERSION_RATE) END ),2)) END_BAL_USD
FROM
(

SELECT
	LEDGER_NAME,
	ACCOUNT_COMBINATION,
	ENTITY,
	SELLING_METHOD,
	COST_CENTER,
	ACCOUNT,
	LOCATION,
	BRAND,
	INTERCOMPANY,
	FUTURE1,
	FUTURE2,
	ENTERED_CURRENCY,
	FUNCTIONAL_CURRENCY,
	CONTRACT,
	SUM(NVL(BEG_BAL_ENTERED,0)) - SUM(NVL(BEG_BAL_ENTERED_RL,0)) - SUM(NVL(BEG_BAL_ENTERED_RI,0))  BEG_BAL_ENTERED,
	SUM(NVL(RIGHTSLOGIC_ENTERED,0)) RIGHTSLOGIC_ENTERED,
	SUM(NVL(RECEIVABLES_ENTERED,0)) RECEIVABLES_ENTERED,
	SUM(NVL(MANUAL_ENTERED,0)) - SUM(NVL(RIGHTSLOGIC_ENTERED,0)) - SUM(NVL(RECEIVABLES_ENTERED,0)) MANUAL_ENTERED,
	SUM(NVL(BEG_BAL_ACCOUNTED,0)) - SUM(NVL(BEG_BAL_ACCOUNTED_RL,0)) - SUM(NVL(BEG_BAL_ACCOUNTED_RI,0))  BEG_BAL_ACCOUNTED,
	SUM(NVL(RIGHTSLOGIC_ACCOUNTED,0)) RIGHTSLOGIC_ACCOUNTED,
	SUM(NVL(RECEIVABLES_ACCOUNTED,0)) RECEIVABLES_ACCOUNTED,
	SUM(NVL(MANUAL_ACCOUNTED,0)) - SUM(NVL(RIGHTSLOGIC_ACCOUNTED,0)) - SUM(NVL(RECEIVABLES_ACCOUNTED,0)) MANUAL_ACCOUNTED,
	CONVERSION_RATE,
	USER_CONVERSION_TYPE
FROM
(
--Manual Source Code
SELECT /*+ PARALLEL(48) */
	GL.NAME LEDGER_NAME,
	GCC.SEGMENT1||'-'||GCC.SEGMENT2||'-'||GCC.SEGMENT3||'-'||GCC.SEGMENT4||'-'||GCC.SEGMENT5||'-'||GCC.SEGMENT6||'-'||GCC.SEGMENT7||'-'||GCC.SEGMENT8||'-'||GCC.SEGMENT9 ACCOUNT_COMBINATION,
	GCC.SEGMENT1 ENTITY,
	GCC.SEGMENT2 SELLING_METHOD,
	GCC.SEGMENT3 COST_CENTER,
	GCC.SEGMENT4 ACCOUNT,
	GCC.SEGMENT5 LOCATION,
	GCC.SEGMENT6 BRAND,
	GCC.SEGMENT7 INTERCOMPANY,
	GCC.SEGMENT8 FUTURE1,
	GCC.SEGMENT9 FUTURE2,
	GJH.CURRENCY_CODE ENTERED_CURRENCY,
	GL.CURRENCY_CODE FUNCTIONAL_CURRENCY,
	GJL.ATTRIBUTE1 CONTRACT,
	SUM(NVL(GJL.ENTERED_DR,0) - NVL(GJL.ENTERED_CR,0)) MANUAL_ENTERED,
	SUM(NVL(GJL.ACCOUNTED_DR,0) - NVL(GJL.ACCOUNTED_CR,0)) MANUAL_ACCOUNTED,
	0 RIGHTSLOGIC_ENTERED,
	0 RIGHTSLOGIC_ACCOUNTED,
	0 RECEIVABLES_ENTERED,
	0 RECEIVABLES_ACCOUNTED,
	CT.CONVERSION_RATE,
	CT.USER_CONVERSION_TYPE,
	
	0 BEG_BAL_ENTERED,
	0 BEG_BAL_ENTERED_RL,
	0 BEG_BAL_ENTERED_RI,
	
	0 BEG_BAL_ACCOUNTED,
	0 BEG_BAL_ACCOUNTED_RL,
	0 BEG_BAL_ACCOUNTED_RI,
	
	GCC.CODE_COMBINATION_ID,
	GL.LEDGER_ID
	
	
FROM
	GL_LEDGERS GL,
	GL_CODE_COMBINATIONS GCC,
	GL_JE_HEADERS GJH,
	GL_JE_LINES GJL,
	GL_PERIODS GP,
	CONVERSION_TBL CT
	--SECURITY_TBL ST

WHERE
	1=1
	--AND ST.ledger_id						= GL.LEDGER_ID
	AND GJH.JE_HEADER_ID 					= GJL.JE_HEADER_ID
	AND GJH.LEDGER_ID						= GL.LEDGER_ID
	AND GJL.CODE_COMBINATION_ID				= GCC.CODE_COMBINATION_ID
	--AND GJH.JE_SOURCE						IN ('Manual','Spreadsheet','AutoCopy')
	AND GJL.STATUS 						    = 'P'
	AND GJH.PERIOD_NAME						= GP.PERIOD_NAME
	AND GL.PERIOD_SET_NAME					= GP.PERIOD_SET_NAME
	AND GL.CURRENCY_CODE					= CT.FROM_CURRENCY
	AND (GL.name            				IN (:P_LEDGER)
	OR  'All'                				IN (:P_LEDGER||'All'))
	AND (GJH.CURRENCY_CODE            		IN (:P_ENTER_CURRENCY)
	OR  'All'                				IN (:P_ENTER_CURRENCY||'All'))
	AND GP.START_DATE						>= (SELECT DISTINCT START_DATE FROM GL_PERIODS WHERE period_set_name = GL.PERIOD_SET_NAME AND PERIOD_NAME = :P_FROM_PERIOD)
	AND GP.END_DATE							<= (SELECT DISTINCT END_DATE FROM GL_PERIODS WHERE period_set_name = GL.PERIOD_SET_NAME AND PERIOD_NAME = :P_TO_PERIOD)
	--AND GJL.ATTRIBUTE1 =NVL(:P_CONTRACT,GJL.ATTRIBUTE1)
	AND (GJL.ATTRIBUTE1           				IN (:P_CONTRACT)
	OR  'All'                				IN (:P_CONTRACT||'All'))
	
	GROUP BY
	GL.NAME,
	GCC.SEGMENT1,
	GCC.SEGMENT2,
	GCC.SEGMENT3,
	GCC.SEGMENT4,
	GCC.SEGMENT5,
	GCC.SEGMENT6,
	GCC.SEGMENT7,
	GCC.SEGMENT8,
	GCC.SEGMENT9,
	GJH.CURRENCY_CODE,
	GL.CURRENCY_CODE,
	GJL.ATTRIBUTE1,
	CT.CONVERSION_RATE,
	GCC.CODE_COMBINATION_ID,
	GL.LEDGER_ID,
	CT.USER_CONVERSION_TYPE
	
	UNION
--BEGINNING BALANCE FOR MANUAL SOURCE
	SELECT /*+ PARALLEL(48) */
	GL.NAME LEDGER_NAME,
	GCC.SEGMENT1||'-'||GCC.SEGMENT2||'-'||GCC.SEGMENT3||'-'||GCC.SEGMENT4||'-'||GCC.SEGMENT5||'-'||GCC.SEGMENT6||'-'||GCC.SEGMENT7||'-'||GCC.SEGMENT8||'-'||GCC.SEGMENT9 ACCOUNT_COMBINATION,
	GCC.SEGMENT1 ENTITY,
	GCC.SEGMENT2 SELLING_METHOD,
	GCC.SEGMENT3 COST_CENTER,
	GCC.SEGMENT4 ACCOUNT,
	GCC.SEGMENT5 LOCATION,
	GCC.SEGMENT6 BRAND,
	GCC.SEGMENT7 INTERCOMPANY,
	GCC.SEGMENT8 FUTURE1,
	GCC.SEGMENT9 FUTURE2,
	GJH.CURRENCY_CODE ENTERED_CURRENCY,
	GL.CURRENCY_CODE FUNCTIONAL_CURRENCY,
	GJL.ATTRIBUTE1 CONTRACT,
	0 MANUAL_ENTERED,
	0 MANUAL_ACCOUNTED,
	0 RIGHTSLOGIC_ENTERED,
	0 RIGHTSLOGIC_ACCOUNTED,
	0 RECEIVABLES_ENTERED,
	0 RECEIVABLES_ACCOUNTED,
	CT.CONVERSION_RATE,
	CT.USER_CONVERSION_TYPE,
	
	SUM(NVL(GJL.ENTERED_DR,0) - NVL(GJL.ENTERED_CR,0)) BEG_BAL_ENTERED,
	0 BEG_BAL_ENTERED_RL,
	0 BEG_BAL_ENTERED_RI,
	
	SUM(NVL(GJL.ACCOUNTED_DR,0) - NVL(GJL.ACCOUNTED_CR,0)) BEG_BAL_ACCOUNTED,
	0 BEG_BAL_ACCOUNTED_RL,
	0 BEG_BAL_ACCOUNTED_RI,
	
	GCC.CODE_COMBINATION_ID,
	GL.LEDGER_ID
	

FROM
	GL_LEDGERS GL,
	GL_CODE_COMBINATIONS GCC,
	GL_JE_HEADERS GJH,
	GL_JE_LINES GJL,
	GL_PERIODS GP,
	CONVERSION_TBL CT
	--SECURITY_TBL ST

WHERE
	1=1
	--AND ST.ledger_id						= GL.LEDGER_ID
	AND GJH.JE_HEADER_ID 					= GJL.JE_HEADER_ID
	AND GJH.LEDGER_ID						= GL.LEDGER_ID
	AND GJL.CODE_COMBINATION_ID				= GCC.CODE_COMBINATION_ID
	--AND GJH.JE_SOURCE						IN ('Manual','Spreadsheet','AutoCopy')
    AND GJL.STATUS 						    = 'P'
	AND GJH.PERIOD_NAME						= GP.PERIOD_NAME
	AND GL.PERIOD_SET_NAME					= GP.PERIOD_SET_NAME
	AND GL.CURRENCY_CODE					= CT.FROM_CURRENCY
	AND (GL.name            				IN (:P_LEDGER)
	OR  'All'                				IN (:P_LEDGER||'All'))
	AND (GJH.CURRENCY_CODE            		IN (:P_ENTER_CURRENCY)
	OR  'All'                				IN (:P_ENTER_CURRENCY||'All'))
	AND GP.START_DATE						< (SELECT DISTINCT START_DATE FROM GL_PERIODS WHERE period_set_name = GL.PERIOD_SET_NAME AND PERIOD_NAME = :P_FROM_PERIOD)
	--AND GJL.ATTRIBUTE1=NVL(:P_CONTRACT,GJL.ATTRIBUTE1)
	AND (GJL.ATTRIBUTE1           				IN (:P_CONTRACT)
	OR  'All'                				IN (:P_CONTRACT||'All'))
	
	GROUP BY
	GL.NAME,
	GCC.SEGMENT1,
	GCC.SEGMENT2,
	GCC.SEGMENT3,
	GCC.SEGMENT4,
	GCC.SEGMENT5,
	GCC.SEGMENT6,
	GCC.SEGMENT7,
	GCC.SEGMENT8,
	GCC.SEGMENT9,
	GJH.CURRENCY_CODE,
	GL.CURRENCY_CODE,
	GJL.ATTRIBUTE1,
	CT.CONVERSION_RATE,
	CT.USER_CONVERSION_TYPE,
	GCC.CODE_COMBINATION_ID,
	GL.LEDGER_ID

	
	UNION
-- Rightslogic Source code
select /*+ PARALLEL(48) */
GL.NAME LEDGER_NAME,
	GCC.SEGMENT1||'-'||GCC.SEGMENT2||'-'||GCC.SEGMENT3||'-'||GCC.SEGMENT4||'-'||GCC.SEGMENT5||'-'||GCC.SEGMENT6||'-'||GCC.SEGMENT7||'-'||GCC.SEGMENT8||'-'||GCC.SEGMENT9 ACCOUNT_COMBINATION,
	GCC.SEGMENT1 ENTITY,
	GCC.SEGMENT2 SELLING_METHOD,
	GCC.SEGMENT3 COST_CENTER,
	GCC.SEGMENT4 ACCOUNT,
	GCC.SEGMENT5 LOCATION,
	GCC.SEGMENT6 BRAND,
	GCC.SEGMENT7 INTERCOMPANY,
	GCC.SEGMENT8 FUTURE1,
	GCC.SEGMENT9 FUTURE2,
	XAL.CURRENCY_CODE ENTERED_CURRENCY,
	GL.CURRENCY_CODE FUNCTIONAL_CURRENCY,
	XAL.SR36 CONTRACT,
	0 MANUAL_ENTERED,
	0 MANUAL_ACCOUNTED,
	SUM(NVL(XAL.ENTERED_DR,0) - NVL(XAL.ENTERED_CR,0)) RIGHTSLOGIC_ENTERED,
	SUM(NVL(XAL.ACCOUNTED_DR,0) - NVL(XAL.ACCOUNTED_CR,0)) RIGHTSLOGIC_ACCOUNTED,
	0 RECEIVABLES_ENTERED,
	0 RECEIVABLES_ACCOUNTED,
	CT.CONVERSION_RATE,
	CT.USER_CONVERSION_TYPE,
	
	0 BEG_BAL_ENTERED,
	0 BEG_BAL_ENTERED_RL,
	0 BEG_BAL_ENTERED_RI,
	
	0 BEG_BAL_ACCOUNTED,
	0 BEG_BAL_ACCOUNTED_RL,
	0 BEG_BAL_ACCOUNTED_RI,
	GCC.CODE_COMBINATION_ID,
	GL.LEDGER_ID

FROM
	GL_LEDGERS GL,
	XLA_AE_HEADERS XAH,
	XLA_AE_LINES XAL,
	GL_CODE_COMBINATIONS GCC,
	GL_PERIODS GP,
	CONVERSION_TBL CT
	
where 1=1
AND GL.LEDGER_ID						= XAH.LEDGER_ID	
AND XAL.AE_HEADER_ID         			= XAH.AE_HEADER_ID
AND xal.application_id = xah.application_id
AND XAL.SR35                            ='RIGHTSLOGIC'
AND XAL.CODE_COMBINATION_ID				= GCC.CODE_COMBINATION_ID
AND GCC.CHART_OF_ACCOUNTS_ID=GL.CHART_OF_ACCOUNTS_ID
AND XAL.PERIOD_NAME						= GP.PERIOD_NAME
AND GL.PERIOD_SET_NAME					= GP.PERIOD_SET_NAME
AND GL.CURRENCY_CODE					= CT.FROM_CURRENCY
AND (GL.name            				IN (:P_LEDGER)
	OR  'All'                				IN (:P_LEDGER||'All'))
	AND (XAL.CURRENCY_CODE            		IN (:P_ENTER_CURRENCY)
	OR  'All'                				IN (:P_ENTER_CURRENCY||'All'))
	AND GP.START_DATE						>= (SELECT DISTINCT START_DATE FROM GL_PERIODS WHERE period_set_name = GL.PERIOD_SET_NAME AND PERIOD_NAME = :P_FROM_PERIOD)
	AND GP.END_DATE							<= (SELECT DISTINCT END_DATE FROM GL_PERIODS WHERE period_set_name = GL.PERIOD_SET_NAME AND PERIOD_NAME = :P_TO_PERIOD)
	--AND XAL.SR36 =NVL(:P_CONTRACT,XAL.SR36)
	AND (XAL.SR36           		IN (:P_CONTRACT)
	OR  'All'                				IN (:P_CONTRACT||'All'))

GROUP BY
	GL.NAME,
	GCC.SEGMENT1,
	GCC.SEGMENT2,
	GCC.SEGMENT3,
	GCC.SEGMENT4,
	GCC.SEGMENT5,
	GCC.SEGMENT6,
	GCC.SEGMENT7,
	GCC.SEGMENT8,
	GCC.SEGMENT9,
	XAL.CURRENCY_CODE,
	GL.CURRENCY_CODE,
	XAL.SR36,
	CT.CONVERSION_RATE,
	GCC.CODE_COMBINATION_ID,
	GL.LEDGER_ID,
	CT.USER_CONVERSION_TYPE
	
	UNION 
--RIGHTSLOGIC BEGINNING BALANCE
SELECT /*+ PARALLEL(48) */
	GL.NAME LEDGER_NAME,
	GCC.SEGMENT1||'-'||GCC.SEGMENT2||'-'||GCC.SEGMENT3||'-'||GCC.SEGMENT4||'-'||GCC.SEGMENT5||'-'||GCC.SEGMENT6||'-'||GCC.SEGMENT7||'-'||GCC.SEGMENT8||'-'||GCC.SEGMENT9 ACCOUNT_COMBINATION,
	GCC.SEGMENT1 ENTITY,
	GCC.SEGMENT2 SELLING_METHOD,
	GCC.SEGMENT3 COST_CENTER,
	GCC.SEGMENT4 ACCOUNT,
	GCC.SEGMENT5 LOCATION,
	GCC.SEGMENT6 BRAND,
	GCC.SEGMENT7 INTERCOMPANY,
	GCC.SEGMENT8 FUTURE1,
	GCC.SEGMENT9 FUTURE2,
	XAL.CURRENCY_CODE ENTERED_CURRENCY,
	GL.CURRENCY_CODE FUNCTIONAL_CURRENCY,
	XAL.SR36 CONTRACT,
	0 MANUAL_ENTERED,
	0 MANUAL_ACCOUNTED,
	0 RIGHTSLOGIC_ENTERED,
	0 RIGHTSLOGIC_ACCOUNTED,
	0 RECEIVABLES_ENTERED,
	0 RECEIVABLES_ACCOUNTED,
	CT.CONVERSION_RATE,
	CT.USER_CONVERSION_TYPE,
	
	0 BEG_BAL_ENTERED,
	NVL(SUM(NVL(XAL.ENTERED_DR,0) - NVL(XAL.ENTERED_CR,0)),0)  BEG_BAL_ENTERED_RL,
	0 BEG_BAL_ENTERED_RI,
	
	0 BEG_BAL_ACCOUNTED,
	SUM(NVL(XAL.ACCOUNTED_DR,0) - NVL(XAL.ACCOUNTED_CR,0)) BEG_BAL_ACCOUNTED_RL,
	0 BEG_BAL_ACCOUNTED_RI,
	
	GCC.CODE_COMBINATION_ID,
	GL.LEDGER_ID
FROM
	GL_LEDGERS GL,
	GL_CODE_COMBINATIONS GCC,
	XLA_AE_HEADERS XAH,
	XLA_AE_LINES XAL,
	GL_PERIODS GP,
	CONVERSION_TBL CT
	--SECURITY_TBL ST
WHERE
	1=1
AND GL.LEDGER_ID						= XAH.LEDGER_ID	
AND XAL.AE_HEADER_ID         			= XAH.AE_HEADER_ID
AND xal.application_id = xah.application_id
AND XAL.SR35                            ='RIGHTSLOGIC'
AND XAL.CODE_COMBINATION_ID				= GCC.CODE_COMBINATION_ID
AND GCC.CHART_OF_ACCOUNTS_ID=GL.CHART_OF_ACCOUNTS_ID
AND XAL.PERIOD_NAME						= GP.PERIOD_NAME
AND GL.PERIOD_SET_NAME					= GP.PERIOD_SET_NAME
AND GL.CURRENCY_CODE					= CT.FROM_CURRENCY
AND (GL.name            				IN (:P_LEDGER)
	OR  'All'                				IN (:P_LEDGER||'All'))
	AND (XAL.CURRENCY_CODE            		IN (:P_ENTER_CURRENCY)
	OR  'All'                				IN (:P_ENTER_CURRENCY||'All'))
	AND GP.START_DATE						< (SELECT DISTINCT START_DATE FROM GL_PERIODS WHERE period_set_name = GL.PERIOD_SET_NAME AND PERIOD_NAME = :P_FROM_PERIOD)
	--AND XAL.SR36 =NVL(:P_CONTRACT,XAL.SR36)
	AND (XAL.SR36           		IN (:P_CONTRACT)
	OR  'All'                				IN (:P_CONTRACT||'All'))
	GROUP BY
	GL.NAME,
	GCC.SEGMENT1,
	GCC.SEGMENT2,
	GCC.SEGMENT3,
	GCC.SEGMENT4,
	GCC.SEGMENT5,
	GCC.SEGMENT6,
	GCC.SEGMENT7,
	GCC.SEGMENT8,
	GCC.SEGMENT9,
	XAL.CURRENCY_CODE,
	GL.CURRENCY_CODE,
	XAL.SR36,
	CT.CONVERSION_RATE,
	GCC.CODE_COMBINATION_ID,
	GL.LEDGER_ID,
	CT.USER_CONVERSION_TYPE
	
		UNION
-- RECEIVABLES Source code
SELECT 
/*+ PARALLEL(48) */
	GL.NAME LEDGER_NAME,
	GCC.SEGMENT1||'-'||GCC.SEGMENT2||'-'||GCC.SEGMENT3||'-'||GCC.SEGMENT4||'-'||GCC.SEGMENT5||'-'||GCC.SEGMENT6||'-'||GCC.SEGMENT7||'-'||GCC.SEGMENT8||'-'||GCC.SEGMENT9 ACCOUNT_COMBINATION,
	GCC.SEGMENT1 ENTITY,
	GCC.SEGMENT2 SELLING_METHOD,
	GCC.SEGMENT3 COST_CENTER,
	GCC.SEGMENT4 ACCOUNT,
	GCC.SEGMENT5 LOCATION,
	GCC.SEGMENT6 BRAND,
	GCC.SEGMENT7 INTERCOMPANY,
	GCC.SEGMENT8 FUTURE1,
	GCC.SEGMENT9 FUTURE2,
	XAL.CURRENCY_CODE ENTERED_CURRENCY,
	GL.CURRENCY_CODE FUNCTIONAL_CURRENCY,
	XAL.SR34 CONTRACT,
	0 MANUAL_ENTERED,
	0 MANUAL_ACCOUNTED,
	0 RIGHTSLOGIC_ENTERED,
	0 RIGHTSLOGIC_ACCOUNTED,
	SUM(NVL(XAL.ENTERED_DR,0) - NVL(XAL.ENTERED_CR,0)) RECEIVABLES_ENTERED,
	SUM(NVL(XAL.ACCOUNTED_DR,0) - NVL(XAL.ACCOUNTED_CR,0)) RECEIVABLES_ACCOUNTED,
	CT.CONVERSION_RATE,
	CT.USER_CONVERSION_TYPE,
	
	0 BEG_BAL_ENTERED,
	0 BEG_BAL_ENTERED_RL,
	0 BEG_BAL_ENTERED_RI,
	
	0 BEG_BAL_ACCOUNTED,
	0 BEG_BAL_ACCOUNTED_RL,
	0 BEG_BAL_ACCOUNTED_RI,
	
	GCC.CODE_COMBINATION_ID,
	GL.LEDGER_ID
FROM
	GL_LEDGERS GL,
	GL_CODE_COMBINATIONS GCC,
	XLA_AE_HEADERS XAH,
	XLA_AE_LINES XAL,
	GL_PERIODS GP,
	CONVERSION_TBL CT
	--SECURITY_TBL ST

WHERE
	1=1
	--AND ST.ledger_id						= GL.LEDGER_ID
	AND XAL.AE_HEADER_ID         			= XAH.AE_HEADER_ID
	AND XAL.CODE_COMBINATION_ID				= GCC.CODE_COMBINATION_ID
	AND GL.LEDGER_ID						= XAH.LEDGER_ID
	AND XAL.APPLICATION_ID					= 222
	AND XAL.SR37                            ='RIGHTSLOGIC INTERFACE'
	AND XAH.PERIOD_NAME						= GP.PERIOD_NAME
	AND GL.PERIOD_SET_NAME					= GP.PERIOD_SET_NAME
	AND GL.CURRENCY_CODE					= CT.FROM_CURRENCY
	AND (GL.name            				IN (:P_LEDGER)
	OR  'All'                				IN (:P_LEDGER||'All'))
	AND (XAL.CURRENCY_CODE            		IN (:P_ENTER_CURRENCY)
	OR  'All'                				IN (:P_ENTER_CURRENCY||'All'))
	AND GP.START_DATE						>= (SELECT DISTINCT START_DATE FROM GL_PERIODS WHERE period_set_name = GL.PERIOD_SET_NAME AND PERIOD_NAME = :P_FROM_PERIOD)
	AND GP.END_DATE							<= (SELECT DISTINCT END_DATE FROM GL_PERIODS WHERE period_set_name = GL.PERIOD_SET_NAME AND PERIOD_NAME = :P_TO_PERIOD)
	--AND XAL.SR34 =NVL(:P_CONTRACT,XAL.SR34)
	AND (XAL.SR34            		IN (:P_CONTRACT)
	OR  'All'                				IN (:P_CONTRACT||'All'))
   

GROUP BY
	GL.NAME,
	GCC.SEGMENT1,
	GCC.SEGMENT2,
	GCC.SEGMENT3,
	GCC.SEGMENT4,
	GCC.SEGMENT5,
	GCC.SEGMENT6,
	GCC.SEGMENT7,
	GCC.SEGMENT8,
	GCC.SEGMENT9,
	XAL.CURRENCY_CODE,
	GL.CURRENCY_CODE,
	XAL.SR34,
	CT.CONVERSION_RATE,
	GCC.CODE_COMBINATION_ID,
	GL.LEDGER_ID,
	CT.USER_CONVERSION_TYPE
	
	UNION
--RECEIVALES BEGINNING BALANCE

SELECT 
/*+ PARALLEL(48) */
	GL.NAME LEDGER_NAME,
	GCC.SEGMENT1||'-'||GCC.SEGMENT2||'-'||GCC.SEGMENT3||'-'||GCC.SEGMENT4||'-'||GCC.SEGMENT5||'-'||GCC.SEGMENT6||'-'||GCC.SEGMENT7||'-'||GCC.SEGMENT8||'-'||GCC.SEGMENT9 ACCOUNT_COMBINATION,
	GCC.SEGMENT1 ENTITY,
	GCC.SEGMENT2 SELLING_METHOD,
	GCC.SEGMENT3 COST_CENTER,
	GCC.SEGMENT4 ACCOUNT,
	GCC.SEGMENT5 LOCATION,
	GCC.SEGMENT6 BRAND,
	GCC.SEGMENT7 INTERCOMPANY,
	GCC.SEGMENT8 FUTURE1,
	GCC.SEGMENT9 FUTURE2,
	XAL.CURRENCY_CODE ENTERED_CURRENCY,
	GL.CURRENCY_CODE FUNCTIONAL_CURRENCY,
	XAL.SR34 CONTRACT,
	0 MANUAL_ENTERED,
	0 MANUAL_ACCOUNTED,
	0 RIGHTSLOGIC_ENTERED,
	0 RIGHTSLOGIC_ACCOUNTED,
	0 RECEIVABLES_ENTERED,
	0 RECEIVABLES_ACCOUNTED,
	CT.CONVERSION_RATE,
	CT.USER_CONVERSION_TYPE,
	
	0 BEG_BAL_ENTERED,
	0 BEG_BAL_ENTERED_RL,
	SUM(NVL(XAL.ENTERED_DR,0) - NVL(XAL.ENTERED_CR,0)) BEG_BAL_ENTERED_RI,
	
	0 BEG_BAL_ACCOUNTED,
	0 BEG_BAL_ACCOUNTED_RL,
	SUM(NVL(XAL.ACCOUNTED_DR,0) - NVL(XAL.ACCOUNTED_CR,0)) BEG_BAL_ACCOUNTED_RI,
	GCC.CODE_COMBINATION_ID,
	GL.LEDGER_ID
	
FROM
	GL_LEDGERS GL,
	GL_CODE_COMBINATIONS GCC,
	XLA_AE_HEADERS XAH,
	XLA_AE_LINES XAL,
	GL_PERIODS GP,
	CONVERSION_TBL CT
	--SECURITY_TBL ST
WHERE
	1=1
	--AND ST.ledger_id						= GL.LEDGER_ID
	AND XAL.AE_HEADER_ID         			= XAH.AE_HEADER_ID
	AND XAL.CODE_COMBINATION_ID				= GCC.CODE_COMBINATION_ID
	AND GL.LEDGER_ID						= XAH.LEDGER_ID
	AND XAL.APPLICATION_ID					= 222
	AND XAL.SR37                            ='RIGHTSLOGIC INTERFACE'
	AND XAH.PERIOD_NAME						= GP.PERIOD_NAME
	AND GL.PERIOD_SET_NAME					= GP.PERIOD_SET_NAME
	AND GL.CURRENCY_CODE					= CT.FROM_CURRENCY
	AND (GL.name            				IN (:P_LEDGER))
	AND (XAL.CURRENCY_CODE            		IN (:P_ENTER_CURRENCY)
	OR  'All'                				IN (:P_ENTER_CURRENCY||'All'))
	AND GP.START_DATE						< (SELECT DISTINCT START_DATE FROM GL_PERIODS WHERE period_set_name = GL.PERIOD_SET_NAME AND PERIOD_NAME = :P_FROM_PERIOD)
	AND (XAL.SR34            		IN (:P_CONTRACT)
	OR  'All'                				IN (:P_CONTRACT||'All'))
	--AND XAL.SR34 =NVL(:P_CONTRACT,XAL.SR34)
	

GROUP BY
	GL.NAME,
	GCC.SEGMENT1,
	GCC.SEGMENT2,
	GCC.SEGMENT3,
	GCC.SEGMENT4,
	GCC.SEGMENT5,
	GCC.SEGMENT6,
	GCC.SEGMENT7,
	GCC.SEGMENT8,
	GCC.SEGMENT9,
	XAL.CURRENCY_CODE,
	GL.CURRENCY_CODE,
	XAL.SR34,
	CT.CONVERSION_RATE,
	CT.USER_CONVERSION_TYPE,
	GCC.CODE_COMBINATION_ID,
	GL.LEDGER_ID
)
	WHERE 1=1
	AND (ENTITY )		BETWEEN (:P_ENTITY_FROM ) AND (:P_ENTITY_TO )
	AND (SELLING_METHOD)		BETWEEN (:P_SELL_METHOD_FROM ) AND (:P_SELL_METHOD_TO )
	AND (COST_CENTER )		BETWEEN (:P_COST_CENTER_FROM ) AND (:P_COST_CENTER_TO )
	AND (ACCOUNT)		BETWEEN (:P_ACCOUNT_FROM ) AND (:P_ACCOUNT_TO )
	AND (LOCATION )		BETWEEN (:P_LOCATION_FROM ) AND (:P_LOCATION_TO )
	AND (BRAND)		BETWEEN (:P_BRAND_FROM ) AND (:P_BRAND_TO )
	AND (INTERCOMPANY )		BETWEEN (:P_INTERCO_FROM ) AND (:P_INTERCO_TO )
	GROUP BY
	LEDGER_NAME,
	ACCOUNT_COMBINATION,
	ENTITY,
	SELLING_METHOD,
	COST_CENTER,
	ACCOUNT,
	LOCATION,
	BRAND,
	INTERCOMPANY,
	FUTURE1,
	FUTURE2,
	ENTERED_CURRENCY,
	FUNCTIONAL_CURRENCY,
	CONTRACT,
	CONVERSION_RATE,
	USER_CONVERSION_TYPE
)
WHERE 1=1
--AND (BEG_BAL_ACCOUNTED+RIGHTSLOGIC_ACCOUNTED+RECEIVABLES_ACCOUNTED+MANUAL_ACCOUNTED) <> 0
AND (:TEMPLATE_TYPE)='Summary'
GROUP BY
LEDGER_NAME,
	ACCOUNT_COMBINATION,
	ENTITY,
	SELLING_METHOD,
	COST_CENTER,
	ACCOUNT,
	LOCATION,
	BRAND,
	INTERCOMPANY,
	FUTURE1,
	FUTURE2,
	ENTERED_CURRENCY,
	FUNCTIONAL_CURRENCY,
	CONTRACT,
	CONVERSION_RATE,
	USER_CONVERSION_TYPE]]>
:P_ACCOUNT_FROM :P_ACCOUNT_TO :P_BRAND_FROM :P_BRAND_TO :P_CONTRACT :P_CONVERSION_TYPE :P_COST_CENTER_FROM :P_COST_CENTER_TO :P_ENTER_CURRENCY :P_ENTITY_FROM :P_ENTITY_TO :P_FROM_PERIOD :P_INTERCO_FROM :P_INTERCO_TO :P_LEDGER :P_LOCATION_FROM :P_LOCATION_TO :P_RATE_DATE :P_SELL_METHOD_FROM :P_SELL_METHOD_TO :P_TO_PERIOD :TEMPLATE_TYPE

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

GL_CODE_COMBINATIONSdimensionGL_DAILY_RATESdimensionGL_LEDGERSdimensionGL_BALANCESfact · one row per source transactionCost Center · Balance
●— fact → dimension join
ElementTypeDefinition
GL_CODE_COMBINATIONSdimensiondimension
GL_DAILY_RATESdimensiondimension
GL_LEDGERSdimensiondimension
Cost Centermeasuremeasure
Balancemeasuremeasure
Runs on your cloud warehouse — Snowflake, BigQuery, Redshift, or Synapse on AWS, Google Cloud, Azure, or any provider. Reconciled to the source control total — 0% variance by design. You own the code, the model, and the data.
How the data gets here: a BICC bulk extract of the source tables above, on the same pattern for every report. See the extraction pattern & data flow →
See the complete model
How this report's fact and dimensions fit the full picture, via conformed keys.
General Ledger data model →Enterprise model →

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.

TableReporting columnsSubject areas
GL_BALANCESSetup / configuration table — joined for reference, not exposed for analytics
GL_CODE_COMBINATIONS761
GL_DAILY_RATES110
GL_LEDGERS10104
Reporting columns = fields the report selects that are exposed as analytics attributes; subject areas = the OTBI subject areas the table appears in. Setup and configuration tables (master data, ledger and book setup, lookups) are referenced by the report's joins but aren't exposed as analytics columns or subject areas — that's expected, not a gap.