標籤:
http://www.cnblogs.com/bruce_zhao/p/3809886.html
Oracle Ebs R12 SLA與GL關係變化
SLA概念:SLA(Subledger Accounting) 子帳是子分類帳會計的簡稱,字面上的含義就是子分類帳會計分錄
SLA&GL關係:
R12功能模組上面都啟用了MOAC特性,新增了子模組和稅模組,OPM和離散庫存也整合了,所有的子模組會計分錄都可以使用特定的公司配置出來;之間的關係分位三種:
1、子分類帳會計其實就是串連子模組會計和GL憑證之間的橋樑。就是子模組和GL之間的橋樑。所有子模組(包括FA)產生的會計分錄都是使用SLA產生的,存放在SLA的表中,然後通過過帳程式過帳到GL。有點類gl_interface表的功能。
2、子分類帳會計的第二層意思:在各個子模組都有一套獨立的會計分錄,看起來跟GL其實沒太大區別,這就意味著在子模組其實就可以計算帳戶餘額了。只是可惜,到目前為止我還沒有類似gl_balance的表來存放帳戶餘額。
3、各子模組目前還是可以有自己的分配帳戶(就是以前查看會計科目看到的東西),分別存放在自己的分配表中,比如,AP還是存放在ap_invoices_distributions中,引入SLA後,把這個功能稱為“事物處理會計”,和子分類帳會計的不同點在於,事物處理會計是通過自動會計或分配產生,而子分類帳會計是根據定義會計事件等公式產生的,分別存於不同的地方。
SLA&GL關聯式模式 關聯模型,
1、 子分類帳的產生有兩種方式,一種方式是直接從子模組的事物處理會計,一種是直接從子模組的事物處理上取得。
2、 子模組的事物處理會計和子分類帳會計是兩個不同的東西,一定要區別對待,傳送到GL的是子分類帳會計,並非事物處理會計。
3、 由於子分類帳會計的來源可能是事物處理,也可能是事物處理會計,因此很可能存在差異,這是SLA目前的缺陷。
SLA帶來的益處
1、 靈活的定義會計分錄的產生規則,包括摘要,借方和貸方
2、 一個事物處理可以過帳到多個ledger(就是11i的帳簿),這給跨國集團管理多個帳簿帶來很大的好處
3、 統一了子模組會計分錄的存放和產生規則,也就是說,各個子模組都可以根據自身的情況設定會計規則,但是這些規則產生的會計分錄都回存放在SLA的表中。
4、 利於擴充,ORACLE委託外包的子模組產生的會計分錄更容易整合到EBS SLA的幾個重要關鍵詞
基礎事件關係圖
SLA中的關鍵詞
會計事件(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 中。
設定路徑路徑:子模組超級使用者/設定/會計/子分類帳會計/事件/事件模型
基礎事件關係圖
xla_entity_types_vl(事件實體)
|――xla_entity_id_mappings(實體ID對應表)
|――xla_event_classes_vl(事件分類)
|――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->子模組追溯
前面的都是業務方面的,現在進行技術簡析,更多的內容還在整理中。
在SLA中技術方面最常用的就是日記帳來源追溯,在追溯的過程中從GL到SLA和11i差別不大,
使通過gl_import_references表來進行,該表的je_batch_id,je_header_id,je_line_num
是和GL關聯,該表欄位gl_sl_link_id是和SLA中的行表(XLA_AE_LINES)關聯,
在SLA中重要的幾張表如下:
xla_transaction_entities:The table XLA_ENTITIES contains information about
sub-ledger document or transactions.
XLA_EVENTS:The XLA_EVENTS table record all information related to a specific
event. This table is created as a type XLA_ARRAY_EVENT_TYPE.
XLA_AE_HEADERS:The XLA_AE_HEADERS table stores subledger journal entries.
There is a one-to-many relationship between accounting events and journal entry headers.
XLA_AE_LINES:The XLA_AE_LINES table stores the subledger journal entry lines.
There is a one-to-many relationship between subledger journal entry headers and subledger
journal entry lines
XLA_DISTRIBUTION_LINKS:The XLA_DISTRIBUTION_LINKS table stores the link between
transactions and subledger journal entry lines.
在一個系統PKG中有如下結構的插值語句,從而可以清楚的得出幾個表之間的聯絡:
Insert All When (Line_Id = 1) ThenInto Xla_Transaction_Entities (Upg_Batch_Id , Entity_Id, ……)Values (……) Into Xla_Events (Upg_Batch_Id, Entity_Id, Event_Id, ……)Values (……)Into Xla_Ae_Headers (Upg_Batch_Id, Entity_Idnt_Id , Ae_Header_Id , ……)Values (……) When (1 = 1) Then Into Xla_Ae_Lines (Upg_Batch_Id, Ae_Header_Id, Ae_Line_Num, ……)Values (……)Into Xla_Distribution_Links (Upg_Batch_Id , Event_Id, Ae_Header_Id, Ae_Line_Num , ……)Values (……) Select …… From ……;
上面提到的gl_import_references.gl_sl_link_id欄位就是和xla_ae_lines.gl_sl_link_id欄位關聯,在這些表中和子模組關聯的欄位在xla_transaction_entities中,該表中有如下形式的欄位
源表關聯欄位
source_id_int_num 對應的源ID 例如:ap_invoices_all
source_id_char_num
這兩個欄位是用來和源模組關聯,該欄位的設定是在各個子模組:
路徑是:設定->會計科目設定->子分類帳會計設定->會計方法產生器->事件->事件模型
介面如下:該介面的實體代碼就是對應xla_transaction_entities表中的ENTITY_CODE欄位,每個來源就標示了該子分類帳是哪個模組產生的。
點擊[標示]進入如下介面:該介面中的實體表欄欄位時子模組相關源表的欄位,標示列就是SLA中
xla_transaction_entities表的列,SLA和字模組的聯絡就是通過該介面的設定來完成的。
安全性控制欄位
security_id_char_num
security_id_int_num
這兩個欄位是用來進行安全驗證,資料屏蔽使用
xla_transaction_entities是有VDP驗證的表,各個模組使用的策略函數是
通過設定>>會計科目設定>>子分類帳會計設定>>子分類帳應用產品 來設定的,
如AP模組使用的是:XLA_SECURITY_POLICY_PKG.MO_POLICY,在該方法中有一句很重要
View Code
一般的MOAC
VPD使用的欄位時ORG_ID該處是將ORG_ID替換為security_id_int_1,很明顯了
現在分析了GL和SLA以及 SLA和字模組之間聯絡,在加上上面的那段插值代碼中對應的表關係,就很容易整理
出常見的追溯關係了,可能也有特殊情況沒有涉及到。
下面是一個執行個體 :
首先看**這邊的分配,該分配是對應於SLA中的表xla_distribution_links
在該情況下可以查詢出每個會計帳戶的明細來曆,這是AP**的分配
Select Aid.Invoice_Id , Aid.Invoice_Distribution_Id 分配ID , Aid.Invoice_Line_Number 行號, Distribution_Line_Number 分配行號, Aid.Rcv_Transaction_Id 接收事務id, Aid.Amount 金額 From Ap_Invoice_Distributions Aid, Ap_Invoices Api Where Api.Invoice_Id = Aid.Invoice_Id -- And Aid.Invoice_Id = 35357 Order By Aid.Invoice_Line_Number, Distribution_Line_Number;Begin mo_global.init(‘M‘); End;
-- And Xal.Ae_Header_Id = 14012 And Xdl.Application_Id = 200 Order By Xdl.Source_Distribution_Id_Num_1; Begin mo_global.init(‘M‘); End;
分析:應付分配中的賬戶,在SLA中會產生兩行資料,並且這兩行資料借貸相反 金額相同。
從GL查行資料,在GL的一個header下的行有可能是經過合并後的行,因此GL的行並不能準確的表示出帳戶源的帳戶資訊,在GL的同一個帳戶行可能對應著AP這邊很多張**的帳戶資訊,但會計行中的子分類帳日誌項目行的每一行則一定對應著同一張**。
如下代碼是整理的追溯一般代碼
Select ‘_^_‘ Key, Gir.Je_Batch_Id , --======xla_transaction_entities=========-------- Xte.Application_Id 應用, Xte.Entity_Id, Xte.Ledger_Id 分類帳sob, Xte.Entity_Code, Xett.Name 事務實體類型, Le.Name 法人主體, Le.Legal_Entity_Identifier 人主體所得稅納稅登記 ,--legal_entity_tax ------------------------------ /* --AP_INVOICES Ap ** Invoice_Id --AP_PAYMENTS Ap付款 Check_Id --RECEIPTS 收款 Cash_Receipt_Id --TRANSACTIONS 交易處理 銷售 ** Customer_Trx_Id , Xte.Source_Id_Int_1 事務源對應ID , ------------------------------ /*--下面兩個欄位折舊的時候會有值 ,xte.source_id_int_2 ,xte.source_id_int_3*/ Xte.Security_Id_Int_1 Org_Id, Xte.Source_Application_Id 源對應應用, --======xla_event=========-------- Xe.Event_Type_Code, --Event type code Xent.Name 事件類型, Xe.Event_Status_Code, --Event status code Xe.Process_Status_Code, --Processing status code /*This flag indicates whether the event is on hold or not. possible values: (Y)--yes, (N)--No*/ Xe.On_Hold_Flag, --==============xla_ae_headers=======----- Xah.Ledger_Id Sob, Xah.Je_Category_Name, --General Ledger category name Xah.Accounting_Date, Xah.Period_Name 期間, /* ,xah.balance_type_code --Balance type (Actual, Budget, or Encumbrance) ,xah.gl_transfer_date ,xah.accounting_entry_status_code ,xah.accounting_entry_type_code ,xah.zero_amount_flag*/ --==============xla_ae_line=======----- Xal.Ae_Line_Num 行號, Xal.Code_Combination_Id 賬戶id, Gjl.Code_Combination_Id 日記帳gcc, /* ,xal.gl_transfer_mode_code ,xal.accounting_class_code "會計分類"*/ Xlp.Meaning 會計分類, Xal.Accounted_Dr 入賬借項本位幣, Xal.Accounted_Cr 入賬貸項本位幣, Xal.Currency_Code 幣種, Xal.Entered_Dr 賬戶原幣借項, Xal.Entered_Cr 賬戶原幣貸項, Gir.Je_Line_Num 帳目明細號, Xte.Entity_Id, Xte.Application_Id, Xe.Event_Id, Xah.Ae_Header_Id, Xal.Ae_Line_Num From Xla_Transaction_Entities Xte, Xla_Entity_Types_Tl Xett, Xle_Entity_Profiles Le, Xla_Events Xe, Xla_Event_Types_Tl Xent, Xla_Ae_Headers Xah, Xla_Ae_Lines Xal, Xla_Lookups Xlp, Gl_Import_References Gir, Gl_Je_Lines Gjl Where 1 = 1 And Xte.Entity_Id = Xe.Entity_Id And Xte.Application_Id = Xe.Application_Id And Xte.Legal_Entity_Id = Le.Legal_Entity_Id(+) And Xah.Event_Id = Xe.Event_Id And Xah.Application_Id = Xe.Application_Id And Xent.Event_Type_Code = Xe.Event_Type_Code And Xent.Application_Id = Xe.Application_Id And Xent.Language = ‘ZHS‘ And Xah.Ae_Header_Id = Xal.Ae_Header_Id And Xah.Application_Id = Xal.Application_Id And Xlp.Lookup_Type(+) = ‘XLA_ACCOUNTING_CLASS‘ And Xlp.Lookup_Code(+) = Xal.Accounting_Class_Code And Gir.Gl_Sl_Link_Id = Xal.Gl_Sl_Link_Id And Gir.Gl_Sl_Link_Table = Xal.Gl_Sl_Link_Table And Gjl.Je_Header_Id = Gir.Je_Header_Id And Gjl.Je_Line_Num = Gir.Je_Line_Num And Xett.Entity_Code = Xte.Entity_Code And Xett.Application_Id = Xte.Application_Id And Xett.Language = ‘ZHS‘ And Gir.Je_Batch_Id = 5511 ;
Oracle Ebs R12 SLA與GL關係變化