子分类账知识学习(汇总网上比较有用的资料)

子模块和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

--根据GL信息找到相关的ae_header_id,ae_line_num,je_source
    --特别注意,这里可能存在一对多关系
    --一对多在业务上表现为汇总过帐
    selectxal.ae_header_id,xal.ae_line_num,jh.je_source
    from gl_je_lines jl,
    gl_je_headers jh,
    gl_import_references gir,
    xla_ae_lines xal
    wherejl.je_header_id=gir.je_header_id
    and jh.je_header_id=jl.je_header_id
    andjl.je_line_num=gir.je_line_num
    andgir.gl_sl_link_id=xal.gl_sl_link_id
    andgir.gl_sl_link_table=xal.gl_sl_link_table
    and jl.je_header_id=:1
    and jl.je_line_num=:2
    --根据je_header_id找到相应的会计实体,主要是需要实体代码和几个source_id
    --通过source_id…和entity_code的组合判断,可以准确的追溯到具体的事物处理
    select xte.entity_code
    ,xte.source_id_int_1
    ,……
    ,xte.source_id_char_1
    ,……
    ,xte.security_id_int_1
    ,xte.security_id_int_2
    ……
    fromxla.xla_transaction_entities xte,
    xla_ae_headers xah
    where xah.ae_header_id=:1
    andxte.entity_id=xah.entity_id
    andxte.application_id=xah.application_id
    --根据日记帐来源查询xla_subledgers表获得drilldown的程序
    --由于这部分是写死的,因此,对程序员来说,只能做参考
    --至于怎么写的灵活和通用,还需要参考琢磨写成一个通用的动态SQL
    selectxs.drilldown_procedure_name
    from xla.xla_subledgers xs
    wherexs.je_source_name=:je_source_name
    andxs.application_id=:application_id
    --上面的信息查询出来后,组合成一个动态SQL,返回一个准确的结果集
    --当然,通常情况下,我们都没有考虑写成通用程序,因此可以写死是
    --哪些会计事件,会计实体代码
    END;
    一个简单的列子(收款和总帐凭证对应报表,简单写死事件实体)
    SELECT CR.CASH_RECEIPT_ID   CASH_RECEIPT_ID,
   CR.DOCUMENT_NUMBER    GATHER_NUM,
    JH.DOC_SEQUENCE_VALUEDOC_SEQUENCE_VALUE,
   CR.CUSTOMER_NAME      CUSTOMER_NAME,
    CR.REMIT_BANK_BRANCHBANK_NAME,
    CR.REMIT_BANK_ACCOUNTBANK_ACCOUNT,
   CR.RECEIPT_NUMBER     RECEIPT_NUMBER,
   CR.AMOUNT            AMOUNT,
   CR.STATE_DSP          STATE_DSP,
   H.EVENT_TYPE_CODE     EVENT_TYPE_CODE
    FROMXLA_AE_LINES                L,
   XLA_AE_HEADERS              H,
    XLA.XLA_TRANSACTION_ENTITIESTE,
   GL_IMPORT_REFERENCES         IR,
   GL_JE_HEADERS               JH,
   AR_CASH_RECEIPTS_V          CR
    WHERE CR.CASH_RECEIPT_ID =TE.SOURCE_ID_INT_1(+)
    AND CR.CURRENCY_CODE =P_CURRENCY
    AND TE.ENTITY_CODE(+) = 'RECEIPTS'
    AND TE.ENTITY_ID =H.ENTITY_ID(+)
    AND TE.APPLICATION_ID =H.APPLICATION_ID(+)
    AND H.AE_HEADER_ID =L.AE_HEADER_ID(+)
    AND H.APPLICATION_ID =L.APPLICATION_ID(+)
    AND L.GL_SL_LINK_TABLE =IR.GL_SL_LINK_TABLE(+)
    AND L.GL_SL_LINK_ID =IR.GL_SL_LINK_ID(+)
    AND IR.JE_HEADER_ID =JH.JE_HEADER_ID(+)
    AND L.AE_LINE_NUM(+) = 1
    ANDH.ACCOUNTING_ENTRY_STATUS_CODE(+) = 'F'

    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

--付款分录

子分类账知识学习(汇总网上比较有用的资料)_第1张图片

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'

子分类账知识学习(汇总网上比较有用的资料)_第2张图片

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

四、成本管理

子分类账知识学习(汇总网上比较有用的资料)_第3张图片

--库存

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

子分类账知识学习(汇总网上比较有用的资料)_第4张图片

--接收

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:这里能区分成本的来源

子分类账知识学习(汇总网上比较有用的资料)_第5张图片

子分类账知识学习(汇总网上比较有用的资料)_第6张图片




你可能感兴趣的:(子分类账知识学习(汇总网上比较有用的资料))