近期项目需求对EBS中WEBADI导入日记账时,在加载数据时需要对账户组合额外进行客户化的校验,需要能够做到将校验结果体现在WEBADI模板的数据上,并且对每条错误数据都单独报错。

项目上的方案是调整fnd_flex_keyval这个程序包,同时通过多种限制,将使用范围限制在WEBADI的情况下才会再走一步额外的客户化校验,将范围将至最低。

这边近期进行了初步研究,仍未实践,但通过观察代码估计,以下方法是可行的:

1. 通过查看webadi进行日记账导入的集成器的定义,可以找到,webadi进行账户组合校验时使用了类oracle.apps.gl.journalwizard.validators.AccountingFlexValidator。

2. 反编译AccountingFlexValidator可以看到其中的985行

BneFlexStructure localBneFlexStructure = BneFlex.validateSegs(paramBneWebAppsContext.getJDBCConnection(), str6, paramBneFlexStructure.AppShortName, paramBneFlexStructure.IDFlexCode, paramBneFlexStructure.IDFlexNum, paramString, null, str1, null, -1, str5, null, null, false, false, paramBneWebAppsContext.getRespApplicationID(), paramBneWebAppsContext.getResponsibilityID(), paramBneWebAppsContext.getUserId(), this.m_upsDffPackage != null);

3. 上述BneFlex.validateSegs,位于oracle.apps.bne.utilities.oa.BneFlex

4. 反编译BneFlex, 

可以看到validateSegs函数中调用了fnd_flex_keyval.validate_segs

5. 综合上述信息,修改思路如下:

A. 首先创建客户化package:CUX_FND_FLEX_KEYVAL,其中的校验存储过程validate_segs的参数与fnd_flex_keyval.validate_segs完全一致,

并且CUX_FND_FLEX_KEYVAL.validate_segs中会先调用fnd_flex_keyval.validate_segs,当fnd_flex_keyval.validate_segs校验成功时,才会进行额外的客户化账户组合的校验

B. 创建类CuxBenFlex,在BenFlex基础上调整,将其中fnd_flex_keyval.validate_segs全部替换为CUX_FND_FLEX_KEYVAL.validate_segs

C. 修改AccountingFlexValidator,调整其中的BneFlex.validateSegsCuxBneFlex.validateSegs

理论上重编译为class文件并重启oacore后,可以生效。

之后实践完成之后我会在此随笔中补充实践结果。

EBS WEBADI导入日记账 客户化账户组合规则校验的更多相关文章

  1. EBS动态创建账户组合实现

    目的:使用程序动态创建账户组合.如果账户组合存在的话,返回存在的ID,不存在的话就动态创建账户组合并返回id. 实现步骤: 1. 得到账簿的CHART_OF_ACCOUNTS_ID 2. 得到账户弹性 ...

  2. python 导入re模块语法及规则

    正则表达式是功能比较强大的模块,应用在很多地方,抓网页,数据分析,数据验证等,下面讲述python 导入re模块语法及规则. 1,re模块语法 re.match 从头开始匹配 re.search 匹配 ...

  3. springMVC:校验框架:多规则校验,嵌套校验,分组校验;ssm整合技术

    知识点梳理 课堂讲义 学习目标 能够阐述表单验证的分类和区别 能够运用表单验证的常用注解 能够编写表单验证的示例 能够编写SSM整合的应用案例 能够总结SSM整合的步骤 1 校验框架 1.1 入门-视 ...

  4. 案例17-validate自定义校验规则校验验证码是否输入正确

    1 自定义校验规则代码 <script type="text/javascript"> //使用validate插件进行表单的校验 $(function(){ $(&q ...

  5. EBS GL 日记账行“账户说明”段说明显示不全

    问题描述: 路径:总帐管理超级用户/日记帐/输入 如下图所示,日记账行的“账户说明字段”段值说明显示不全 解决方法: 路径:总帐管理超级用户/设置/财务系统/弹性域/关键字/段 如下图所示,找到相应的 ...

  6. Oracle EBS 导入日记账报错

    EM29/EM01 ED01

  7. [GE]导入图片至Word,然后按规则命名(2/2)

    #将所有docx文件改成可读 Set-ItemProperty -Path "e:\screenshot\*.docx" -Name IsReadOnly -Value $fals ...

  8. [APAC]导入图片至Word,然后按规则命名(2/2)

    #将所有docx文件改成可读 Set-ItemProperty -Path "e:\screenshot\*.docx" -Name IsReadOnly -Value $fals ...

  9. Interface_GL通过gl_interface导入日记账(案例)

    2014-06-17 BaoXinjian

随机推荐

  1. 阶段02JavaWeb基础day02&03JavaScript

    javascript知识体系 ECMAScript javascript与html结合方式 内部: <script type="text/javaScript">*** ...

  2. log4j的简介和使用

    一.log4j是什么 引用官网的介绍 Log4j is a fast and flexible framework for logging application debugging messages ...

  3. Windows创建Sciter的第一个程序.HelloWorld

    介绍什么的就免了.直接进入正题 平台: Windows 10 IDE : Visual studio 2017 首先从官网下载最新的SDK,https://sciter.com/download/ 创 ...

  4. python3读取MySQL-Front的MYSQL密码

    python3读取MySQL-Front的MYSQL密码 python3 mysql 密码 MySQL-Front 前言 同样的套路又来了,继续尝试从配置文件中读取敏感的信息,这次轮到的是MySQL- ...

  5. IceGrid 用于Python服务器和客户端通信——参数传递

    本篇介绍如何用IceGrid建立python多机通信,传递比较复杂的参数 Ice代码:Demo.ice #ifndef TOS_ICE_COMMON #define TOS_ICE_COMMON mo ...

  6. 鼠标跟随效果 vue或者js通用

    this.$refs.tooltip.getBoundingClientRect() => 用于获取某个元素相对于视窗的位置集合.集合中有top, right, bottom, left等属性. ...

  7. hadoop day 7

    1.storm概述 应用于实时的流式计算,结合消息队列和数据库进行使用. Spouts:拓扑的消息源 Bolts:拓扑的处理逻辑单元,每个bolt可以在集群当中多实例的并发执行 tuple:消息元组, ...

  8. 在android studio写car的app代码时遇到的问题

    1 Cannot resolve symbol '@drawable/XXX'等问题解决办法方法1."Build " -> "Clean project" ...

  9. python3 sys.path

    wadmin@ansible-test:~/python$ python3Python 3.6.7rc1 (default, Sep 27 2018, 09:51:25) [GCC 8.2.0] on ...

  10. [2019BUAA软件工程]结对作业

    Tips Link 作业链接 [2019BUAA软件工程]结对作业 GitHub地址 WordChain PSP表格 psp2.1   预估耗时(分钟) 实际耗时(分钟) Planning 计划 60 ...