登录  
 加关注
查看详情
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

微软MVP罗勇的博客

微软MVP罗勇,www.luoyong.me

 
 
 

日志

 
 

ORACLE EBS 开发 APPCORE API 之二  

2011-01-23 08:35:06|  分类: EBS开发 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

--译者:罗勇,对原文有删减、补充、纠正,不提供翻译质量保证。 

24.6 APP_ITEM 单个项目处理

u  APP_ITEM.COPY_DATE

语法:PROCEDURE app_item.copy_date(date_val VARCHAR2 item_name VARCHAR2);

描述:将一个硬编码的日期值拷贝到一个项目中,实际上执行的操作是

copy(to_char(to_date(’01–01–1900’, ’DD–MM–YYYY’),

’DD–MON–YYYY’), ’bar.lamb’);

输入参数说明:

date_val  以DD-MM-YYYY形式显示的日期字符串

item_name  要拷贝到的字段名称,应包含数据块名称

u  APP_ITEM.IS_VALID

语法:PROCEDURE app_item.is_valid(val VARCHAR2 dtype VARCHAR2 DEFAULT 'date');

描述:检测字符型字段能否能转换成日期,数字或者整数。如果不能转换为指定的格式的话就会引发一个错误。如果是指定的格式的话返回TRUE,否则返回FALSE。

输入参数说明:

val  要检测的参数。

dtype  请使用DATE, INTEGER, 或者NUMBER

u  APP_ITEM.SIZE_WIDGET

语法:PROCEDURE app_item.size_widget(wid_name VARCHAR2. max_width NUMBER DEFAULT 20);

描述:不是很明白,不翻译了。

24.7 APP_PROPERTY 处理项目属性

u  APP_ITEM_PROPERTY.GET_PROPERTY

语法:

FUNCTION app_item_property.get_property(item_name VARCHAR2,
                                        property  NUMBER) RETURN NUMBER;

FUNCTION app_item_property.get_property(item_id  item,
                                        property NUMBER) RETURN NUMBER;

描述:该函数返回项目的当前属性。它和oracle form内置的get_item_property不同的是,它返回PROPERTY_ON代替TRUE,返回PROPERTY_OFF代替FALSE。

输入参数说明:

item_name  要查看的项目名称,请包括数据块名和项目名。可以使用item_id

property  要查看的属性,有哪些属性可以设置请参考前文

u  APP_ITEM_PROPERTY.SET_PROPERTY

语法:

PROCEDURE app_item_property.set_property(item_name VARCHAR2,
                                         property  VARCHAR2,
                                         VALUE     NUMBER);
PROCEDURE app_item_property.set_property(item_id  item,
                                         property VARCHAR2,
                                         VALUE    NUMBER);

描述:用来设置项目的属性。你决不应该使用oracle form内置过程SET_ITEM_PROPERTY来直接设置项目的DISPLAYED, ENABLED, ENTERABLE, ALTERABLE, INSERT_ALLOWED, UPDATEABLE, NAVIGABLE, REQUIRED, 和ICON_NAME属性,请使用该过程替代。该过程额外提供了在设置属性的同时还做了一些其他的事情,比如更改视觉属性,同时,该过程还能设置一些oracle form内置过程不能设置的属性。

输入参数说明:

item_name  要设置的项目名称,请包括数据块名和项目名。可以使用item_id

property  要设置的属性

value 请指定为PROPERTY_ON或者PROPERTY_OFF,或者图表名称(在更改项目图标时使用)

u  APP_ITEM_PROPERTY.SET_VISUAL_ATTRIBUTE

该过程不再使用,所以不翻译了。

24.8 APP_NAVIGATE打开表单功能

当你想重复使用已经打开的表单的实例时,请使用APP_NAVIGATE.EXECUTE代替FND_FUNCTION.EXECUTE。其他打开表单和功能的情况请使用FND_FUNCTION.EXECUTE。

u  APP_NAVIGAGE.EXECUTE

语法:

PROCEDURE app_navigate.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',
                               pinned        IN BOOLEAN DEFAULT FALSE);

描述:该过程和FND_FUNCTION.EXECUTE相似,除了当第二次调用该过程时它可以允许表单重新启动。例如,表单A用该过程调用了功能B,过一会又使用该过程调用了功能B,那么表单B的同一个实例将会重复使用,第二次调用该过程传递的参数会传递给表单B以重新启动。该功能在表单B作为另一个表单A的明细窗口,而且你想明细窗口反映主窗口的变化时十分有用。相反的,FND_FUNCTION.EXECUTE每次都启动表单的一个新实例。

只有该功能先前调用的功能才能重新启动,由FND_FUNCTION.EXECUTE调用的功能稍后由APP_NAVIGAGE.EXECUTE调用它不会重新启动。

多个表单可以共享同一个表单,例如,表单A使用过程APP_NAVIGAGE.EXECUTE调用了功能B,稍后表单C又调用了表单B,表单B的当前实例将会被重新启动。APP_NAVIGAGE.EXECUTE和FND_FUNCTION.EXECUTE使用如下的全局变量来存储当前(源)窗口的位置和大小,从而使目标窗口可以访问他们:

global.fnd_launch_win_x_pos

global.fnd_launch_win_y_pos

global.fnd_launch_win_width

global.fnd_launch_win_height

使用这些全局变量的作用在于目标窗口可以根据源窗口的位置进行恰当的定位。当调用APP_NAVIGAGE.EXECUTE时,目标表单第一次打开时,这些变量是可以访问的,但是在RESTART时间中访问这些变量是非法的。

使用APP_NAVIGAGE.EXECUTE过程时,需要在目标表单中撰写合适的代码。目标表单需要一个自定义触发器RESTART,还需要在WHEN–NEW–FORM–INSTANCE和WHEN–FORM–NAVIGATE触发器中调用APP_STANDARD.EVENT。当一个表单因为APP_NAVIGAGE.EXECUTE的调用而重复使用时,APPCORE将会:

1.对目标表单执行do_key(’clear_form’) 代码。

2.如果上一步成功的话,目标表单的所有参数都重新获得值

3.目标表单中的用户自定义触发器RETART执行

一个较好的技术技巧就是将根据参数而放置的逻辑代码封装成一个过程,然后在RESTART和WHEN-NEW-FORM-INSTANCE中调用它。你或许还会在目标表单的WHEN-NEW-FORM-INSTANCE触发器中增加些代码,来检查由APP_NAVIGAGE.EXECUTE和FND_FUNCTION.EXECUTE设定的全局变量的值,你可以根据这些值来设置目标表单的位置。

输入参数说明:

function_name  要执行的form的开发人员使用的名称

open_flag  为Y是代表使用OPEN_FORM,为N时代表使用NEW_FORM,你应该总是为该参数设置为Y,意味这总是使用oracle form内置的OPEN_FORM子过程而不是NEW_FORM

session_flag  当设置为Y时(默认值)表示新打开的表单使用一个新的数据库会话,如果传递的是N时就是使用当前表单的会话。如果是新会话,那么新表单的事务处理是和已存在表单不相同的。

other_params  传递给定义在form中的forms functions的额外参数,可以用来动态设置参数,可以设定任何多个参数。

active_flag  请使用ACTIVATE或者NO_ACTIVATE,默认是ACTIVATE,表示将焦点放到新打开的表单上,若为NO_ACTIVATE则代表将焦点放在源表单上。

pinned  如果设置为TRUE的话,就代表打开一个新的功能实例,不重复利用,这样和FND_FUNCTION.EXECUTE就一样了。如果设置为FALSE的话,就代表重复利用已经通过APP_NAVIGATE.EXECUTE打开的表单,否则就打开一个新实例。

24.9 APP_RECORD  处理记录

u  APP_RECORD.TOUCH_RECORD

语法:PROCEDURE touch_record(block_name    VARCHAR2 DEFAULT NULL,
                       record_number NUMBER DEFAULT NULL);

描述:设置记录的状态从NEW变成INSERT_STATUS。对于一个QUERY记录来说,记录将会被锁定,其状态也将变成CHANGED_STATUS。不管哪种情况,该过程将记录保存到数据库中。

输入参数说明:

block_name  数据块名称

record_number  要操作的记录

u  APP_RECORD.HIGHLIGHT

语法:PROCEDURE app_record.highlight(VALUE VARCHAR2 / NUMBER);

描述:更改当前记录的外观属性,它是通过对当前记录的每个TEXT_ITEM, LIST 和DISPLAY_ITEM调用内置的DISPLAY_ITEM来设置的。如果数据块的RECORDS_DISPLAYED是1的话,那么就会什么都不做。要高亮显示记录,请给该过程传递参数SELECTED_DATA,要取消高亮显示的话,请给改过程传递参数DATA,如果你想应用某个外观属性,可以将该外观属性传递给它。

建议:为了改善大的且有许多隐藏字段的数据块性能,请将所有隐藏字段放到数据块的末尾,然后添加一个名字为APPCORE_STOP的非数据库字段在这些字段的前面,当APP_RECORD.HIGHLIGHT遇到这个APPCORE_STOP字段时就会停止高亮显示后面的字段了。

输入参数说明:

value  你想应用的外观属性

u  APP_RECORD.FOR_ALL_RECORDS

语法:

PROCEDURE app_record.for_all_records(block_name   VARCHAR2,
                                     trigger_name VARCHAR2);

PROCEDURE app_record.for_all_records(trigger_name VARCHAR2);

描述:该过程为当前数据块或者指定数据块的所有记录执行某个触发器。如果你指定某个数据块的话,那么该数据块的GO_BLOCK触发器将会被触发,当完成时,光标会返回到原来的块和项目。

如果该过程失败了,将会引发from_trigger_failure异常,光标将会停留在失败的那条记录上。如果没有查询到数据,该过程只触发一次。

输入参数说明:

block_name  数据块名称

trigger_name  要执行的触发器名称

u  APP_RECORD.DELETE_ROW

语法:

PROCEDURE app_record.delete_row(check_delete BOOLEAN DEFAULT FALSE,
                                product_name VARCHAR2 DEFAULT NULL,
                                message_name VARCHAR2 DEFAULT NULL);

FUNCTION app_record.delete_row(check_delete BOOLEAN DEFAULT FALSE,
                               product_name VARCHAR2 DEFAULT NULL,
                               message_name VARCHAR2 DEFAULT NULL) RETURN BOOLEAN;

描述:该过程用来提供一个消息以确认用户真的打算删除记录。如果是该过程的函数版被调用的话,如果用户选择确定要删除记录的话,该函数返回TRUE,但是并不会删除记录,否则返回FALSE。如果有一个复杂的删除的话,那么你可以调用该过程来确认用户真的想删除记录。如果该过程的过程版被调用的话,如果用户确认要删除,那么记录会被真的删除掉。如果有多个数据块允许删除的话,请定制自己的消息。

输入参数说明:

check_delete  是否检查数据块的DELETE_ALLOWED属性,可选参数

product_name   如果使用自己的消息,这个参数就是要传递的应用产品名称。如果没有传递值的话,那么就会使用默认的消息。可选参数。

message_name  如果提供了product_name参数,那么该参数就是消息的名称。

u  APP_RECORD.VALIDATE_RANGE

语法:

PROCEDURE app_record.validate_range(from_item    VARCHAR2,
                                    to_item      VARCHAR2,
                                    range_name   VARCHAR2 DEFAULT NULL,
                                    event_name   VARCHAR2 DEFAULT 'when-button-pressed',
                                    dtype        VARCHAR2 DEFAULT 'date',
                                    product_name VARCHAR2 DEFAULT NULL,
                                    message_name VARCHAR2 DEFAULT NULL);

描述:该过程用来做范围检查,确保用户输入的起始范围小于截至范围。可以在查找按钮(罗勇补注:此处的查找按钮应该指定制查询窗口中的查找按钮)的WHEN–BUTTON–PRESSED触发器中调用,或者在数据块的WHEN–VALIDATE–RECORD 触发器中调用用来检查输入的范围是否合理。如果输入的范围不合法的话,该过程就会导航到范围的起始位置。如果你从一个不能导航的触发器中调用该过程,请提供一个范围名称用来显示给用户。

输入参数说明:

from_item  范围起始的项目名称,包括数据块名

to_item  范围截至的项目名称,包括数据块名

range_name  范围的名称,可选参数

event_name   触发器名称,用来决定触发器是否允许导航,可选参数

dtype 范围的数据类型,可以为DATE或者NUMBER,默认为DATE,可选参数

product_name   如果使用自己的消息,这个参数就是要传递的应用产品名称。如果没有传递值的话,那么就会使用默认的消息。可选参数。

message_name  如果提供了product_name参数,那么该参数就是消息的名称。

24.10 APP_STANDARD 包

u  APP_STANDARD.APP_VALIDATE

语法:PROCEDURE app_standard.app_validate(scope NUMBER);

描述:该过程和oracle form的内置过程Validate功能类似,但是它提供了导航到第一个违反验证规则的项目上的功能,而且它还提供了按钮标准支持。请用它代替oracle form的内置过程Validate。

输入参数说明:

scope  验证的范围。合法的值为DEFAULT_SCOPE, FORM_SCOPE,

BLOCK_SCOPE, RECORD_SCOPE, 和ITEM_SCOPE。

u  APP_STANDARD.EVENT

语法:PROCEDURE app_standard.event(event_name VARCHAR2);

描述:该过程引发特定事件的标准行为。TEMPLATE已经包含了所有必须的该过程的调用。

输入参数说明:

event_name  事件或者触发器的名称

u  APP_STANDARD.SYNCHRONIZE

语法:PROCEDURE app_standard.synchronize;

描述:应用菜单项目,因为菜单项目不会自动调整。比如,你对菜单栏或者工具栏哪些是否可用做了更改,请调用该过程,就会调整菜单栏或者工具栏了。

u  APP_STANDARD.PLATFORM

语法:APP_STANDARD.PLATFORM varchar2(30);

描述:该函数返回的是GET_APPLICATION_PROPERTY(USER_INTERFACE) 的值,可能的值是’MACINTOSH’, MSWINDOWS’, MSWINDOWS32’, 和

’MOTIF’。

举例:

if APP_STANDARD.PLATFORM = 'MSWINDOWS' then
    MDI_height := get_window_property(FORMS_MDI_WINDOW,HEIGHT);
end if;

24.11 APP_WINDOW 处理窗口

u  APP_WINDOW.CLOSE_FIRST_WINDOW

语法:PROCEDURE app_window.close_first_window;

描述:该过程退出表单,如果失败的话就会引发FORM_TRIGGER_FAILURE异常。

u  APP_WINDOW.PROGRESS

语法:PROCEDURE app_window.progress(percent NUMBER);

描述:管理progress_indicator这个对象,不是很明白,不翻译了。

u  APP_WINDOW.SET_COORDINATION

语法:

PROCEDURE app_window.set_coordination(event         VARCHAR2,
                                      coordination  VARCHAR2,
                                      relation_name VARCHAR2);

描述:根据一个协调复选框的状态来设置一个关系的延期协调属性是开还是关,这个协调复选框一般是DEFERRED或者IMMEDIATE。对于一个关闭的窗口来讲,这个关系一般是DEFERRED。当协调被设置为DEFERRED时,AutoQuery将会被打开。

输入参数说明:

event  触发器名称,比如WHEN–CHECKBOX–CHANGED,WHEN–WINDOW–CLOSED, 或者OPEN–WINDOW

coordination  DEFERRED或者IMMEDIATE,默认是IMMEDIATE

relation_name  关系的名称,在oracle form设计器的数据块下的关系节点下字节点的名称

u  APP_WINDOW.SET_WINDOW_POSITION

语法:

PROCEDURE app_window.set_window_position(child  VARCHAR2,
                                         rel    VARCHAR2,
                                         PARENT VARCHAR2 DEFAULT NULL);

描述:这个过程将窗口的位置设置为如下之一:

CASCADE

RIGHT

BELOW

OVERLAP

CENTER

FIRST_WINDOW

如果窗口是打开的且是暗的(罗勇补注相当于windows中所属的非活动窗口),那么这个过程将会将这个窗口置为活动窗口,如果窗口是最小化的,那么这个过程将会将其大小正常化。如果系统可用资源低(特别是在windows上容易出现这种问题),那么将会显示一个警告信息。

输入参数说明:

child  你要设置位置的窗口名称

rel  窗口显示的风格

parent  要设置的窗口(也就是child参数指定的窗口)放置位置所参考的窗口

u  APP_WINDOW.SET_TITLE

语法:

PROCEDURE app_window.set_title(window_name VARCHAR2,
                               session     VARCHAR2,
                               instance1   VARCHAR2 DEFAULT 'app_argument_not_passed',
                               instance2   VARCHAR2 DEFAULT 'app_argument_not_passed',
                               instance3   VARCHAR2 DEFAULT 'app_argument_not_passed');

描述:以标准格式来设置窗口的标题。

输入参数说明:

window_name  要设置标题的窗口的名字

session  一般的会话信息,比如组织,帐套等,不应超过64个字符

instance1,2,3  可选参数,从父记录获取的上下文信息,这三个参数相加起来的长度不应超过240个字符

素格格新疆特产店--做最好新疆特产的搬运工。
本店由博主的新疆老婆开设,搬运各种最好的新疆特产,是自用,送礼,年货,孝敬长辈特别是(岳)父母的首选!
ORACLE EBS 开发 APPCORE API 之二 - 罗勇 - 罗勇的博客
 
  评论这张
 
阅读(1852)| 评论(0)

历史上的今天

在LOFTER的更多文章

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2018