壹佰网|ERP100 - 企业信息化知识门户

 找回密码
 注册
查看: 809|回复: 2

[财务] [分享知识 原创连载]Oracle ERP实施过程中常用接口解释

[复制链接]
发表于 2013/9/7 00:30:43 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。如果您注册时有任何问题请联系客服QQ: 83569622  。

您需要 登录 才可以下载或查看,没有帐号?注册

x
    Oracle ERP 接口这块还是蛮强大滴,各个模块都有相应的接口程序。很方便地与外围系统集成以及主数据和期初静动态数据导入。本人接触的接口程序有人事,总账,应收,应付,资产,库存,采购,销售。。。在接下来的日子,会把项目上这些接口怎么应用和注意事项以及常见问题分享给大家
    说说最近两个项目,有太多的共同点,其中最具代表性共性就是大量使用接口导入程序,做成一套体系。好像这是现在项目实施流行方案的趋势。体现了Oracle ERP接口地强大之灵活性,也间接说明啦Oracle ERP的不足之处,所以顾问和用户选择大量接口以及客制化程序。最近两个项目有很多相似之处,都是上啦财务常用模块,处理日常账务。业务单据来自于外围系统,导入到Oracle ERP相应模块形成相对应的单据,合同,发票和日记账等。为什么要用外围系统走业务单据呢?个人看法 一是Oracle ERP很难满足至少国内的强大审批流程,蜘蛛网络审批线路(真心不夸张),在这Oracle ERP界面不友好,国内大多是从用友ERP升级到EBS,很难转变观点以及习惯OA灵活的流程简单web界面。
   下面介绍一总账常用接口表:
引用四海介绍:
GL_INTERFACE表的以下要求列中输入值:
   1.
状态:输入 NEW 值,以指明您要将新数据导入总帐应用产品。
   2. SET_OF_BOOKS_ID
:输入事务处理的相应帐套标识。您可以在总帐应用产品的"帐套"表单-->"帐套"表的 SET_OF_BOOKS_ID 列 (GL_SETS_OF_BOOKS.SET_OF_BOOKS_ID)
中提供了有效值列表。 建议:您可以使用以下SQL*Statement 来访问相应的帐套标识:
    SELECT SET_OF_BOOKS_ID, NAME FROMGL_SETS_OF_BOOKS;
   3. USER_JE_SOURCE_NAME
:输入事务处理的日记帐分录来源名称。您可以在总帐应用产品的日记帐分录来源"表的 USER_JE_SOURCE_NAME 列
(GL_JE_SOURCES.USER_JE_SOURCE_NAME)
中提供了有效值列表。
  
   4. USER_JE_CATEGORY_NAME
:输入事务处理的日记帐类别名称。您可以在总帐应用产品的USER_JE_CATEGORY_NAME 列
(GL_JE_CATEGORIES.USER_JE_SOURCE_NAME)
中提供了有效值列表。
   5. ACCOUNTING_DATE
:输入发生事务处理的会计结算日期。总帐应用产品会自动将日记帐批分
   6. CURRENCY_CODE
:输入事务处理的币种代码。您可以在总帐应用产品的"币种"表单中定义CURRENCY_CODE列 (FND_CURRENCIES.CURRENCY_CODE)
中提供了有效值列表。
   7. DATE_CREATED
:输入您的导入日记帐分录行的创建日期。您在此处输入的信息只不过是您自己的记录,它不会显示在总帐应用产品中。
   8. CREATED_BY
:输入一个标识,以用来识别来自源系统的数据。此处输入的标识为您提供从"日记帐导入"数据到源系统的跟踪线索。
但是,日记帐导入数据在成功导入后将从GL_INTERFACE 表中被删除,并且此标识不会显示在总帐应用产品中。
   9. ACTUAL_FLAG
:输入 A 值表示实际金额,B 值表示预算金额或 E 值表示保留金额。
   10.(
保留款)ENCUMBRANCE_TYPE_ID:如果您在 GL_INTERFACE 表的 ACTUAL_FLAG 列中输入了 E 值,则必须输入相应的保留标识。
您可以在总帐应用产品的"保留类型"表单中定义新的保留类型。"保留类型"表的 ENCUMBRANCE_TYPE_ID 列
(GL_ENCUMBRANCE_TYPES.ENCUMBRANCE_TYPE_ID)
中提供了有效值列表。
建议:您可以使用以下 SQL*Statement 来识别相应的保留类型标识:
SELECT ENCUMBRANCE_TYPE_ID, ENCUMBRANCE_TYPE
FROM GL_ENCUMBRANCE_TYPES WHERE
ENABLED_FLAG = 'Y';
    11.(
预算)BUDGET_VERSION_ID:如果您在 GL_INTERFACE 表的 ACTUAL_FLAG 列中输入了 B值,则必须输入相应的预算标识。
您可以在总帐应用产品的"定义预算"表单中定义新的预算版本。"预算版本"表的 BUDGET_VERSION_ID 列(GL_BUDGET_VERSIONS.BUDGET_VERSION_ ID)
中提供了有效值列表。建议:建议您使用以下SQL*Statement 来识别相应的预算版本标识:
SELECT BUDGET_VERSION_ID, BUDGET_NAME
FROM GL_BUDGET_VERSIONS
WHERE STATUS IN('C','O');  
     12.PERIOD_NAME
:输入期间名称(仅供预算事务处理,即 ACTUAL_FLAG = B时使用)。在使用"日记帐导入"来导入预算数据时,
您需要输入此列。如果要使用"日记帐导入"来导入预算数据,您必须提供一个期间名称,而不是会计结算日期。此外,该期间名称必须
与打开预算会计年度相关联。
      13.ENTERED_DR
:输入每行事务处理的借项金额。您可以在给定行的 ENTERED_DR 或 ENTERED_CR 列中输入值,
但不能在同一行中输入两个值。
      14.ENTERED_CR
:输入每行事务处理的贷项金额。您可以在给定行的 ENTERED_DR 或ENTERED_CR 列中输入值,
但不能在同一行中输入两个值。
      15.GL_INTERFACE
表中必须为 NULL 的列 由于"日记帐导入"将 GL_INTERFACE表中的某些列用于内部处理,
或者当前版本中的"日记帐导入"尚未使用这些列,因此您必须将它们保留为 NULL。
     16.
总帐应用产品的以下各列必须保留为 NULL:
        REFERENCE3
:请勿在此列输入值。
        REFERENCE11
至 REFERENCE20:请勿在此列输入值。
       TRANSACTION_DATE
:请勿在此列输入值。
       JE_BATCH_ID
:请勿在此列输入值。
       JE_HEADER_ID
:请勿在此列输入值。
       JE_LINE_NUM
:请勿在此列输入值。
       CHART_OF_ACCOUNTS_ID
:请勿在此列输入值。
       FUNCTIONAL_CURRENCY_CODE
:请勿在此列输入值。
        DATE_CREATED_IN_GL
:请勿在此列输入值。
       WARNING_CODE
:请勿在此列输入值。
       STATUS_DEscr
īptION:请勿在此列输入值。
       DESC_FLEX_ERROR_
mesSage:请勿在此列输入值。
        REQUEST_ID
:请勿在此列输入值。
       SUBLEDGER_DOC_SEQUENCE_ID
:请勿在此列输入值。
       SUBLEDGER_DOC_SEQUENCE_VALUE
:用于总帐与子分类帐间的数据传递。请勿填入您自己的数据。
      17.GL_INTERFACE
表的以下可选列中输入值为可选列分配值 您可以为 GL_INTERFACE表中的许多可选列输入值。
您可以在这些列中输入值,以便最大程度地控制"日记帐导入"将其创建的日记帐分录行归类到日记帐分录的方式。
如果您启用了平均余额处理,则日记帐导入将按会计结算日期为事务处理分组。事务处理在验证之前进行分组,
如果"有效日期规则"为"累计日期",事务处理则可以累计至期间内最近的有效业务日。如果您未在可选列中输入值,
并且该特定列存在默认值,则"日记帐导入"将自动输入默认值。
        REFERENCE1
(批名):输入"导入批"的批名。"日记帐导入"使用以下格式来创建默认的批名:(用户输入的可选REFERENCE1)(来源)(请求标识)(实际标志)(组标识)。如果您输入了批名,则"日记帐导入"会将批名的前 50 个字符置于以上格式之前。
        REFERENCE2
(批说明):输入批说明。如果您未输入批说明,则"日记帐导入"将自动使用以下格式为批提供说明:日记帐导入(来源)(请求标识)。
        REFERENCE4
(日记帐分录名):为日记帐分录输入日记帐分录名。"日记帐导入"使用以下格式来创建默认的日记帐分录名:
        
(类别名)(币种)(货币折换类型,如果适用)(货币折换率,如果适用)(货币折换日期,如果适用)(保留类型标识,如果适用)(预算版本标识,如果适用)。
如果您输入日记帐分录名,则"日记帐导入"将按以上格式设置日记帐分录名的前 25 个字符。
      
     19.  REFERENCE5
(日记帐分录说明):为日记帐分录输入说明。如果未输入日记帐分录说明,则"日记帐导入"将自动
      
使用以下格式为日记帐分录提供说明:日记帐导入-并发请求标识。
      
      20.  REFERENCE6
(日记帐分录参考):为日记帐分录输入参考名或编号。如果未输入日记帐分录参考,则"日记帐导入"将自动创建一个称为"创建的日记帐导入"的日记帐分录参考。
      
      21. REFERENCE7
(日记帐分录冲销标志):输入"是"将您的日记帐分录标记为要冲销,如果您未输入"是",则"日记帐导入"自动默认为"否"。
如果启用了平均余额处理,则输入要冲销的有效日期。总帐管理系统将根据您提供的日期来确定相应的冲销期间。
注:有效日期仅适用于"实际"余额,不适用于"预算"或"保留"余额。
注:如果您在REFERENCE7 列中输入"是",则必须在此列中输入值。
      22.REFERENCE9
(日记帐冲销方法):输入"是",表示使用更改符号方法;输入"否",表示使用"借/贷"方法。
     
      23.REFERENCE10
(日记帐分录行说明):为日记帐分录行输入说明。如果未输入日记帐分录行REFERENCE21 至
REFERENCE30
:输入参考名称或编号以进一步标识导入日记帐分录行。REFERENCE21 至 REFERENCE30 列分别映射至 GL_JE_LINES表
的 REFERENCE_1 至 REFERENCE_10 列。一旦在 GL_JE_LINES表中,总帐管理系统应用产品将在运行的具有行明细的标准报表中打印存储在REFERENCE_1
中的值,并在运行的具有来源明细的标准报表中打印存储在REFERENCE_4 中的值。其它参考列仅用于说明或跟踪。总帐管理系统应用产品不使用这些列中的值。
GROUP_ID
:输入唯一的组编号以区分来源中的导入数据。如果您为每项请求均指定了唯一的组编号,则可以为相同的来源并行运行日记帐导入。
      24.STAT_AMOUNT
:输入与日记帐分录行数据关联的统计额。您可以在总帐管理系统应用产品的USSGL_TRANSACTION_CODE:为日记帐分录行输入有效的 USSGL
事务处理代码。如果将配置文件选项"启用事务处理代码"设置为"是",并且使用"公共部门事务处理代码"窗口定义了 USSGL 事务处理代码,则"日记帐导入"将验证并导入
USSGL
事务处理代码。 注:如果您安装的是商业版的总帐管理系统,则忽略此列。
ATTRIBUTE1
至ATTRIBUTE 10:为"日记帐 -日记帐分录行"说明性弹性域输入值。输入的值取决于您在"说明性弹性域段"表单中如何
定义说明性弹性域。
请参阅:定义 Oracle General Ledger 的说明性弹性域,《OracleApplications User Guide》。
ATTRIBUTE11
至 ATTRIBUTE 20:为"日记帐 -捕获信息"说明性弹性域输入值。输入的值取决于您在"说明性弹性域段"表单中如何定义
说明性弹性域。"日记帐 -捕获信息"的上下文为每行中所用帐户的自然帐户值。请参阅:定义 Oracle General Ledger 的说明性弹性域,
《Oracle Applications User Guide》。 CONTEXT:为"日记帐-日记帐分录行"说明性弹性域输入上下文字段值,以标识说明性弹性域结构。
如果您输入了值,则还可以在 ATTRIBUTE1 至 ATTRIBUTE10 列中输入某些值的组合。

     25.CONTEXT2
:输入"是"以标识"增值税说明性弹性域"结构。如果要为"增值税说明性弹性域"导入数据,则必须使用此列。
输入"否"以指明日记帐分录行不是纳税项目。如果输入"否",则四个"增值税说明性弹性域"相关列必须为"空"。
     
     26.CONTEXT3
:为"日记帐 -捕获信息"说明性弹性域输入上下文字段值(自然帐户),以标识说明性弹性域的结构。仅
在导入"日记帐 -捕获信息"说明性弹性域而不进行验证时才输入值。如果输入了值,则还可以在ATTRIBUTE11 至 ATTRIBUTE20
列中输入某些值的组合。
     27.INVOICE_DATE
:在税务日记帐分录行中输入付税或收税的日期。请以 DD-MON-YY格式或您所用语言的默认日期格式输入日期。
发票日期应与此发票的税额收付日期一致。如果要为"增值税说明性弹性域"导入数据,则必须使用此列。
     28.INVOICE_AMOUNT
:输入发票额。请输入与税务日记帐分录行金额相关的净发票额。如果要为"增值税说明性弹性域"导入数据,
则必须使用此列。
     
     29.TAX_CODE
:输入标识此发票的纳税类型的有效税码。在定义说明性弹性域值时,请为此字段定义有效税码列表。
如果要为"增值税说明性弹性域"导入数据,则必须使用此列。
     30.INVOICE_IDENTIFIER
:输入发票标识符。请输入有关收付税的来源单据或发票的参考信息。
如果要为"增值税说明性弹性域"导入数据,则必须使用此列。

下面是根据客户需求和Oralce接口标准,建立客制化接口表,把客户业务需要直接抛总账单据插入此接口表中,然后校验处理生成符合日记账标准的数据插入到gl_interface中,调用标准请求导入生成日记账!

create table CUX_GL_JOURNALS_INTERFACE
(
  batch_num                  VARCHAR2(100) not null,
  interface_id               NUMBER,
  ledger_name                VARCHAR2(30) not null,
  doc_num                     VARCHAR2(100) not null,
  je_source_name             VARCHAR2(25) not null,
  je_category_name           VARCHAR2(25) not null,
  journal_name               VARCHAR2(100) not null,
  journal_desc               VARCHAR2(240),
  attachment_num             VARCHAR2(150),
  currency                   VARCHAR2(15) not null,
  conversion_rate_date       DATE,
  conversion_rate            NUMBER,
  gl_date                    DATE not null,
  period_name                VARCHAR2(15) not null,
  line_num                   NUMBER not null,
  line_desc                  VARCHAR2(240),
  company_code               VARCHAR2(150) not null,
  dept_code                  VARCHAR2(150) not null,
  account_code               VARCHAR2(150) not null,
  bank_code                  VARCHAR2(150),
  sub_bank_code              VARCHAR2(150),
  ic_code                    VARCHAR2(150) not null,
  project_code               VARCHAR2(150) not null,
  acct_concatenated_segments VARCHAR2(1200),
  cashflow_item              VARCHAR2(150),
  con_type                   VARCHAR2(150),
  dr_amount                  NUMBER,
  cr_amount                  NUMBER,
  accounted_dr               NUMBER,
  accounted_cr               NUMBER,
  sh_person                  VARCHAR2(150),
  zz_person                  VARCHAR2(150),
  status                  VARCHAR2(20) not null,
  gl_status                  VARCHAR2(20),
  error_mesSage              VARCHAR2(2000),
  group_id                   NUMBER,
  process_id                 NUMBER,
  attribute1                 VARCHAR2(150),
  attribute2                 VARCHAR2(150),
  attribute3                 VARCHAR2(150),
  attribute4                 VARCHAR2(150),
  attribute5                 VARCHAR2(150),
  attribute6                 VARCHAR2(150),
  attribute7                 VARCHAR2(150),
  attribute8                 VARCHAR2(150),
  attribute9                 VARCHAR2(150),
  attribute10                VARCHAR2(150)
);
客户业务单据插入此接口表后,主控程序会触发对应CUX_GL_JOURNAL_IMPORT_PKG,对接口数据校验,生成不符合标准的错误信息,纠正,符合标准的数据插入Oracle标准接口表中,在调用标准日记账导入请求,生成相应日记账。
1.初始化接口状态:cux_interface_common_pkg.change_status(p_process_id, 'I',null);
1.1
--1.1初始化    fnd_file.put_line(fnd_file.log, '1.1初始化');    --get env for import gl journal    SELECT gl_journal_import_s.NEXTVAL INTO l_interface_run_id FROM dual;    SELECT gl_interface_control_s.NEXTVAL INTO l_group_id FROM dual;    l_user_id   := fnd_profile.value('user_id');    l_flag      := true;    l_date_from := to_date(p_date_from, 'yyyy-mm-dd hh24:mi:ss');    l_date_to   := to_date(p_date_to, 'yyyy-mm-dd hh24:mi:ss');--1.2检查接口表中数据是否完整或有误 --检查同一日记帐行号是否重复--检查日记帐是否已经导入--检查币别,汇率日期及汇率--同一凭证不允许存在多个公司的凭证行--检查凭证类--检查来源--检查会计帐户--检查GL日期--检查借贷项--日记帐不平-2.检查基础信息并插数据进接口表--插入总帐接口表--提交 --3.日记帐导入    fnd_file.put_line(fnd_file.log, '3.运行日记帐导入');    INSERT INTO gl_interface_control      (set_of_books_id,       interface_run_id,       je_source_name,       group_id,       status,       packet_id)    VALUES      (p_ledger_id,       l_interface_run_id,       l_je_source_name,       l_group_id,       'S',       NULL);    commit;      l_request_status := true;      l_request_id := FND_REQUEST.SUBMIT_REQUEST('SQLGL',                                               'GLLEZL',                                               '',                                               '',                                               FALSE,                                               l_interface_run_id,                                               fnd_profile.value('GL_ACCESS_SET_ID'),                                               'N', --error to suspense flag                                               '', --from accounting date                                               '', --to accounting date                                               l_summary_flag, -- create summary flag                                               'O', --import desc flex flag                                               'Y' --Data security mode flag                                               );      if l_request_id > 0 then      commit;      l_request_status := Fnd_Concurrent.wait_for_request(l_request_id,                                                          5,                                                          0,                                                          l_phase,                                                          l_status,                                                          l_dev_phase,                                                          l_dev_status,                                                          l_message);          if l_request_status THEN        if l_dev_status = 'NORMAL' THEN          null;        else          l_request_status := false;        end if;      end if;        else      l_request_status := false;    end if;      if l_request_status = false then      for r in (select ji.rowid row_id, clv.lookup_code, clv.description                  from gl_interface              i,                       cux_gl_journals_interface ji,                       cux_lookup_values_vl      clv                 where i.group_id = l_group_id                   and i.reference21 = ji.bz_num                   and i.reference22 = ji.line_num                   and i.reference1 = ji.batch_num                   and i.reference4 = ji.journal_name                   and i.status like '%' || clv.lookup_code || '%'                   and i.status not like 'P%') loop        update cup_gl_journals_interface           set error_message = error_message || r.lookup_code || ': ' ||                               r.description || '; ',               gl_status     = 'E'         where rowid = r.row_id;      end loop;          delete gl_interface where group_id = l_group_id;      delete gl_interface_control where group_id = l_group_id;      update cup_gl_journals_interface i         set i.gl_status = 'E'       where i.group_id = l_group_id         and exists (select 1                from cup_gl_journals_interface ii               where ii.group_id = l_group_id                 and ii.batch_num = i.batch_num);      fnd_file.put_line(fnd_file.log, '日记帐导入失败,请检查。');      l_request_status := fnd_concurrent.set_completion_status('WARNING',                                                               '日记帐导入失败,请检查。');      html_output(l_group_id);          p_errbuf  := '日记帐导入失败,请检查。';      p_retcode := 1;          if p_process_id is null then        update cup_interface_requests r           set status = 'E', error_message = '日记帐导入失败,请检查。'         where exists (select 1                  from cup_gl_journals_interface i                 where i.group_id = l_group_id                   and i.process_id = r.process_id);      end if;          return;    end if;

--导入成功
--更新信息
--更新日记帐弹性域
--运行日记帐过帐
fnd_request.submit_request('SQLGL',                           'GLPPOSS',                           '',                           '',                           FALSE,                           To_Char(p_ledger_id),                           To_Char(l_access_set_id),                           To_Char(l_coa_id),                           To_Char(l_posting_run_id),                           chr(0));
--5.日记帐凭证导入成功
fnd_file.put_line(fnd_file.log, '5.日记帐凭证导入成功。');    update cup_gl_journals_interface       set gl_status = 'S'     where group_id = l_group_id;
OK 日记账导入就介绍到这里,欢迎大家来指教,纠正,交流和完善。

本帖被以下淘专辑推荐:

发表于 2013/9/9 16:28:32 | 显示全部楼层
好贴,讲得详细我很喜欢~要是有项目模块的就好了……
 楼主| 发表于 2013/9/11 23:53:51 | 显示全部楼层
wensanewton 发表于 2013/9/9 16:28
好贴,讲得详细我很喜欢~要是有项目模块的就好了……

谢谢支持   接下来会有各个模块常用接口的介绍  
您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|Archiver|壹佰网 ERP100 ( 京ICP备12025635号 京ICP证120590号 )  

Copyright © 2005-2012 北京海之大网络技术有限责任公司 服务器托管由互联互通
手机:13911575376
网站技术点击发送消息给对方83569622   广告&合作 点击发送消息给对方27675401   点击发送消息给对方634043306   咨询及人才点击发送消息给对方138011526

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表