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

微软MVP罗勇的博客

微软MVP罗勇,www.luoyong.me

 
 
 

日志

 
 

ORACLE EBS 开发 APPCORE API  

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

  下载LOFTER 我的照片书  |

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

 

24.1 APP_COMBO 组合块API

过程:APP_COMBO.KEY_PREV_ITEM

位置:APPCORE 库

说明:在KEY–PREV–ITEM触发器中调用该过程来为在一条记录的第一个项目实施back-tabbing行为提供标准行为。确保光标会移到上一条记录的最后一个项目。

24.2 APP_DATE 和FND_DATE 日期转换API

APP_DATE在APPCORE库中,可以从表单和非附加到APPCORE的库中调用,附加到APPCORE的库比如CUSTOM就不能调用APP_DATE包,那么在CUSTOM库中可以用APP_DATE2代替APP_DATE,同样的参数和功能。

FND_DATE在数据库中,你可以从SQL和数据库包中调用它。

关于日期的属于说明:

表单日期字段:表单中的文本项目,其数据类型是Date;

表单日期时间字段:表单中的文本项目,其数据类型是Datetime;

表单文本字段:表单中的文本项目,其数据类型是Char;

PL/SQL Date:一个PL/SQL变量,其数据类型是Date,这种变量同时包含了日期和时间部分。

用户日期格式:用户看到的日期的显示格式,从环境变量FORMS60_USER_DATE_FORMAT中获取;

用户日期时间格式:用户看到的包含时间的日期的显示格式,从环境变量FORMS60_USER_DATETIME_FORMAT中获取;

规范日期格式:一个标准的日期格式,用来显示日期为字符串,与语言无关。oracle应用程序使用YYYY/MM/DD HH24:MI:SS 作为规范日期格式。

警告:APP_DATE和FND_DATE引用了几个包变量,比如canonical_mask,user_mask等等。oracle应用程序的正确运行依赖于这些值被正确设置,所以你决不应该更改这些变量的值。

u  APP_DATE.CANONICAL_TO_DATE 和 FND_DATE.CANONICAL_TO_DATE

语法:FUNCTION app_date.canonical_to_date(canonical VARCHAR2) RETURN DATE;

位置:APPCORE库和数据库

描述:这两个函数将规范日期格式的字符串(可以包括或者不包括时间部分)转换为一个PL/SQL日期。如果APP_DATE.CANONICAL_TO_DATE转换失败的话,将会产生一个消息,并且引发一个form_trigger_failure的异常。而FND_DATE.CANONICAL_TO_DATE转换失败的话,它会根据TO_DATE而引发一个标准异常,不会产生消息。

输入参数说明:

canonical是规范日期格式字符串,用来转换为PL/SQL日期

举例1:

DECLARE
  hire_date         VARCHAR2(20) := '1980/01/01';
  num_days_employed NUMBER;
BEGIN
  num_days_employed := trunc(SYSDATE) - app_date.canonical_to_date(hire_date);
  message('Length of employment in days: ' || to_char(num_days_employed));
END;

举例2:

SELECT fnd_date.canonical_to_date(tab.my_char_date)
  FROM .. .

u  APP_DATE.DISPLAYDATE_TO_DATE 和 FND_DATE.DISPLAYDATE_TO_DATE

语法:FUNCTION app_date.displaydate_to_date(chardate VARCHAR2) RETURN DATE;

位置:APPCORE库和数据库

描述:这两个函数将一个用户日期格式的字符串转换为PL/SQL日期。如果APP_DATE.DISPLAYDATE_TO_DATE转换失败的话,将会产生一个消息,并且引发一个form_trigger_failure的异常。而FND_DATE.DISPLAYDATE_TO_DATE转换失败的话,它会根据TO_DATE而引发一个标准异常,不会产生消息。在以前的版本中,该函数的名字叫APP_DATE.CHARDATE_TO_DATE,该函数被保留以保持兼容性。

输入参数说明:

chardate  用户日期格式的字符串,用来转换成为PL/SQL日期

u  APP_DATE.DISPLAYDT_TO_DATE 和 FND_DATE.DISPLAYDT_TO_DATE

语法:FUNCTION app_date.displaydt_to_date(chardt VARCHAR2) RETURN DATE;

位置:APPCORE和数据库

描述:这两个函数将一个用户日期时间格式的字符串转换为PL/SQL日期。如果APP_DATE.DISPLAYDT_TO_DATE转换失败的话,将会产生一个消息,并且引发一个form_trigger_failure的异常。而FND_DATE.DISPLAYDT_TO_DATE转换失败的话,它会根据TO_DATE而引发一个标准异常,不会产生消息。在以前的版本中,该函数的名字叫APP_DATE.CHARDT_TO_DATE,该函数被保留以保持兼容性。

输入参数说明:

charDT  用户日期时间格式的字符串,用来转换成为PL/SQL日期

u  APP_DATE.DATE_TO_DISPLAYDATE 和 FND_DATE.DATE_TO_DISPLAYDATE

语法:FUNCTION app_date.date_to_displaydate(dateval DATE) RETURN VARCHAR2;

位置:APPCORE库和数据库

描述:这两个函数将一个PL/SQL日期转换成用户日期格式的字符串,要转换的PL/SQL日期的时间部分将会被忽略。在以前的版本中,该函数的名字叫APP_DATE.DATE_TO_CHARDATE,该函数被保留以保持兼容性。

输入参数说明:

charval  要转换的PL/SQL日期

举例:

DECLARE
  my_displaydate VARCHAR2(30);
  my_dateval     DATE := SYSDATE;
BEGIN
  my_displaydate := app_date.date_to_displaydate(my_dateval);
END;

u  APP_DATE.DATE_TO_DISPLAYDT 和 FND_DATE.DATE_TO_DISPLAYDT

语法:FUNCTION app_date.date_to_displaydt(dateval DATE) RETURN VARCHAR2;

位置:APPCORE和数据库

描述:这两个函数将一个PL/SQL日期转换成用户日期时间格式的字符串,要转换的PL/SQL日期的时间部分将会被保留。在以前的版本中,该函数的名字叫APP_DATE.DATE_TO_CHARDT,该函数被保留以保持兼容性。

输入参数说明:

charval  要转换的PL/SQL日期

举例:

DECLARE
  my_displaydate VARCHAR2(30);
  my_dateval     DATE := SYSDATE;
BEGIN
  my_displaydate := app_date.date_to_displaydt(my_dateval);
END;

u  APP_DATE.DATE_TO_FIELD

语法:

PROCEDURE app_date.date_to_field(dateval        DATE,
                                 field          VARCHAR2,
                                 datetime       VARCHAR2 DEFAULT 'default',
                                 date_parameter BOOLEAN DEFAULT FALSE);

位置:APPCORE库

描述:这个过程将一个PL/SQL日期拷贝至一个表单字段,表单参数或者全局变量。当需要处理日期时请用该过程代替COPY。当拷贝至一个数据类型为DATE或者DATETIME的表单字段时,会使用合适的内部掩码来保持它的数据类型。当拷贝至一个数据类型为CHAR的表单字段时,默认情况下,若字段的长度足够,则该过程采用用户日期时间格式,若长度不够则采用用户日期格式。当拷贝至全局变量或者表单变量时,默认情况下,它会假设是CHAR数据类型,并且使用规范日期格式,忽略时间部分,可以使用参数date_parameter来覆盖该默认行为。

输入参数说明:

dateval 要拷贝的PL/SQL日期

field  要拷贝到的表单字段名称,包括数据块的名称

datetime  用来覆盖默认的日期格式或者日期时间格式的规则。默认值是DEFAULT,当指定为DATE时,使用日期格式,当指定为DATETIME时使用日期时间格式。一般来说,你用该参数来将日期拷贝至全局变量或者表单参数时指定日期格式或者日期时间格式。

date_parameter 当你将日期拷贝至数据类型为date的表单参数时使用该参数,设置为TRUE时,日期将会作为日期值拷贝而不是作为字符串值拷贝。

举例:

请将下面代码 COPY(to_char(my_date_value, ’DD–MON–YYYY

{HR24:MI:SS}’,’my_block.my_date_field’);

换成:

app_date.date_to_field(my_date_value,

’my_block.my_date_field’);

u  APP_DATE.FIELD_TO_DATE

语法:FUNCTION app_date.field_to_date(field          VARCHAR2 DEFAULT NULL,
                                date_parameter BOOLEAN DEFAULT FALSE) RETURN DATE;

位置:APPCORE库

描述:这个过程从表单字段,表单参数或者全局变量中获取值并返回PL/SQL日期。当需要处理日期时请使用该过程代替NAME_IN内置过程。当被拷贝的表单字段的数据类型是date或者datetime时,该过程会采用合适的内部掩码来维护它。当被拷贝的表单字段的数据类型是CHAR类型时,若字段长度足够则采用用户日期时间格式,若长度不够则采用用户日期格式。当从表单参数或者全局变量拷贝时,默认情况下认为被拷贝的是char类型数据,并使用规范日期格式,包不包含时间部分则它的长度。当该过程转换失败时,它会根据TO_DATE引发一个标准异常,但是不会产生消息。

输入参数说明:

field  要拷贝的表单字段名称,包括数据块的名称

date_parameter 当你从数据类型为date的表单参数拷贝值时使用该参数。当该参数设定为TRUE时,被拷贝的值认为是日期而不是字符串。

举例:

请将如下代码

to_date(NAME_IN(’my_block.my_date_field’),

’DD–MON–YYYY {HH24:MI:SS}’);

换成:

my_date =

app_date.field_to_date(’my_block.my_date_field’);

u  APP_DATE.VALIDATE_CHARDATE

语法:PROCEDURE app_date.validate_chardate(field VARCHAR2 DEFAULT NULL)

位置:APPCORE库

描述:该过程检查数据类型为char的表单字段的值,通过将其用用户日期格式解析来判断是否是一个合法的日期。如果转换为没有时间部分的日期失败,将会产生一个消息,并且引发form_trigger_failure异常。如果转换成功,该过程会将值拷贝至该字段以保持显示上的一致性。

输入参数说明:

field  要转换的字符串类型的表单字段名称,包括数据块名。如果该参数为空的话,使用SYSTEM.CURSOR_ITEM

u  APP_DATE.VALIDATE_CHARDT

语法:PROCEDURE app_date.validate_chardt(field VARCHAR2 DEFAULT NULL)

位置:APPCORE库

描述:该过程检查数据类型为char的表单字段的值,通过将其用用户日期时间格式解析来判断是否是一个合法的日期。如果转换为包含时间部分的日期失败,将会产生一个消息,并且引发form_trigger_failure异常。如果转换成功,该过程会将值拷贝至该字段以保持显示上的一致性。

输入参数说明:

field  要转换的字符串类型的表单字段名称,包括数据块名。如果该参数为空的话,使用SYSTEM.CURSOR_ITEM

u  FND_DATE.STRING_TO_DATE

语法:FUNCTION fnd_date.string_to_date(p_string IN VARCHAR2,
                                 p_mask   IN VARCHAR2) RETURN DATE;

位置:数据库,以存储函数存在

估计用不上,用于不知道字符串日期存储所使用的语言时而使用。

u  FND_DATE.STRING_TO_CANONICAL

语法:

FUNCTION fnd_date.string_to_canonical(p_string IN VARCHAR2,
                                      p_mask   IN VARCHAR2) RETURN VARCHAR2;

功能同上函数,只是使用规范日期格式返回字符串而已。

24.3 APP_EXCEPTION:异常处理API

为表单撰写的PL/SQL过程应该使用APP_EXCEPTION来引发异常。

u  APP_EXCEPTION.RAISE_EXCEPTION

语法:

PROCEDURE app_exception.raise_exception(exception_type VARCHAR2 DEFAULT NULL,
                                        exception_code NUMBER DEFAULT NULL,
                                        exception_text VARCHAR2 DEFAULT NULL);

位置:APPCORE库和数据库中(数据库中以存储过程形式存在)

描述:该过程存储异常信息并引发form_trigger_failure异常。

输入参数说明:

exception_type  错误前缀,用来指明错误类型,比如APP或者ORA

exception_code  标志错误的数字

exception_text  附加的上下文信息

u  APP_EXCEPTION.RETRIEVE

语法:PROCEDURE app_exception.retrieve;

位置:APPCORE库和数据库中(数据库中以存储过程形式存在)

描述:用来从数据库中获取异常信息

罗勇补注:在数据库中该包并无该过程

u  APP_EXCEPTION.GET_TYPE

语法:FUNCTION app_exception.get_type RETURN VARCHAR2;

位置:APPCORE库和数据库中(数据库中以存储过程形式存在)

描述:该函数返回错误类型

u  APP_EXCEPTION.GET_CODE

语法:FUNCTION app_exception.get_code RETURN NUMBER;

位置:APPCORE库和数据库中(数据库中以存储过程形式存在)

描述:该函数返回异常代码

u  APP_EXCEPTION.GET_TEXT

语法:FUNCTION app_exception.get_text RETURN VARCHAR2;

位置:APPCORE库和数据库中(数据库中以存储过程形式存在)

描述:该函数返回异常信息文本

u  APP_EXCEPTION.RECORD_LOCK_EXCEPTION

这个一个预定义异常,当记录不能被锁定时在异常处理部分调用该过程,它通常和APP_EXCEPTION.RECORD_LOCK_ERROR。

u  APP_EXCEPTION.RECORD_LOCK_ERROR

语法:PROCEDURE app_exception.record_lock_error(counter IN OUT NUMBER);

描述:这个过程询问用户是继续还是取消尝试锁定记录。如果用户选择继续的话,就会继续调用过程再次尝试。如果用户取消的话,就会显示”不能保留记录”的提示,并且引发form_trigger_error异常。该过程接收的counter参数应该为偶数,比如2,4,5等等,调用过程应该在一个循环中锁定记录,并且在该循环的WHEN APP_EXCEPTION.RECORD_LOCK_EXCEPTION异常处理部分调用RECORD_LOCK_ERROR,如果用户选择继续的话,那么RECORD_LOCK_ERROR返回并且循环继续,如果用户选择取消的话,RECORD_LOCK_ERROR引发form_trigger_error异常并且退出循环。

输入参数说明:

counter  RECORD_LOCK_ERROR所维护的尝试锁定记录的次数,调用该过程时序初始化为null或者0

u  APP_EXCEPTION.DISABLED

语法:PROCEDURE app_exception.disabled;

位置:该程序响铃。通常用来禁用简单的功能,一般是禁用KEY开头的触发器。

24.4 APP_FIELD:字段关系功能

u  APP_FIELD.CLEAR_FIELDS

语法:

PROCEDURE app_field.clear_fields(field1  VARCHAR2,
                                 field2  VARCHAR2 DEFAULT NULL,
                                 field3  VARCHAR2 DEFAULT NULL,
                                 field4  VARCHAR2 DEFAULT NULL,
                                 field5  VARCHAR2 DEFAULT NULL,
                                 field6  VARCHAR2 DEFAULT NULL,
                                 field7  VARCHAR2 DEFAULT NULL,
                                 field8  VARCHAR2 DEFAULT NULL,
                                 field9  VARCHAR2 DEFAULT NULL,
                                 field10 VARCHAR2 DEFAULT NULL);

描述:该过程用来清空最多10个字段的值,这些字段不能是复选框和必输的列表框。

u  APP_FIELD.CLEAR_DEPENDENT_FIELDS

语法:

PROCEDURE app_field.clear_dependent_fields(master_field VARCHAR2,
                                           field1       VARCHAR2,
                                           field2       VARCHAR2 DEFAULT NULL,
                                           field3       VARCHAR2 DEFAULT NULL,
                                           field4       VARCHAR2 DEFAULT NULL,
                                           field5       VARCHAR2 DEFAULT NULL,
                                           field6       VARCHAR2 DEFAULT NULL,
                                           field7       VARCHAR2 DEFAULT NULL,
                                           field8       VARCHAR2 DEFAULT NULL,
                                           field9       VARCHAR2 DEFAULT NULL,
                                           field10      VARCHAR2 DEFAULT NULL);

描述:如果父项目是NULL的话,用来清空最多10个相关项目,当然相关项目不能是复选框和必输的列表框。

输入参数说明:

master_field  父项目名称

field1 .. field10  相关项目名称

u  APP_FIELD.SET_DEPENDENT_FIELD

语法:

PROCEDURE app_field.set_dependent_field(event           VARCHAR2,
                                        master_field    VARCHAR2,
                                        dependent_field VARCHAR2 invalidate BOOLEAN DEFAULT FALSE);

 

PROCEDURE app_field.set_dependent_field(event           VARCHAR2,
                                        condition       BOOLEAN,
                                        dependent_field VARCHAR2 invalidate BOOLEAN DEFAULT FALSE);

说明:该过程基于父项目是否为空或者条件是否为真来决定一些项目是否可用,还可以清空项目。相关项目可以是文本项目,复选框项目或者弹出列表。

你一般在如下的触发器中调用该过程:

父项目的WHEN–VALIDATE–ITEM触发器中;

检测条件所依赖的字段的WHEN–VALIDATE–ITEM触发器中或者依赖字段的INIT触发器中;

PRE-RECORD;

POST-QUERY,仅用于依赖项目是在一个一次显示多条记录的数据块中。

输入参数说明:

trigger  触发器名称。如果是在父字段中调用该触发器,请使用VALIDATE代替触发器名称。触发器名称可能为WHEN–VALIDATE–ITEM,WHEN–CHECKBOX–CHANGED,WHEN–LIST–CHANGED, 或者WHEN–RADIO–CHANGED等等。

master_field  父字段名称。

condition  如果该逻辑表达式返回TRUE的话,相关项目就可以使用。

dependent_field  相关项目名称

invalidate  如果设置为TRUE的话,通过清空相关字段从而将该字段设置为不合法,如果相关项目是一个必须的列表或者选项组的话将该参数设置为TRUE。

u  APP_FIELD.SET_EXCLUSIVE_FIELD

语法:

PROCEDURE app_field.set_exclusive_field(event  VARCHAR2,
                                        field1 VARCHAR2,
                                        field2 VARCHAR2,
                                        field3 VARCHAR2 DEFAULT NULL);

描述:该过程使一组项目中只能有一个项目有值。如果在这其中某个项目中输入了值的话,那么其他几个相关项目就会被清空,而且不能导航到这几个项目上,但是通过鼠标点击是可以导航到这几个项目上的。这个过程只能设置2个或者3个项目互相排斥。

输入参数说明:

event  触发器名称。值为WHEN–NEW–RECORD–INSTANCE,PRE–RECORD, 或者VALIDATE。其中VALIDATE是取代这些触发器名称的:WHEN–VALIDATE–ITEM,WHEN–RADIO–CHANGED,WHEN–LIST–CHANGED, 或者

WHEN–CHECKBOX–CHANGED。

field1 字段名称,用数据块名.字段名的形式

field2 字段名称,用数据块名.字段名的形式

field3 字段名称,用数据块名.字段名的形式,可选

u  APP_FIELD.SET_INCLUSIVE_FIELD

语法:

PROCEDURE app_field.set_inclusive_field(event  VARCHAR2,
                                        field1 VARCHAR2,
                                        field2 VARCHAR2,
                                        field3 VARCHAR2 DEFAULT NULL,
                                        field4 VARCHAR2 DEFAULT NULL,
                                        field5 VARCHAR2 DEFAULT NULL);

描述:该过程用来处理最多5个字段,如果这几个字段中如果有一个字段有值,如果没有为任何一个字段输入值,那么这几个字段就不是必须的。

输入参数说明:

event  触发器名称。值为WHEN–NEW–RECORD–INSTANCE,PRE–RECORD, 或者VALIDATE。其中VALIDATE是取代这些触发器名称的:WHEN–VALIDATE–ITEM,WHEN–RADIO–CHANGED,WHEN–LIST–CHANGED, 或者

WHEN–CHECKBOX–CHANGED。

field1 字段名称

field2 字段名称

field3 字段名称,可选

field4 字段名称,可选

field5 字段名称,可选

u  APP_FIELD.SET_REQUIRED_FIELD

语法:

PROCEDURE app_field.set_required_field(event     VARCHAR2,
                                       condition BOOLEAN,
                                       field1    VARCHAR2,
                                       field2    VARCHAR2 DEFAULT NULL,
                                       field3    VARCHAR2 DEFAULT NULL,
                                       field4    VARCHAR2 DEFAULT NULL,
                                       field5    VARCHAR2 DEFAULT NULL);

说明:这个过程基于condition参数是否返回true将几个项目设置为必输或者非必输。

参数说明:

event  触发器名称

condition  如果该条件返回true的话,那么要设定的字段为必输。

field1  字段名称

field2 字段名称

field3 字段名称,可选

field4 字段名称,可选

field5 字段名称,可选

24.5 APP_FIND:查询窗口功能

使用下面这个过程来实现查询窗口功能。

u  APP_FIND.NEW

语法:PROCEDURE app_find.NEW(block_name VARCHAR2);

描述:查询窗口的新建按钮调用(罗勇补注新建按钮在中文版一般会被命名为取消按钮),用来将用户返回到该查询窗口所基于的数据块的新纪录上。

输入参数说明:

block_name  查询窗口所基于的数据块的名称

u  APP_FIND.CLEAR

语法:PROCEDURE app_find.clear;

描述:查询窗口的清空按钮调用,用来清空用户输入的值。

u  APP_FIND.CLEAR_DETAIL

语法:PROCEDURE app_find.clear_detail(detail_block VARCHAR2);

描述:这个过程清空查询窗口所基于的数据块,该过程只能从能导航的触发器中调用。

输入参数说明:

detail_block  要清空的数据块的名称

举例:APP_FIND.CLEAR_DETAIL('MYBLOCK');

u  APP_FIND.FIND

语法:PROCEDURE app_find.find(block_name VARCHAR2);

描述:查询窗口的查询按钮调用,用来执行查询。

输入参数说明:

block_name  查询窗口所基于的数据块的名称

u  APP_FIND.QUERY_RANGE

语法:

PROCEDURE app_find.query_range(low_value    VARCHAR2 / DATE / NUMBER,
                               high_value   VARCHAR2 / DATE / NUMBER,
                               db_item_name VARCHAR2);

说明:用来创建最高最低范围查询。

输入参数说明:

low_value  查找范围的最小值

high_value  查找范围的最大值

db_item_name   要执行范围查询的项目名称

u  APP_FIND.QUERY_FIND

语法:

PROCEDURE app_find.query_find(lov_name VARCHAR2);

PROCEDURE app_find.query_find(block_window VARCHAR2,
                              find_window  VARCHAR2,
                              find_block   VARCHAR2);

描述:这个过程弹出LOV窗口或者查找窗口。请在用户自定义触发器QUERY_FIND中调用它。

输入参数说明:

lov_name   要弹出的LOV的名称

block_window   查询所基于的数据窗口的名称

find_window  查询窗口的名称

find_block  查询窗口中数据块的名称

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

历史上的今天

在LOFTER的更多文章

评论

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

页脚

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