Oracle EBS Form个性化 联系客服

发布时间 : 星期五 文章Oracle EBS Form个性化更新完毕开始阅读9bc6553843323968011c923f

此时会打开百度网页 当我们输入为:

会执行cux_test_pkg.pkg.main过程

上面就是一些简单例子,其他的属性可以自己去尝试。

输入时需要注意的问题

规则

个性化的赋值或写条件的时候是有一些规则的,例如在form个性化里面取item的值用:block.item,也可以用SPEL,不能用name_in()(但是在后面说的custom.pll中,只能用name_in())。获取属性不能用GET_ITEM_PROPERTY等。 赋值条件及写法

在消息里面,或是给对象的属性、参数赋值时,都涉及到字符串。字符串的赋值有一些规则: ? ? ?

如果输入的字符串前面没有“=”的话,那么输入的字符串就是所赋的值。 字符串的长度是有限的。

如果输入的字符串是以“=”开始的话,那么后面的字符串在运行时会被作为表达式被计算出结果来,再赋值。例如以下的各种形式: ? ? ? ?

||, TO_CHAR, DECODE, NVL等。

(:block.field), including :system, :global and :parameter values。 调用函数。

select语句。写成“=select”,返回的列只能是字符型的,如果不是。可以用TO_CHAR处理一下,长度不能超过2000bytes,而且只能返回一列,如果返回多列,也只取第一列

下面这个列表举例说明了上面的规则(引用oracle文档):

SPEL(Simplest Possible Expression Language) ${objectType.objectName.Property} 例如:${item.po_lines.line_num.requeired}

SPEL替代了一些form builtins,比如

GET_ITEM_PROPERTY,GET_BLOCK_PROPERTY等。另外,它还可以获取PROFILE、消息字典的值,以及Local Variables(Local Variables也是新增的,它类似与全局变量,但是只能在当前form使用,最大长度是4000 bytes,全局变量只有255 bytes)

个性化提升案例

本案例是对并发程序的标准表单进行个性化,要实现的功能是增加一个菜单项实现点击该菜单时打开可执行程序定义的标准表单界面并对当前的并发程序进行查询(练习用)

整体逻辑

? ? ? ? ? ? ? ? ? 步骤 ?

打开并发程序定义界面,再打开FORM个性化界面,定义一个名为Executable的个性化规则,对应的触发器事件为WHEN-NEW-FORM-INSTANCE

打开并发程序定义界面,在Tools菜单栏下新加一个菜单项。 点击该菜单时,如果并发程序名为空,则报一个错误。 如果可执行名非空,增加一个全局变量 ,储存可执行的名称。 点击新增的菜单项,可以打开可执行FORM。

当打开可执行FORM时,对上述定义的全局变量进行初始化。 进入查询模式。

将全局变量的值赋予可执行名称项值。 进行查询。 清除全局变量的值

?

在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