个性化主要用于客户化标准功能的Form。对于我们自己开发的Form,除非已经上线很久、很稳定了,不想改源文件了否则没必要用个性化。
个性化的好处在于,基本上不用担心升级问题,因为个性化信息是保存在表中的,独立于源代码,EBS版本升级或打Patch时,fmb可能被覆盖,但个性化信息仍然得以保留。
第一章 Form个性化概念
Form个性化允许修改基于Form基础页面的事件,包括:修改物件的属性、执行内建函数、产生提示信息和添加标签入口。
对于每个功能(需在功能处指定上下文条件,相应的Form才能执行)来说,可以制定一个或一个以上的规则。每条规则包括:一个事件(Event),事件执行的条件(Condition),事件执行的范围(Scope),一个或多个动作(Action)。
Form上的一个Trigger就是一个事件(Event)。例如,开启页面的Trigger(WHEN-NEW-FORM-INSTANCE),或者光标从一条记录移至另一条新的记录所触发的Trigger(WHEN-NEW-RECORD-INSTANCE)等等,这几乎是每个Form传送资料都必须执行的,或者确认传送资料附加的事件。
若指定了事件执行的范围(Scope),当Form在运行的时候,系统会去检查当前的规则是否可执行。事件执行的范围有以下层级:地点、责任、用户、行业,每个规则可有相应层级的执行范围与之相关联。(行业层级没用)
事件执行的条件(Condition)是一段SQL语句,来控制事件在何时执行。只有在执行条件的返回结果是真时,该时间才会执行。
一个动作(Action)包含以下的任意一项内容:
Ø 设置属性,如:设置一个栏位状态为必输,隐藏一个Tab页签等。
Ø 执行内建函数,如:GO_BLOCK,DO_KEY,FND_FUNCTION.EXECUTE等。
Ø 显示提示信息,如:弹出一个自定义内容的提示框。
Ø 创建一个自定义菜单选项,如: 在菜单项“工具”下添加一个自定义选项。
规则一旦建立,当目标功能执行时,规则会被系统视为Form里的一个事件,并会自动执行。
要创建一个个性化控制,首先要进入到目标功能Form,然后按下拉菜单 帮助->诊断->自定义代码->正常(启用个性化)/关闭(关闭个性化)/个性化(打开个性化设置页面)。
若该下拉菜单不可见,请检查系统Profile设定选项:
“隐藏诊断菜单项” 和“公用程序:诊断”。
Profile |
值 |
功能 |
隐藏诊断菜单项 |
是 |
隐藏诊断菜单 |
否 |
显示诊断菜单 |
|
公用程序:诊断 |
是 |
直接进入FORM个性化设置界面 |
否 |
需要输入APPS密码 |
进入到个性化控制页面时,系统会罗列当前功能页上已定义的规则。
如果做了修改,请保存然后重新进入该功能页,这样所做的改动才能生效。也可以按下按钮 “验证”和“现在申请”,分别来验证修改的值和快速查看所做改动的执行结果,而不必重新进入功能页。
Form个性化的工作原理是触发器代码的“添加”。那添加在哪里呢?什么时候会被执行?是这样子的,我们在个性化编写的条件(包括触发器名称,条件等等),系统先会自动将对应的代码“添加”在APP_STANDARD.EVENT对应的触发器代码里面(其实是APP_STANDARD.EVENT会寻找个性化里面的代码去执行),然后Form级触发器调用代码的时候,会自动执行对应的触发器的增加在个性化里面的代码,从而达到个性化实现效果的目的。
Step01.Form启动时,所有与当前Function相关的个性化规则都会被加载进内存;
Step02.当Form触发特定的Event时,系统将会搜寻相应的规则并进行匹配;
Step03.