Oracle EBS中分類賬和法人實體 的關係(有sql語句例項)

kawontony發表於2019-10-15

首先,對於EBS中的法人實體和分類賬以及OU之間的一個層次關係如下圖:

其中,對於分類賬和法人實體,並不簡單是一對多的關係,按照理論上來講:由於分類賬存在輔助分類賬,所以一個法人實體除了對應一個主分類賬(Primary Ledger)外,還可能存在輔助分類賬,但是一個法人實體肯定只對應一個唯一的主分類賬,而對於 分類賬之間是否存在有“主從關係”還不太清楚,有待進一步考證。

而在R12中,要找出他們之間的關係就需要通過一下sql來看了:

SELECT lg.ledger_id,
       lg.NAME ledger_name,
       lg.short_name ledger_short_name,
       cfgdet.object_id legal_entity_id,
       le.NAME legal_entity_name,
       reg.location_id location_id,
       hrloctl.location_code location_code,
       hrloctl.description location_description,
       lg.ledger_category_code,
       lg.currency_code,
       lg.chart_of_accounts_id,
       lg.period_set_name,
       lg.accounted_period_type,
       lg.sla_accounting_method_code,
       lg.sla_accounting_method_type,
       lg.bal_seg_value_option_code,
       lg.bal_seg_column_name,
       lg.bal_seg_value_set_id,
       cfg.acctg_environment_code,
       cfg.configuration_id,
       rs.primary_ledger_id,
       rs.relationship_enabled_flag
  FROM gl_ledger_config_details primdet,
       gl_ledgers               lg,
       gl_ledger_relationships  rs,
       gl_ledger_configurations cfg,
       gl_ledger_config_details cfgdet,
       xle_entity_profiles      le,
       xle_registrations        reg,
       hr_locations_all_tl      hrloctl
 WHERE rs.application_id = 101
   AND ((rs.target_ledger_category_code = 'SECONDARY' AND
       rs.relationship_type_code <> 'NONE') OR
       (rs.target_ledger_category_code = 'PRIMARY' AND
       rs.relationship_type_code = 'NONE') OR
       (rs.target_ledger_category_code = 'ALC' AND
       rs.relationship_type_code IN ('JOURNAL', 'SUBLEDGER')))
   AND lg.ledger_id = rs.target_ledger_id
   AND lg.ledger_category_code = rs.target_ledger_category_code
   AND nvl(lg.complete_flag, 'Y') = 'Y'
   AND primdet.object_id = rs.primary_ledger_id
   AND primdet.object_type_code = 'PRIMARY'
   AND primdet.setup_step_code = 'NONE'
   AND cfg.configuration_id = primdet.configuration_id
   AND cfgdet.configuration_id(+) = cfg.configuration_id
   AND cfgdet.object_type_code(+) = 'LEGAL_ENTITY'
   AND le.legal_entity_id(+) = cfgdet.object_id
   AND reg.source_id(+) = cfgdet.object_id
   AND reg.source_table(+) = 'XLE_ENTITY_PROFILES'
   AND reg.identifying_flag(+) = 'Y'
   AND hrloctl.location_id(+) = reg.location_id
   AND hrloctl.LANGUAGE(+) = userenv('LANG');


從資料結果中可以看出,系統中有7個分類賬(LEDGER)和5個法人實體(LEGAL_ENTITY),對於TCL_YSP這個法人實體來說,擁有兩個分類賬,其LEDGER_CATEGORY_CODE分別為PRIMARY和SECONDARY,說明了一個法人實體有一個主分類賬,並且可以有輔助分類賬,而2041這個分類賬,則沒有對應的法人實體,但是其LEDGER_CATEGORY_CODE依然為PRIMARY,這說明一個分類賬的category_code有可能是事前定義好的,而不是在與法人實體關聯的時候才決定的,所以不能確定分類賬之間到底有層次關係……
對以上的sql進行精簡,也可以得出相應的關係來:


select lg.ledger_id, --分類帳
       cfgdet.object_id legal_entity_id, --法人實體    
       lg.currency_code,
       lg.chart_of_accounts_id,
       rs.primary_ledger_id
  from gl_ledger_config_details primdet,
       gl_ledgers               lg,
       gl_ledger_relationships  rs,
       gl_ledger_configurations cfg,
       gl_ledger_config_details cfgdet
where rs.application_id = 101  --101為總賬GL應用
   and ((rs.target_ledger_category_code = 'SECONDARY' and
       rs.relationship_type_code <> 'NONE') or
       (rs.target_ledger_category_code = 'PRIMARY' and
       rs.relationship_type_code = 'NONE') or
       (rs.target_ledger_category_code = 'ALC' and
       rs.relationship_type_code in ('JOURNAL', 'SUBLEDGER')))
   and lg.ledger_id = rs.target_ledger_id
   and lg.ledger_category_code = rs.target_ledger_category_code
   and nvl(lg.complete_flag, 'Y') = 'Y'
   and primdet.object_id = rs.primary_ledger_id
   and primdet.object_type_code = 'PRIMARY'
   and primdet.setup_step_code = 'NONE'
   and cfg.configuration_id = primdet.configuration_id
   and cfgdet.configuration_id(+) = cfg.configuration_id
   and cfgdet.object_type_code(+) = 'LEGAL_ENTITY';



來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/24627116/viewspace-2659988/,如需轉載,請註明出處,否則將追究法律責任。

相關文章