常用item 事件包括:
when_validate_item : 调用一个item的验证并且设置动态的item 属性。
when_new_record_unstance :重置item属性到默认状态给一个新的纪录。
init:测试当前条件,必要时重置默认属性和动态属性。
-----------------------------------------------------------------------
EBS中客户化表结构的设计原则:
1)必须包括一个主键,并建立相应的序列;
2)建立5个WHO字段,也就是
CREATED_BY NUMBER
CREATION_DATE DATE
LAST_UPDATED_BY NUMBER
LAST_UPDATE_DATE DATE
LAST_UPDATE_LOGIN NUMBER
在FORM中使用属性类:CREATION_OR_LAST_UPDATE_DATE,WHO字段并不会自动地被赋值,必须自己在FORM中编写代码来完成这项工作。
EBS中提供了一个函数FND_STANDARD.SET_WHO,大家只要在FORM的BLOCK级触发器PRE-INSERT/PRE-UPDATE中进行调用即可。
对于记录的PRE-INSERT,PRE-UPDATE Trigger中加入了fnd_standard.set_who后,
程序自动会对CREATE _BY,CREATION_DATE,LAST_UPDATE_BY,LSAT_UPDATE_DATE,LAST_UPDATE_LOGIN这5个栏位赋新的值
-----------------------------------------------------------------------
form 编程规则:
*引用字段时,使用 :BlockName.ItemName的形式;
*使用亚元直接用dual,不要用sys.dual和system.dual;
*使用object IDs获得更好的性能;
declare
x_id item;
begin
x_id := find_item(’block.item’);
end;
*总是使用显式游标;
*使用FND_MESSAGE程序显示信息
*使用FND_MESSAGE.DEBUG拉显示debugging信息,
典型用法:
ELSE
fnd_message.debug(’Invalid event passed to
when_validate_item : 调用一个item的验证并且设置动态的item 属性。
when_new_record_unstance :重置item属性到默认状态给一个新的纪录。
init:测试当前条件,必要时重置默认属性和动态属性。
-----------------------------------------------------------------------
EBS中客户化表结构的设计原则:
1)必须包括一个主键,并建立相应的序列;
2)建立5个WHO字段,也就是
CREATED_BY NUMBER
CREATION_DATE DATE
LAST_UPDATED_BY NUMBER
LAST_UPDATE_DATE DATE
LAST_UPDATE_LOGIN NUMBER
在FORM中使用属性类:CREATION_OR_LAST_UPDATE_DATE,WHO字段并不会自动地被赋值,必须自己在FORM中编写代码来完成这项工作。
EBS中提供了一个函数FND_STANDARD.SET_WHO,大家只要在FORM的BLOCK级触发器PRE-INSERT/PRE-UPDATE中进行调用即可。
对于记录的PRE-INSERT,PRE-UPDATE Trigger中加入了fnd_standard.set_who后,
程序自动会对CREATE _BY,CREATION_DATE,LAST_UPDATE_BY,LSAT_UPDATE_DATE,LAST_UPDATE_LOGIN这5个栏位赋新的值
-----------------------------------------------------------------------
form 编程规则:
*引用字段时,使用 :BlockName.ItemName的形式;
*使用亚元直接用dual,不要用sys.dual和system.dual;
*使用object IDs获得更好的性能;
declare
x_id item;
begin
x_id := find_item(’block.item’);
end;
*总是使用显式游标;
*使用FND_MESSAGE程序显示信息
*使用FND_MESSAGE.DEBUG拉显示debugging信息,
典型用法:
ELSE
fnd_message.debug(’Invalid event passed to
control.orders_lines: ’ || EVENT);
END IF;
*使用RAISE FORM_TIGGER_FAILURE来终止应用层的运行
*使用APP_EXCEPTION.RAISE_EXCEPTION 来终止数据库层的运行
*用fnd_fuction.execute代替open_form
*不要使用CALL_FORM
*用do_key(‘exit_form’)代替exit_form
To exit the Oracle Applications suite:
copy (’Y’, ’GLOBAL.APPCORE_EXIT_FLAG’);
do_key(’exit_form’);
*用do_key(‘clear_form’)代替clear_form
*用do_key('COMMIT_form')代替commit
*用do_key(‘edit_field’)代替EDIT_FIELD/EDIT_TEXTITEM
-----------------------------------------------------------------------
触发器编程规则
*Post-Query trigger说明:
用带有LOVS的items使用lov来验证是否正确,当他们在无意识的情况下被要求保存changes会使用户感到混淆,这种情况下,在你的post-query 触发器里面重置记录状态 :
set_record_property(:system.trigger_record,:system.trigger_block, STATUS,QUERY_STATUS);
*必须设置为Before的trigger有WHEN-NEW-RECORD-INSTANCE, WHEN-NEW-BLOCK-INSTANCE,WHEN-NEW-ITEM-INSTANCE;
可以设置为Override的trigger有KEY-DUPREC,KEY-MENU,KEY-LISTVAL,QUERY_FIND, ACCEPT。
END IF;
*使用RAISE FORM_TIGGER_FAILURE来终止应用层的运行
*使用APP_EXCEPTION.RAISE_EXCEPTION 来终止数据库层的运行
*用fnd_fuction.execute代替open_form
*不要使用CALL_FORM
*用do_key(‘exit_form’)代替exit_form
To exit the Oracle Applications suite:
copy (’Y’, ’GLOBAL.APPCORE_EXIT_FLAG’);
do_key(’exit_form’);
*用do_key(‘clear_form’)代替clear_form
*用do_key('COMMIT_form')代替commit
*用do_key(‘edit_field’)代替EDIT_FIELD/EDIT_TEXTITEM
-----------------------------------------------------------------------
触发器编程规则
*Post-Query trigger说明:
用带有LOVS的items使用lov来验证是否正确,当他们在无意识的情况下被要求保存changes会使用户感到混淆,这种情况下,在你的post-query 触发器里面重置记录状态 :
set_record_property(:system.trigger_record,:system.trigger_block, STATUS,QUERY_STATUS);
*必须设置为Before的trigger有WHEN-NEW-RECORD-INSTANCE, WHEN-NEW-BLOCK-INSTANCE,WHEN-NEW-ITEM-INSTANCE;
可以设置为Override的trigger有KEY-DUPREC,KEY-MENU,KEY-LISTVAL,QUERY_FIND, ACCEPT。