OracleEBS个性化.doc_第1页
OracleEBS个性化.doc_第2页
OracleEBS个性化.doc_第3页
OracleEBS个性化.doc_第4页
OracleEBS个性化.doc_第5页
已阅读5页,还剩15页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

Form个性化学习 拷贝号_ 文档控制变更记录20日期作者版本变更说明审阅姓名职位分发拷贝编号姓名位置/岗位1234备注:Form 个性化FORM个性化是.10新增的功能。通过个性化设置,我们可以不必去修改ORACLE的FORM源码而实现FORM标准功能的修改,因为个性化代码是独立储存在数据库表中的,FORM的升级均对此无影响。所以在项目上要对FORM进行修改时,如果能行,最好还是用FORM个性化来实现。Form个性化可以减少开发的时间,Form个性化可以完成很多功能,比如:当打开From时弹出一个消息框、修改Item的属性、调用一个功能、新建一个菜单项等等。Form个性化可以在界面上修改实现,也可以修改Custom.pll文件来实现,本文侧重是以在界面上修改为例,本文参考了METALINK Note:279034.1上提供的几个文档个性化前提预定义文件控制form个性化的显示和进入,和控制“诊断”是一样的PROFILE,所以我们首先查看预定义文件:FND_HIDE_DIAGNOSTICS (是否隐藏“诊断”) DIAGNOSTICS (进入“诊断”是否需要apps密码)隐藏诊断菜单项个性化步骤 打开form个性化: 工具栏:帮助-诊断-自定义代码-个性化。打开以后我们可以看到function和 form的名称,其实从这里来看当前function的名称也是一个便捷的方法如图: 定义form个性化:包括条件、活动等 设置完成后,保存,关闭所有form。Form个性化需要重新打开form才可以起作用。后面提及的CUSTOM.PLL需要重新登陆EBS才能够起作用。 Form个性化的界面主要分为规则头、条件tab页、上下文、活动tab页四个部分个性化入门案例下面废话不多说了,先通过一个经典入门案例来SHOW一下然后再具体解析各个属性是干嘛用的。Hello World !我们随便打开一个Form。此处选择的是在:应用开发员应用产品注册 工具栏:帮助-诊断-自定义代码-个性化 个性化头上的属性值为序号说明层10Hello World 功能 条件Tab页的属性值为触发器事件条件处理模式WHEN-NEW-FORM-INSTANCEHello World 不在输入-查询模式下 活动Tab页的属性值为序号类型消息类型消息文本10消息显示Hello world! 然后保存,关闭Form,再打开Form,就会看到效果了个性化属性设置个性化定义头部 函数名:当前Function的名称 表单名称:当前Form的名称 调试模式:n “显示调试信息”在活动Tab页,活动类型选“消息”,消息类型选“调试”时,消息可以显示出来,如果不选,则显示不出调试信息n “关闭”不允许显示消息,即使活动类型选择“消息”也不显示n “逐步”每次应用满足一个个性化规则时都提示 序号:序号小的会先执行,当然如果序号2的条件中的触发器在序号1之前触发,那么2肯定比1先执行,序号允许重复 说明:不多说 层:n “功能”表示该个性化规则适用于当前Function,n “表单”该个性化规则适用于当前表单 启用:不选择则不执行这个个性化规则个性化条件Tab页 主要定义个性化规则的触发的时间和条件 触发器事件:个性化规则触发的时间触发器 触发器对象:执行规则的对象,比如BLOCK或者ITEM 条件:执行该触发器需要满足的条件,写法: 处理模式:n “不在“输入-查询”模式下” 正常模式和“录入-查询”模式下都触发n “仅在“输入-查询”模式下”n “两者兼有” 上下文:“层”有行业、地点、职责、用户。注意,与一般的概念不同,这几个只要有一个满足条件就会触发该个性化规则。个性化活动Tab页在这里面定义的是个性化规则具体要做的事情 序号: 类型:有特性、消息、内置、特殊(或菜单)。特性用来指定一个对象,指定对象的某个属性,为这个属性指定一个值。消息用来弹出不同类型的信息。内置可以执行一些标准的form的Builtin,例如GO_BLOCK,DO_KEY等等。特殊(或菜单),定义special的行为。 个性化底部按钮 插入“获取”表达式:获取SPEL表达式(下面会有解释) 插入项目值:往当前的输入框插入当前Form中选中的ITEM的值 验证:用来测试输入的字符串是否符合语法,如果不符和会报错。如果正确,会弹出结果。 现在申请:立即应用所做的个性化规则,只对某些类型适用,还是要以实际运行中为准。个性化实例 头和条件填写为如图所示当活动Tab页填写为把APPLICATION. APPLICATION_NAME的提示改成了TEST当输入为:此时执行的触发器只能为WHEN-NEW-FORM-INSTANCE效果为在工具栏上增加了一个名为TEST的菜单项当我们输入为:此时会打开百度网页当我们输入为:会执行cux_test_pkg.pkg.main过程上面就是一些简单例子,其他的属性可以自己去尝试。输入时需要注意的问题规则个性化的赋值或写条件的时候是有一些规则的,例如在form个性化里面取item的值用:block.item,也可以用SPEL,不能用name_in()(但是在后面说的custom.pll中,只能用name_in()。获取属性不能用GET_ITEM_PROPERTY等。赋值条件及写法在消息里面,或是给对象的属性、参数赋值时,都涉及到字符串。字符串的赋值有一些规则: 如果输入的字符串前面没有“=”的话,那么输入的字符串就是所赋的值。 字符串的长度是有限的。 如果输入的字符串是以“=”开始的话,那么后面的字符串在运行时会被作为表达式被计算出结果来,再赋值。例如以下的各种形式:n |, TO_CHAR, DECODE, NVL等。n (:block.field), including :system, :global and :parameter values。n 调用函数。n select语句。写成“=select”,返回的列只能是字符型的,如果不是。可以用TO_CHAR处理一下,长度不能超过2000bytes,而且只能返回一列,如果返回多列,也只取第一列 下面这个列表举例说明了上面的规则(引用oracle文档):SPEL(Simplest Possible Expression Language)$objectType.objectName.Property例如:$item.po_lines.line_num.requeiredSPEL替代了一些form builtins,比如GET_ITEM_PROPERTY,GET_BLOCK_PROPERTY等。另外,它还可以获取PROFILE、消息字典的值,以及Local Variables(Local Variables也是新增的,它类似与全局变量,但是只能在当前form使用,最大长度是4000 bytes,全局变量只有255 bytes)个性化提升案例本案例是对并发程序的标准表单进行个性化,要实现的功能是增加一个菜单项实现点击该菜单时打开可执行程序定义的标准表单界面并对当前的并发程序进行查询(练习用)整体逻辑 打开并发程序定义界面,在Tools菜单栏下新加一个菜单项。 点击该菜单时,如果并发程序名为空,则报一个错误。 如果可执行名非空,增加一个全局变量 ,储存可执行的名称。 点击新增的菜单项,可以打开可执行FORM。 当打开可执行FORM时,对上述定义的全局变量进行初始化。 进入查询模式。 将全局变量的值赋予可执行名称项值。 进行查询。 清除全局变量的值步骤 打开并发程序定义界面,再打开FORM个性化界面,定义一个名为Executable的个性化规则,对应的触发器事件为WHEN-NEW-FORM-INSTANCE 在Actions里,增加一个Menu类型,其中Menu Entry选择SPECIAL1(SPECIAL1至15是在Tools菜单下,16至30是在Reports菜单下,31至45在Actions菜单下),Menu Label输入Executable(即菜单项标签),Icon Name为CONC_PROG即并发程序FORM对应的BLOCK 保存,打开可执行界面,可以看到新增的菜单项,点击,没有事件发生。 在可执行界面下,打开FORM个性化界面,我们增加一个事件为,如果可执行的名称为空,则报一个错误Please Enter Executable Name!。新增一个个性化规则Check Executable Name,Trigger Event为SPECIAL1,条件为可执行名称为空。即:CONC_PROG.EXECUTABLE_NAME IS NULL 在Actions下,设置一个Meassage 类型,Message Type为Error,Message Text为Please Enter Executable Name! 保存。打开并发程序定义界面,Executable Name项为空,直接点击Executable。 在并发定义界面下,打开FORM个性化界面。我们先定义一个全局变量,储存可执行的名称,在后面中要用到。新增一个名为Excutable Entered的个性化规则,Trigger Event为SPECIAL1,条件为:CONC_PROG.EXECUTABLE_NAME is not null 在Actions里加入一个Property类型,Object Type为Global Variable即全局变量,变量名为XX_XH_EXECUTABLE_NAME,为了便于区分,我们FORM个性化的全局变量全部以XX_开头。Property Name为VALUE,Value为=:CONC_PROG.EXECUTABLE_NAME(前面有=号,如果不加等号的话,会被赋值为 :CONC_PROG.EXECUTABLE_NAME)。 再增加一个Builtin类型,Builtin Type为Lunch a Function即调用一个功能,Function Code为FND_FNDCPMFE即可执行对应的功能,Function Name会被自动调出。 保存。打开并发程序界面,查找一个并发程序,点击ToolsExecutable,可以看到可执行定义界面被调出,但是没有数据。 关闭并发请求界面,打开可执行界面,再打开FORM个性化界面。新增加一个FORM个性化规则INIT XX_XH_EXECUTABLE_NAME,触发器事件为WHEN-NEW-FORM-INSTANCE。我们做这个个性化规则的目的是初始化全局变量INIT XX_XH_EXECUTABLE_NAME。 在Actions下,增加一个Property 类型,Object Type 为Global Variable,变量名为XX_XH_EXECUTABLE_NAME。Property Name为INITIAL VALUE(注意与VALUE的区别,VALUE是直接赋值,而INITIAL VALUE为如果该变量为null或未被创建,会被赋初值,如果有值的话,则不会覆盖),Value为=null。这个个性化的目的是为了直接打开该FORM时,后面定义的用到此全局变量的个性化规则有效。 新增一条名为Enter Query的个性化规则。触发器的事件为WHEN-NEW-FORM-INSTANCE,条件为:global.XX_XH_EXECUTABLE_NAME is not null 。即上面定义的那个全局变量的值不为空时才会执行。 在Actions,设置一个Builtin类型,Builtin Type为DO_KEY,就像在FORM中直接执行的语句。设置Argument为ENTER_QUERY即进入查询模式。 新增一条名为Execute Query个性化规则,触发器项为WHEN-NEW-RECORD-INSTANCE,对象为FND_EXECUTABLES,条件为:global.XX_XH_EXECUTABLE_NAME is not null。Processing Mode改为Only in Enter-Query Mode。主要是能在查询模式下继续执行该代码,如果不改在并发程序界面调出可执行界面时,可执行会停在查询模式里。 在Actions里,设置type为Property,Object Type为Item,Target Object为FND_EXECUTABLES.EXECUTABLE_NAME,Property Name为VALUE,Value为=:global.XX_XH_EXECUTABLE_NAME。 增加一个Builtin类型,Builtin Type 为DO_KEY,Argument为EXECUTE_QUERY。即进行FND_EXECUTABLES.EXECUTABLE_NAME的值等于全局变量的查询。 新增一条名为Clear XX_XH_EXECUTABLE_NAME Value个性化规则。触发器事件为WHEN-NEW-RECORD-INSTANCE ,对象为FND_EXECUTABLES,条件为:global.XX_XH_EXECUTABLE_NAME is not null 在Actions里,设置Type为Property,Object Type为Global Variable,Target Object XX_XH_EXECUTABLE_NAME ,Property Name为VALUE ,Value为=null,即查询完之后将该全局变量的值清空。 至此,完成Custom.pll 个性化从以上的描述,我们可以看到form个性化满足了我们对form做某些更改的需求,但是还是有不少的局限。Oracle给我们的个性化还提供了一个途径:CUSTOM.PLL。CUSTOM.PLL可以实现我们更加复杂的个性化需求。因为在这里,我们可以写更加复杂的PLSQL,但是与我们直接在form里做修改相比,还是有很多限制的。CUSTOM.PLL是标准的library,不管是调试还是其它的,都会影响到全局从本质上来说,form个性化和CUSTOM.PLL是相同的,可以发现如果选择了:帮助-诊断-自定义代码-关闭。CUSTOM.PLL的代码也不起作用了。代码实现编译命令CUSTOM.pll路径:$AU_TOP/RESOURCE在$AU_TOP/RESOURCE路径下编译CUSTOM.pll的命令:frmcmp_batch module=$AU_TOP/RESOURCE /CUSTOM.pll userid=apps/apps Module_Type=LIBRARYCustom.pll中的Function和Procedure function zoom_available return Boolean;是否启用工具栏中:view-zoom ,例如FUNCTION zoom_available RETURN BOOLEAN IS form_name VARCHAR2(30) := name_in(system.current_form); block_name VARCHAR2(30) := name_in(system.cursor_block);BEGIN IF form_name = FNDCPMCP AND block_name = CONC_PROG THEN RETURN TRUE; ELSE RETURN FALSE; END IF; RETURN FALSE;END zoom_available; function style(event_name varchar2) return integer;是用来指定下面event里面代码执行的方式,是先执行,后执行,还是覆盖。可选的有:custom.before、custom.after、custom.override、custom.standard(默认值).例如:FUNCTION style(event_name VARCHAR2) RETURN INTEGER ISBEGIN IF event_name IN (SPECIAL10, SPECIAL11, SPECIAL12) THEN RETURN custom.override; ELSE RETURN custom.standard; END IF;END style; procedure event(event_name varchar2)这是主要代码,这里面允许使用的触发器有ZOOM 、WHEN-NEW-FORM-INSTANCE 、WHEN-NEW-BLOCK-INSTANCE 、WHEN-NEW-RECORD-INSTANCE 、WHEN-NEW-ITEM-INSTANCE 、WHEN-VALIDATE-RECORD,还有special代码结构为:PROCEDURE event(event_name VARCHAR2) IS form_name VARCHAR2(30) := name_in(system.current_form); block_name VARCHAR2(30) := name_in(sys

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论