Oracle Ebs R12 SLA與GL關系變化


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) Then
Into 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 ……;
View Code

上面提到的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,在該方法中有一句很重要

Function Mo_Policy(p_Obj_Schema In Varchar2, p_Obj_Name In Varchar2)
  Return Varchar2 Is
  l_Mo_Policy  Varchar2(4000);
  l_Log_Module Varchar2(240);
Begin
  If g_Log_Enabled Then
    l_Log_Module := c_Default_Module || '.MO_Policy';
  End If;
  If (c_Level_Procedure >= g_Log_Level) Then
    Trace('MO_Policy.Begin', c_Level_Procedure, l_Log_Module);
  End If;
  l_Mo_Policy := Mo_Global.Org_Security(Obj_Schema => Null,
                                        Obj_Name   => Null);
  If (c_Level_Statement >= g_Log_Level) Then
    Trace('l_mo_policy after calling mo_global.org_security = ' ||
          l_Mo_Policy,
          c_Level_Statement,
          l_Log_Module);
  End If;
  l_Mo_Policy := Regexp_Replace(l_Mo_Policy,
                                'org_id',
                                'security_id_int_1',
                                1,
                                1);
  -- Security identifiers are not populated. In case of, manual journal entires
  -- or third party merge events.
  -- bug 4717192, add the if condition
  If (l_Mo_Policy Is Not Null) Then
    l_Mo_Policy := l_Mo_Policy || ' OR security_id_int_1 IS NULL ';
  End If;
  Xla_Utility_Pkg.Print_Logfile('l_mo_policy after replace = ' ||
                                l_Mo_Policy);
  If (c_Level_Procedure >= g_Log_Level) Then
    Trace('MO_Policy.End', c_Level_Procedure, l_Log_Module);
  End If;
  Return(l_Mo_Policy);
End 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;
View Code

  -- 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;
View Code

分析:應付分配中的賬戶,在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
   ;
View Code


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM