OAF个性化Button获取页面参数

2014-06-03(Tuesday) 00:00
  • 平台: R12
  • 需求: 需要个性化一个button的Destination URI属性,并添附上一个参数。

实现方法:

  1. 本来重写CO便很容易实现该需求,但是涉及到修改代码以及各个环境更新就很麻烦了,所以如果个性化button的URL是最方便了。

  2. 个性化又涉及到如何在URL里传递参数的问题。

右键当前页面,查看源代码如下:

<form id="DefaultFormName" name="DefaultFormName" style="margin:0px" method="POST"          action="/OA_HTML/OA.jsp?page=/oracle/apps/pa/deliverable/webui/CrUpDeliverablePG&paCallingPage=DLVLIST&paCallingMode=VIEW&paProjectId=106691&paDeliverableId=113287&paDlvrItemId=106962&&addBreadCrumb=RP&_ti=1696581738&PersonalizationParam=PersonalizationParamAdmin&retainAM=Y&oapc=28">

需要将当前页面中form标签的action属性中的paDlvrItemId参数的值获取过来。拼接成形如:http://dengdezhao.cn?erpid={:paDlvrItemId}形式的URL赋给button的destinationURI属性。

  1. 使用{@itemName}这种方式只能在table控件中才行,在此处不适用。因此考虑使用JS查找当前页面获取到参数然后拼接形成URL。

    http://192.168.15.141/login/LoginSSO.jsp?flowCode=AM02&erpid='+unescape(document.DefaultFormName.action.match(new RegExp("(^|&)" + 'paDlvrItemId' + "=([^&]*)(&|$)", "i"))[2])+'&workcode=' + document.getElementById('AdditionalInfo').rows[4].cells[1].innerText + '
    
  2. 将以上URL个性化赋值给button即可满足需求。

Category: ebs Tagged: oaf


"OAF中创建LOV"

2013-04-18(Thursday) 00:00

环境:Oracle9i Jdeveloper+R11i

首先创建AM

创建一个LovAM,默认配置即可。

创建VO

创建LovVO,不需要基于EO,输入查询SQL如下: {% codeblock lang:sql %} select distinct INVENTORY_ITEM_ID,concatenated_segments from MTL_SYSTEM_ITEMS_KFV where organization_id=85

将创建好的VO添加到AM的data module中

创建RN

右键工程,创建一个RN,Scope设置为public.

选中创建好的LovRN.xml,在structure Window窗口中选中LovRN右建New Region Using Wizard.找到之前创建的LovVO.

修改字段属性如下:
Search Allowed : true
Selective Search Criteria : true

创建PG页面引用LOV

创建一个PG页面LovPG.xml,AM Definition设置为之前创建的LovAM路径 …

Category: ebs Tagged: oaf

Read More

"配置OAF开发环境"

2013-04-17(Wednesday) 00:00

查看EBS系统OA版本信息

方法一:使用OPERATIONS用户登陆EBS系统,选择“Diagnostics”后,在页下脚选择“About this Page”后选择“Technology Components”标签可查看相应版本信息。

方法二:访问URI:R12不可用
{% codeblock lang:java %} http://:/OA_HTML/OAInfo.jsp

查看OAF版本下载相应JDEV开发工具

metalink document id: 787209.1 & 416708.1

例如:p4141787_11i_GENERIC.zip

解压缩后把“/jdevhome/jdev”路径加到系统变量中,变量名: JDEV_USER_HOME=F:\p4141787_11i_GENERIC\jdevhome\jdev

配置DBC文件

确认当前EBS系统使用的dbc文件.

连接EBS数据库,执行以下SQL查询: {% codeblock …

Category: ebs Tagged: oaf

Read More

"OAF上传大批量EXCEL文件"

2013-04-09(Tuesday) 00:00

客户有个需求:大量数据通过EXCEL导入系统表,并能提供效验及去重功能。

设计思路

  • 采用POI解析EXCEL文件;
  • bulk insert 插入数据到临时表
  • 临时表结合正式表去除重复

POI解析EXCEL

在CO的processFormRequest方法中添加如下:
{% codeblock lang:java %} public void processFormRequest(OAPageContext pageContext, OAWebBean webBean) { super.processFormRequest(pageContext, webBean); OAApplicationModule am = pageContext.getApplicationModule(webBean);

if (pageContext.getParameter("uploadBtn") != null)
{
  DataObject fileUploadData = (DataObject)pageContext.getNamedDataObject("uploadFile");
  String fileName = null;
  try {
    fileName = (String)fileUploadData …

Category: ebs Tagged: oaf

Read More

"OAF单选删除行功能"

2013-03-20(Wednesday) 00:00

平台:Jdeveloper 9i


一般实现步骤:

  1. 在VO中添加新transient属性selector,updatable设置为always。
  2. 在PG中给table添加singleSelection方法,并绑定view Instance为VO的instance,View Attribute为刚刚新建的transient属性seletor。
  3. 这样当用户勾选checkbox时,会给transient属性变量赋值为Y,因此,在删除逻辑中循环判断VO中的transient属性,当其为Y时执行remove该行即可实现选择删除功能。
    相关代码如下:

CO中processFormRequest里添加代码如下:

{% codeblock lang:java %} //当单击deleteBtn按钮时执行AM中的deleteAutoSequenceVO方法
if (pageContext.getParameter("deleteBtn")!=null) { am.invokeMethod("deleteAutoSequenceVO");

}

{% endcodeblock %}

AM中代码如下:

{% codeblock lang:java %} public void deleteAutoSequenceVO() { OAViewObject vo = this.getChAutoSequenceVO1(); RowSetIterator iter = vo.createRowSetIterator("delete"); if (vo != null …

Category: ebs Tagged: oaf

Read More

Use Javascript in OAF

2013-01-30(Wednesday) 00:00

使用Js脚本库

在CO的processRequest中引入JS库
编写JS库:Calendar2013.js {% codeblock lang:java %} pageContext.putJavaScriptLibrary("Calendar","Calendar2013.js"); ((OAMessageTextInputBean)webBean .findChildRecursive("inputDate")) .setOnClick("setday(this)");

需要把Calendar2013.js放置在$COMMON_TOP/html下。

直接引用javaScript

编写JavaScript: {% codeblock lang:java %} String javaScript="JAVASCRIPT:function setday(){...}";

COprocessRequest中加载javascript

{% codeblock lang:java %} pageContext.putJavaScriptFunction("sayday()",javaScript …

Category: ebs Tagged: javascript oaf

Read More

虚拟机环境RHEL6.3安装EBS R12

2013-01-15(Tuesday) 00:00

一直想自己搭建个R12的环境学习学习,于是买了块500G的移动硬盘,想把R12安装在移动硬盘中。

准备工作:

先安装好虚拟机VMware Workstation。创建一个RHEL6.3的虚拟机,硬盘300G,足够R12的FRESH安装了。(如果想DEMO安装,建议还是再大点,以免出现空间不足)

下载好R12的安装介质,我是下载的12.1.1.0版本的,当时通过代理断断续续下载了一个星期,真是坑爹。(下载完成注意核准MD5保证无损)

以ROOT进入虚拟机环境中,配置RHEL6.3的网络,使用静态IP:192.168.133.129 /255.255.255.0 gateWay:0.0.0.0 DNS:192.168.133.1

具体IP如何设置,可通过检查在虚拟机中能否PING通宿主机,以及能否PING通www.dengdezhao.cn来测试:)

配置主机名信息等#vim …

Category: ebs Tagged: RHEL6.3 R12

Read More

虚拟机安装EBS R12时出现错误RW-50004 解决

2013-01-12(Saturday) 00:00

一般出现这个错误多半应该是库文件导致的,查看日志得知是 需要的 unzip 版本过高,RHEL上安装的是6.0的,而R12.1.1.1只支持unzip 5.X 的,很坑爹,yum erase unzip 然后重新安装unzip 5.X rpm即可解决~~

 

Category: ebs Tagged: rw-50004

Read More

OAF开发通过EXCEL导入数据时,用户需要将可能存在重复的主键信息提示出来

2013-01-10(Thursday) 00:00

OAF开发通过EXCEL导入数据时,用户需要将可能存在重复的主键信息提示出来.

有以下两种主键冲突情况:

1, 表中不存在重复数据,即将导入的数据中存在重复数据。比如表中记录为空,导入的EXCEL中存在记录ID007,ID008,ID009,ID007,此时OAF页面需要将ID007提示出来;

2,表中存在重复数据。即表中原来已经存在一条记录ID007,此时导入的数据中也存在ID007,需要将ID007提示出来。

解决方案:

原本想通过查询数据库中ID007的记录是否存在再抛出OAException的做法来实现此需求,后来一想感觉好麻烦;便换种思路决定通过异常来判断。

情况1,在ViewObject对象CreateRow()之后,给创建的新Row.setAttribute("id",007)时,如果VO中存在两个007的新ROW,会抛出TooManyObjectsException,此时捕获该异常并返回此ID值。

情况2,难点也在这里,调用commit保存数据时,主键约束异常才会抛出来而且还不知道重复的ID值是多少。重写EO的doDML方法,在此方法中捕获DMLException异常,并且可以得到重复的ID值;

  public void doDML(int i,TransactionEvent e)
  {
    try{
    super.doDML(i …

Category: ebs Tagged: oaf

Read More

OAF 使用OAException输出中文时出现乱码 解决

2013-01-09(Wednesday) 00:00

使用throw new OAException(“你们好”,OAException.WARNING);时出现乱码,尝试new String("你们好”.getBytes("GBK"),"UTF-8")依然没用。

检查JDEV的Preferences中ENCODING已经更改为“UTF-8”,纠结了好一阵子,才发现工程的Project Settings的Compiler里也有一个ENCODING没有改,囧改好之后再测试乱码问题即解决

Category: ebs Tagged: oaf

Read More
Page 1 of 2

Next »