近期项目需求对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. 转 Redis 总结精讲 看一篇成高手系统-4

    转 Redis 总结精讲 看一篇成高手系统-4 2018年05月31日 09:00:05 hjm4702192 阅读数:125633   本文围绕以下几点进行阐述 1.为什么使用redis 2.使用r ...

  2. windows下启动和运行分布式消息中间件消息队列 kafka

    本文转载至:https://www.cnblogs.com/flower1990/p/7466882.html 一.安装JAVA JDK 1.下载安装包 http://www.oracle.com/t ...

  3. 《Swell数学》用户故事

    一.用户故事基础知识: 1. 从用户的角度来描述用户渴望得到的功能. 2. 用户故事是描述对用户有价值的功能,好的用户故事应该包括角色.功能和商业价值三个要素. 3. 一个用户故事只是以客户能够明白的 ...

  4. SQL-51 查找字符串'10,A,B' 中逗号','出现的次数cnt。

    题目描述 查找字符串'10,A,B' 中逗号','出现的次数cnt. SQL: select length('10,A,B')-length(replace('10,A,B',',','')) len ...

  5. 用vector与bitset分别创建1亿以内的素数表,比较快慢

    vector容器: 代码如下: #include<iostream>#include<vector>#include<ctime>using namespace s ...

  6. RAID阵列盘有一块状态变为外来处理方法

    感谢: https://blog.csdn.net/cmzsteven/article/details/63680933

  7. 手动增加swap空间

           在日常工作中,swap没有必要搞那么大的空间,因为现在好多服务器都使用了ssd硬盘,这些硬盘还是比较贵的.如果服务器内存是128G,swap空间还设置成内存的两倍的话,那岂不是很明显是很 ...

  8. SpringMVC云题库错题及答案汇总-2

    此题目考察的是SpringMVC-注解驱动控制器,注释类型的范围: A.处理requet uri 部分的注解: @PathVariable; B.处理request header部分的注解: @Req ...

  9. Vue源码之----为什么Vue中Array的pop,push等方法可以reactive,而Array[0]='a'这样的方法不会reactive?

    这就要从reactive开始讲起了,粗略的说,js的操作能引起页面上显示的改变,是因为该操作引起了组件的重新渲染,渲染会生成新的虚拟节点,新节点和旧节点会对比,操作浏览器的node进行改变. vue实 ...

  10. 利用postman 实现Get和Post测试

    通过之前对金字塔结构的学习,大概了解到了金字塔模型想告诉我们的几个道理: 1.越底层,越稳定. 金字塔主要观点认为单元测试的稳定性高,需要多投入. 2.越底层,越高效. 程序的问题,最终还得落在具体的 ...