- 必要的环境设置
NLS_LANG
该环境变量在操作系统中设置,建议其值为:
AMERICAN_AMERICA.ZHS16CGB231280
FORMS45_PATH
该环境变量在操作系统中设置,用于指定引用对象的存放路径,请确认其值包含:
<$AU_TOP>/forms/US
<$AU_TOP>/resource
这是在TEMPLATE.fmb里面内置的对象,可以看到,form里包含calendar窗口、calendar画布、calendar数据块以及一些触发器等。
在template模板中创建一个数据块emp,其中hiredate为日期类型,我们选中hiredate项,设置其lov属性,选择“值列表”属性为ENABLE-LIST-LAMP,设置“从列表中验证”为“否”。
接下来创建hiredate项级触发器key-listval,写入代码:calendar.show;--此时默认为当天日期;注意:你可以给函数设置参数,该参数为日期的默认值,eg:calendar.show(to_date('','YYYY-MM-DD'));ok,运行测试,弹出值列表时就可以看到日历了。
-
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中进行调用即可。
3)对于业务数据表,要考虑建立15个弹性域字段;
4)如果对于需要并发请求处理过的数据表,则需要增加跟踪请求的4个字段
REQUEST_ID NUMBER
PROGRAM_APPLICATION_ID NUMBER
PROGRAM_ID NUMBER
PROGRAM_UPDATE_DATE DATE
5)要考虑这个表是否区分OU和库存组织;
-
在FORM开发中不管是FORM级还是BLOCK级或者ITEM级的TRIGGER,不要把代码直接写到TRIGGER中,要使用PROGRAM UNIT来创建相应的TRIGGER,举例如下:
FORM级和BLOCK级可以按照下面格式在PROGRAM UNIT中创建PACKAGE:
PACKAGE BODY FORM_NAME/BLOCK_NAME IS
PROCEDURE EVENT_HANDLER( EVENT IN VARCHAR2)
IS
BEGIN
IF EVENT = 'WHEN-NEW-FORM-INSTANCE' THEN
XXXXXXXX;
ELSIF EVENT = 'PRE-FORM' THEN
XXXXXXXX;
ELSE
APP_EXCEPTION.INVALID_ARGUMENT('EVENT_HANDLER', 'EVENT', EVENT);
END IF;