现在的位置: 首页 > 综合 > 正文

EBS OAF开发中Forms和OAF页的集成

2014年04月04日 ⁄ 综合 ⁄ 共 3002字 ⁄ 字号 评论关闭

EBS OAF开发中Forms和OAF页的集成

(版权声明,本人原创或者翻译的文章如需转载,如转载用于个人学习,请注明出处;否则请与本人联系,违者必究)

概览

OAF框架和Oracle EBS都提供了Oracle基于Forms的Oracle EBSforms和基于OAF页面的集成。你可以从OAF页面运行一个Oracle EBS form,也可以从Oracle EBS form调用一个OAF HTML页面。

从OAF页面运行Oracle EBS forms

要从OAF运行一个Oracle EBS form,你必须先定义一个按钮,链接或者图片的web bean。这个web bean依赖于Oracle EBS(AOL/J)所提供的FormsLauncher applet来运行指定的form.

声明式实现

步骤1: 在OA扩展结构面板,选择你想要创建web bean来运行Oracle EBS form的区域。从上下文菜单中选择New->Item。

步骤2: 为Item设置ID属性,符合OA Framework File Standards,并设置Item类型属性为button,image或者链接.你也可以从一个提交按钮运行Oracle Application form。更多细节参考下面运行控制部分。

步骤3: 设置item的Destination URI属性为一个符合这种格式的值(替换斜体字为合适的值):

form:responsibilityApplicationShortName:responsibilityKey:securityGroupKey:functionName

比如,你想运行FND Menus form,Destination URI属性应该设置为:

form:SYSADMIN:SYSTEM_ADMINISTRATOR:STANDARD:FND_FNDMNMNU

步骤4:如果你想传参数给form,那么就设置Destination URI属性为使用下面格式的值(注意参数列表在每个”parameter=value”对之间使用空格隔开).

form:responsibilityApplicationShortName:responsibilityKey:securityGroupKey:functionName:param1=value1param2=value2 param3=value3

注意:如果你想传递varchar2参数值并且其中包含空格,使用”\”把字符串值包括起来。比如,要传递给form的值如下面:

TXN_NUMBER=LT INVOICE 1

就要使用下面的替换:

TXN_NUMBER=\”LT INVOICE 1\”

步骤5:关于特定item需要设置的更多属性,可以参考想关Item的介绍:Buttons(Action/Navigation),Buttons (Links), 或者 Images in Your Pages.

运行时控制

从OAF页面的一个按钮,图片或者链接来运行一个Oracle EBS form是不必需要特殊的编码步骤的。OAButtonBean, OALinkBean和OAImageBean支持上面关于DestinationURI属性的特殊form function的URL格式。当OAF遇到这种特殊值,它会生成合适的URL并添加一个隐藏的IFrame(内置 frame)到OAF页面。隐藏的IFrame用于Oracle EBS提供的FormsLauncher applet.

提供提交按钮来运行OracleEBS form

如果你在OAF页面想通过提交按钮来运行Oracle EBS form,你必须使用oracle.apps.fnd.framework.webui.OAPageContext中的OAPageContext.forwardImmediatelyToForm(Stringurl)方法.如何使用这个API的示例代码如下:

public voidprocessFormRequest(OAPageContext pageContext, OAWebBean webBean)

{
 super.processFormRequest(pageContext,webBean);
 if(pageContext.getParameter("Apply")!=null)  
 {
  String destination =

   "form:SYSADMIN:SYSTEM_ADMINISTRATOR:STANDARD:FND_FNDMNMNU";

 pageContext.forwardImmediatelyToForm(destination);
 }
}

使用时的注意事项

微软的IE浏览器支持IFrame元素,所以当你从OAF中运行Oracle EBS form时,会有一个启动窗口出现。其它FormsLaucher applet需要的窗口使用隐藏的IFrame,因此对于用户来说还是隐藏的。然而,Netscape Navigator,不支持IFrame元素,因此出了启动窗口,用户还会看到FormsLauncher applet使用的另一个窗口。

从OracleE-Business Suite Forms运行OAF页面

声明式实现

要从基于Oracle Forms的Oracle EBS forms运行OAF页面,你不想为OAF页面定义一个function。一个基于OAF页面的function就像Oacle EBS中其它function定义方式是一样的。你在Oracle EBS Form Functions form定义function的时候,指明function的类型为JSP.更多信息可以参考OracleEBS开发指引.你定义的function会自动为Oracle EBS菜单所识别,不需要额外的操作。

运行时控制

如果你想从Oracle Applications form直接调用OAF页面function,你必须使用下面的OracleEBS API:

PACKAGE FND_FUNCTION IS
procedure EXECUTE(function_name in varchar2,
                  open_flag     in varchar2 default 'Y',
                  session_flag  in varchar2 default 'SESSION',
                  other_params  in varchar2 default NULL,
                  activate_flag in varchar2 default 'ACTIVATE',
                  browser_target in varchar2 default NULL);

你也可以使用URL格式通过other_params传递额外的参数,比如name1=value1&name2=value2…

比如:

fnd_function.execute( function_name => 'OKE_OKEKVCOM'
                            other_params  => 'headerid='||:parameter.k_header_id||

                            '&Ver1='||:compare_version.version1||
                            '&Ver2='||:compare_version.version2);

注意:在第一个参数的名/值对之前没有(&)符号,但是在后面的参数名/值对的前面都有(&)符号。

注意:open_flag和session_flag参数不显示在上面的示例中,因为对于HTML function来说,那是无效的。

抱歉!评论已关闭.