子模块和GL之间关联的变化
12i在功能模块上的变化很多,比如,基本每个模块都启用了MOAC特性,新增加了子帐模块,税模块等等很多新的模块,OPM库存和离散库存集成了。不过这些变化中,大部分不是我们需要重点关注的,不过有一个东西需要重点关注那就是子帐模块。子帐模块功能非常强大,现在所有的子模块会计分录都可以使用特定的公式配置出来。但是对技术而言,我们不太关心如何配置生成会计分录,我们只关心子模块的会计分录和GL的会计分路之间的关联性,以方便我们做子模块和GL的对应报表。然而,现在如果你要做对应报表,你就必须要了解子帐。因此,在这里重点只介绍子帐。
子帐的概念——SLA(Subledger Accounting)
概念
子帐是子分类帐会计的简称,字面上的含义就是子分类帐会计分录,但是这东西到底用来干吗的呢?!
通俗的说:
1、子分类帐会计其实就是连接子模块会计和GL凭证之间的桥梁,更简单的说,就是子模块和GL之间的桥梁。所有子模块(包括FA)产生的会计分录都是使用SLA产生的,存放在SLA的表中,然后通过过帐程序过帐到GL。有点类gl_interface表的功能。
2、子分类帐会计的第二层意思:在各个子模块都有一套独立的会计分录,看起来跟GL其实没太大区别,这就意味着在子模块其实就可以计算科目余额了。只是可惜,到目前为止我还没有类似gl_balance的表来存放科目余额。
3、各子模块目前还是可以有自己的分配帐户(就是以前查看会计科目看到的东西),分别存放在自己的分配表中,比如,AP还是存放在ap_invoices_distributions中,引入SLA后,把这个功能称为“事物处理会计”,和子分类帐会计的不同点在于,事物处理会计是通过自动会计或分配产生,而子分类帐会计是根据定义会计事件等公式产生的,分别存于不同的地方。
子帐架构
解释:
1、 子分类帐的产生有两种方式,一种方式是直接从子模块的事物处理会计,一种是直接从子模块的事物处理上取得。
2、 子模块的事物处理会计和子分类帐会计是两个不同的东西,一定要区别对待,传送到GL的是子分类帐会计,并非事物处理会计。
3、 由于子分类帐会计的来源可能是事物处理,也可能是事物处理会计,因此很可能存在差异,这是SLA目前的缺陷。
子分类帐带来的益处
1、 灵活的定义会计分录的产生规则,包括摘要,借方和贷方
2、 一个事物处理可以过帐到多个ledger(就是11i的帐簿),这给跨国集团管理多个帐簿带来很大的好处
3、 统一了子模块会计分录的存放和产生规则,也就是说,各个子模块都可以根据自身的情况设置会计规则,但是这些规则产生的会计分录都回存放在SLA的表中。
4、 利于扩展,ORACLE委托外包的子模块产生的会计分录更容易集成到EBS
SLA的几个重要关键词
SLA的关键词有很多,不过和我们写程序密切相关的应该是下面几个关键词。这几个关键词是我们弄清楚子模块和GL之间的关键。如果理解了这几关键词在SLA中的具体位置以及作用,加上SLA的的架构图,很容易的就理解了SLA作为子模块和GL的桥梁作用,对过帐程序具有深刻的理解,便于我们以后编写追溯程序以及追溯报表。
会计事件(account event)
会计事件,就是一个事物处理的不同事件类型产生的记录,它结合了主要分类帐,事件类型,事件分类。一个事物处理可能会有多个会计时间,因为一个事物处理可能发生多种动作,而每个动作都需要产生相应的会计凭证。因此,我们可以把一个会计事件看成是一张完整的凭证,我们把这张凭证录入到子模块的会计分录表里就形成了完整的会计分录。所以,我对会计事件的理解通俗归纳为以下几点:
1、 会计事件就相当于一张凭证,录入到GL就是一对会计分录
2、 同一个事物处理,比如收款可能会对应多个会计事件,因为收款创建会产生会计事件,收款核销也是一个会计事件。
查看路径:子模块超级用户/查询/会计事件
主要分类帐(leadger)
分类帐的概念在12i中表示的是帐簿,也就是11i的SOB,主要分类帐决定了过帐到哪个SOB
事件实体(EVENT ENTITY)
事件实体决定了会计分录来源,以应收为例子,事件实体决定了到底是从 “应收事物处理”过来的还是从“收款”过来的。存放在表:xla_entity_types_vl中,会计分录和事物处理关联的表是是xla_transaction_entities ,事件实体同时定义了关联的标识是哪个字段,存放在xla_entity_id_mappings,下面我会详细介绍怎么做关联。
设置路径路径:子模块超级用户/设置/会计/子分类帐会计/事件/事件模型
事件分类(EVENT CLASS)
事件分类是根据事件实体进一步区分会计分录的方法。比如,收款分为“收款”和“杂项收款”,事件分类的表为:xla_event_classes_v,属于xla_transaction_entities的子表。
设置路径路径:子模块超级用户/设置/会计/子分类帐会计/事件/事件模型
事件类型(EVENT TYPE)
事件类型是比事件分类更小的事件划分方法,每个事件分类会细分成多个事件类型。比如:收款会分成:收款已核销,收款未核销,收款已更新等等类型。存放在表:xla_event_types_vl中。
设置路径路径:子模块超级用户/设置/会计/子分类帐会计/事件/事件模型
SLA&GL关系模型
关联模型中,实际参与的表很多,我们只拿最重要的表来描述,以便大家入门,不至于摸不着头脑,力求简单。
基础事件关系图
xla_entity_types_vl(事件实体)
|――xla_entity_id_mappings(实体ID对应表)
|――xla_event_classes_v(事件分类)
|――xla_event_types_vl(事件类型)
子分类帐关系图
xla_transaction_entities(会计事物处理实体)
|――xla_events(会计事件)
|――xla_ae_headers(子帐头)
|――xla_ae_lines(子帐行)
|――xla_distribution_links(关联事物处理信息)
子模块和GL关系图
gl_import_references(总帐参考)
|(gl_sl_link_id,gl_sl_link_table)
xla_ae_lines(子帐行)
说明:GL和子模块之间的关联是通过gl_import_reference实现的,关键字段是 gl_sl_link_id,gl_sl_link_table。
GL->子模块追溯
伪代码
begin
AND H.ACCOUNTING_DATE BETWEENTRUNC(P_START_DATE) AND (TRUNC(P_END_DATE) + 86399 / 86400)
SLA
子分类帐与子模块的关联关系
SLA
子分类帐与子模块的关联关系
SLA子分类帐与子模块的关联关系一、应付帐款
--发票分录
select ai.INVOICE_NUM, xal.*
from AP_INVOICES_ALL ai,
XLA_TRANSACTION_ENTITIES xte,
xla_events xe,
XLA_AE_HEADERS xah,
XLA_AE_LINES xal
where ai.SET_OF_BOOKS_ID = 2027
and ai.SET_OF_BOOKS_ID = xte.LEDGER_ID
andai.INVOICE_ID = xte.SOURCE_ID_INT_1
and ai.INVOICE_NUM = '4600060381@2012_1500000511_2'
and xte.ENTITY_ID = xe.ENTITY_ID
and xe.EVENT_ID = xah.EVENT_ID
and xal.AE_HEADER_ID = xah.AE_HEADER_ID
--付款分录
select ac.CHECK_NUMBER, xal.*
from AP_INVOICES_ALL ai,
AP_INVOICE_PAYMENTS_ALL aip,
AP_CHECKS_ALL ac,
XLA_TRANSACTION_ENTITIES xte,
xla_events xe,
XLA_AE_HEADERS xah,
XLA_AE_LINES xal
where ai.SET_OF_BOOKS_ID =’&sob_id’
and ai.SET_OF_BOOKS_ID = xte.LEDGER_ID
andac.check_id = xte.SOURCE_ID_INT_1
and ai.INVOICE_NUM = '&INVOICE_NUM '
and xte.ENTITY_ID = xe.ENTITY_ID
and xe.EVENT_ID = xah.EVENT_ID
and xal.AE_HEADER_ID = xah.AE_HEADER_ID
and ai.INVOICE_ID=aip.INVOICE_ID
and aip.CHECK_ID=ac.CHECK_ID
二、应收帐款
select rct.TRX_NUMBER,xah.* from RA_CUSTOMER_TRX_ALL rct , XLA_TRANSACTION_ENTITIES xte, xla_events xe, XLA_AE_HEADERS xah, xla_ae_lines xal
where rct.SET_OF_BOOKS_ID=2027 and rct.CUSTOMER_TRX_ID=22206
and rct.SET_OF_BOOKS_ID=xte.LEDGER_ID and xte.SOURCE_ID_INT_1=rct.CUSTOMER_TRX_ID and xte.ENTITY_ID=xe.ENTITY_ID and xe.EVENT_ID=xah.EVENT_ID
and xah.AE_HEADER_ID=xal.AE_HEADER_ID
-- and xah.PERIOD_NAME='&period_name'
For internal use ONLY
~ 3 ~
正常收款
select arc.RECEIPT_NUMBER,xal.* from AR_CASH_RECEIPTS_ALL arc , XLA_TRANSACTION_ENTITIES xte, xla_events xe, XLA_AE_HEADERS xah, xla_ae_lines xal
where arc.SET_OF_BOOKS_ID=xte.LEDGER_ID and xte.SOURCE_ID_INT_1=arc.CASH_RECEIPT_ID and xte.ENTITY_ID=xe.ENTITY_ID and xe.EVENT_ID=xah.EVENT_ID
and xah.AE_HEADER_ID=xal.AE_HEADER_ID and arc.CASH_RECEIPT_ID=1348516
杂项收款
select arc.RECEIPT_NUMBER,xal.* from AR_CASH_RECEIPTS_ALL arc ,
AR_MISC_CASH_DISTRIBUTIONS_ALL amc, XLA_TRANSACTION_ENTITIES xte, xla_events xe, XLA_AE_HEADERS xah, xla_ae_lines xal
where arc.SET_OF_BOOKS_ID=xte.LEDGER_ID and xte.SOURCE_ID_INT_1=arc.CASH_RECEIPT_ID and arc.CASH_RECEIPT_ID=amc.CASH_RECEIPT_ID and xte.ENTITY_ID=xe.ENTITY_ID and xe.EVENT_ID=xah.EVENT_ID
and xah.AE_HEADER_ID=xal.AE_HEADER_ID and arc.CASH_RECEIPT_ID=51815 and xte.APPLICATION_ID=222
三、资产
FA_DEPRN_DETAIL_H折旧回滚表
FA_DEPRN_EVENTS 折旧事件表
注:R12回滚是基于资产卡片,R11I回滚是基于资产帐簿
--资产折旧
select fa.TAG_NUMBER, fdp.PERIOD_NAME, xal.*
from FA_ADDITIONS_B fa,
FA_DEPRN_DETAIL fdd,
FA_DEPRN_PERIODS fdp,
XLA_TRANSACTION_ENTITIES xte,
xla_events xe,
XLA_AE_HEADERS xah,
XLA_AE_LINES xal
where fa.TAG_NUMBER = '&TAG_NUMBER '
and fa.ASSET_ID = fdd.ASSET_ID
and xte.SOURCE_ID_INT_1 = fdd.ASSET_ID
and xte.SOURCE_ID_CHAR_1 = fdd.BOOK_TYPE_CODE
and xte.SOURCE_ID_INT_2 = fdd.PERIOD_COUNTER
and xte.SOURCE_ID_INT_3 = fdd.DEPRN_RUN_ID
and fdp.BOOK_TYPE_CODE = fdd.BOOK_TYPE_CODE
and fdp.PERIOD_COUNTER = fdd.PERIOD_COUNTER
and xte.ENTITY_ID = xe.ENTITY_ID
and xah.EVENT_ID = xe.EVENT_ID
and xah.AE_HEADER_ID = xal.AE_HEADER_ID
--资产事务
select xe.EVENT_TYPE_CODE,xah.EVENT_TYPE_CODE,xal.*
from FA_TRANSACTION_HEADERS fth,
XLA_TRANSACTION_ENTITIES xte,
xla_events xe,
XLA_AE_HEADERS xah,
XLA_AE_LINES xal
wherefth.TRANSACTION_HEADER_ID=xte.SOURCE_ID_INT_1
and xte.ENTITY_ID = xe.ENTITY_ID
and xah.EVENT_ID = xe.EVENT_ID
and xah.AE_HEADER_ID = xal.AE_HEADER_ID
and fth.ASSET_ID=15008335
FA_ASSET_HISTORY
Description: |
Historical information about asset reclassifications and unit adjustments |
四、成本管理
--库存
select xe.EVENT_TYPE_CODE, xah.EVENT_TYPE_CODE, xal.*
from MTL_TRANSACTION_ACCOUNTS mta,
XLA_TRANSACTION_ENTITIES xte,
xla_events xe,
XLA_AE_HEADERS xah,
xla_ae_lines xal
where mta.ORGANIZATION_ID = 277
and mta.TRANSACTION_ID = xte.SOURCE_ID_INT_1
and mta.ORGANIZATION_ID = xte.SOURCE_ID_INT_2
and mta.TRANSACTION_SOURCE_TYPE_ID = xte.SOURCE_ID_INT_3
and mta.TRANSACTION_ID = 9871318
and xte.ENTITY_ID = xe.ENTITY_ID
and xe.EVENT_ID = xah.EVENT_ID
and xah.AE_HEADER_ID = xal.AE_HEADER_ID
--接收
select xte.ENTITY_CODE, xah.EVENT_TYPE_CODE, rae.EVENT_SOURCE, xal.*
from RCV_TRANSACTIONS rt,
RCV_ACCOUNTING_EVENTS rae,
XLA_TRANSACTION_ENTITIES xte,
xla_events xe,
XLA_AE_HEADERS xah,
xla_ae_lines xal
whererae.RCV_TRANSACTION_ID = xte.SOURCE_ID_INT_1
and rae.ACCOUNTING_EVENT_ID = xte.SOURCE_ID_INT_2
and rt.ORGANIZATION_ID = xte.SOURCE_ID_INT_3
and rt.TRANSACTION_ID = 498557
pa_cost_distribution_lines_all有单独的会计分录产生(仅限于PA模块,如果来源其它模块,此表会记录,但分录在其它模块。关联xla_events),如果是来源库存的,SYSTEM_REFERENCE5是关联mtl_transaction_accounts中的INV_SUB_LEDGER_ID;如果来源接收,SYSTEM_REFERENCE5是关联RCV_RECEIVING_SUB_LEDGER中的RCV_SUB_LEDGER_ID
PA_COST_DISTRIBUTION_LINES_ALL
SYSTEM_REFERENCE5 This column refers to a record in another application. When the
cost distribution line is related to Oracle Payables transactions, it holds AP_INVOICE_DISTRIBUTIONS_ALL.
INVOICE_DISTRIBUTION_ID. When the cost distribution line is related to manufacturing or receiving transactions, it holds the debit subledger identifier. This column is not used for labor or usage transactions.
PA_EXPENDITURE_ITEMS_ALL
DOCUMENT_HEADER_ID
This column refers to a header-level record identifier in another application. If the expenditure item originated in Oracle Payables, it holds the AP_INVOICES_ALL.INVOICE_ID. If the expenditure item originated in Oracle Purchasing, it holds the PO_HEADERS_ALL.PO_HEADER_ID. This column is not used for labor and usage expenditure items.
DOCUMENT_DISTRIBUTION_ID
This column refers to a distribution-level record identifier in another application. If the expenditure item originated in Oracle Payables, it holds the
AP_INVOICE_DISTRIBUTIONS_ALL.INVOICE_DISTRIBUTION_ID. If the expenditure item originated in Oracle Purchasing, it holds the
RCV_TRANSACTIONS.TRANSACTION_ID. This column is not used for labor and usage expenditure items.
DOCUMENT_LINE_NUMBER This column refers to a line-level record identifier in another
application. If the expenditure item originated in Oracle Payables, it holds the
AP_INVOICE_LINES_ALL.LINE_NUMBER. If the expenditure item originated in Oracle Purchasing, it holds the PO_DISTRIBUTIONS_ALL.PO_DISTRIBUTION_ID. This column is not used for labor and usage expenditure items.
DOCUMENT_PAYMENT_ID This column refers to the payment record identifier in Oracle
Payables. It holds the
AP_PAYMENT_DISTRIBUTIONS_ALL.PAYMENT_ID. This column is only populated when you enable cash basis
accounting or, for payment discounts, when you use accrual basis accounting. This column is not used for labor and usage expenditure items.
VENDOR_ID
This column indicates the vendor identifier for supplier cost transactions. If the expenditure item originated in Oracle Payables, it holds the AP_INVOICES_ALL.VENDOR_ID. If the expenditure item originated in Oracle Purchasing, it holds the PO_HEADERS_ALL.VENDOR_ID. This column is not used for labor and usage expenditure items.
TRANSACTION_SOURCE
来源PA_TRANSACTION_SOURCE:这里能区分成本的来源