近期项目需求对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. Vmware网络不可达

    1. ifconfig -a   查看当前的网卡 2. cd  /etc/sysconfig/network-scripts/ 3. 打开对应网卡名称文件, 具体修改内容参考(https://www. ...

  2. Main Steps to Setup an ODI data sync

    0. Get ODI installed 1. Topo physical Architecture/new physical schema 2. New Logical schema 3. New ...

  3. Tensorflow实战系列之四:

    这个是第四篇,打算写一些语义分割的内容实战.

  4. vue 及sass安装

    推荐:https://www.cnblogs.com/Mr--Li/p/7921150.html

  5. CSS之box-sizing

    盒子模型是CSS中很重要的概念,它涉及到的无非就是内容(content).填充(padding).边框(border).边界(margin).但是从上两张图可以看出,盒子模型其实有两种类型:标准盒模型 ...

  6. Ubuntu的显示问题不全解决

    首先我们安装的是Ubuntu 16.04版本.最开始一直不能解分辨率问题,导致信息显示不全 利用xrandr -s 1369x768(中间x是乘号不是英文字母) 命令来设置分辨率, 需注意的是: 1. ...

  7. codeblocks报错:cannot open output file bin\Debug\2.exe Permission denied

    在任务管理器中也找不到正在执行的任务,以为清除了,但是重新编译文件报错. 解决办法: 打开W+R窗口,输入taskkill -IM 2.exe /F

  8. WINDOWS7环境下Informatica的安装[新手]

    环境: 操作系统:Windows7(64位): 数据库:Oracle 11g R2: 数据库字符集:UTF-8 一.下载: (参考链接:https://blog.csdn.net/u011031430 ...

  9. Exception in thread "main" java.lang.NullPointerException at Class.main

    出现这种问题,可能的原因之一可能是对象数组未初始化. Class[] class = new Class[N]; for(int i = 0; i < N; i++){ class[i] = n ...

  10. Java 并发开发:Lock 框架详解

    摘要: 我们已经知道,synchronized 是Java的关键字,是Java的内置特性,在JVM层面实现了对临界资源的同步互斥访问,但 synchronized 粒度有些大,在处理实际问题时存在诸多 ...