2.4 建立主体对象
1.窗口
删除模板自带窗口BLOCKNAME并新建窗口,主WINDOW建议起名为MAIN或MAIN_WIN,便于维护。
为主WINDOW设置窗口名称、最小化窗口名称和主画布,并把子类设置为WINDOW。
在form级触发器pre-form中添加以下代码:
app_window.set_window_position('MAIN', 'FIRST_WINDOW');
有时候自己做的form运行时跑出来的界面却不是自己做的界面,很可能就是因为没有删除BLOCKNAME对象且没有修改以上这句代码中的第一个参数。 2.画布
删除模板自带画布BLOCKNAME并新建画布,主CANVAS建议起名为MAIN,便于维护。
为主画布设置窗口,并把子类设置为CANVAS。
为实现folder功能,还至少需要一个用来放置非固定列的画布,子类选择CANVAS_STACKED。
画布的上下顺序对堆叠的效果有影响,将置于底层的画布放置在上方。 3.数据块
删除模板自带数据块BLOCKNAME。
先在数据库中创建好需要的视图,需要带有基表的ROWID,并起别名为ROW_ID。一般较少直接使用基表,这样会降低程序的灵活性。再使用数据库创建向导建立对应的数据块。
Header块及Line块的固定列放置在主画布上,Line块的非固定列放置在堆叠画布上。Line块需要有滚动条,且滚动条放置于MAIN画布上。
EBS Form开发总结
2.5 初始化参数
在Header块中找到刚创建的关系,在属性中把防止无主记录操作选成是。
手动创建一个数据块CONTROL(一般按钮放于此),属性中的数据库数据块选择否。 手动创建一个提示数据块(folder需要),属性中的数据库数据块选择否。
Header块的导航,导航器样式选择改变数据块,前一个数据块选择自身,后一个数据块选择Line块,使用户能从Header导航至Line。
Line块的导航,导航器样式选择改变记录,前一个数据块选择Header块,后一个数据块选择自身,使用户能从一行导航至下一行。
将全部块的子类设置为BLOCK。根据需要对Header块和Line块的数据库属性,包括允许查询、允许插入、允许更新和允许删除等,做出调整。
注意点:1.块名长度不可大于22。
2. 头行结构设置级联删除时,系统会自动添加一个pre-delete触发器代码。
1.库存组织参数
如果form中的操作不需要区别不同的库存组织,可以跳过此步。
增加4个参数: number型的ORG_ID; char型的ORG_CODE; char型的ORG_NAME;
number型的CHART_OF_ACCOUNTS_ID。
可以手动创建。也可以从INVSTAND.fmb的对象组中将INV_PARAMS拖到正在开发的form的对象组中,选择子类。
在form级触发器pre-form中添加以下代码: FND_ORG.CHOOSE_ORG;
用户在打开form前就需要选择库存组织,库存组织的相应信息会被保存在以上4个参数中。
EBS Form开发总结
在form级触发器when-new-form-instance中添加以下代码:
app_window.set_title('QUERY_FIND',name_in('PARAMETER.ORG_NAME')); app_window.set_title('MAIN',name_in('PARAMETER.ORG_NAME'));
使form中的窗口名称后面都带上库存组织名称,便于用户操作。例如:交货平台(中弹组织)。
在Header块级触发器when-new-block-instance中添加以下代码:
set_block_property('HEADER_BLOCKNAME',DEFAULT_WHERE,'ORGANIZATION_ID = '||:parameter.ORG_ID||' ');
From后续开发中使用ORG_ID区别不同库存组织。
2.配置文件参数
如果form功能不涉及配置文件,可以跳过此步。
创建参数用以保存配置文件的值,参数初始值设置为当配置文件值为空时所希望的缺省值。如item_ updatability_control,初始为N。
在form级触发器PRE-FORM中添加以下代码:
if fnd_profile.VALUE('CUX_XXX_XXX_CONTROLS') is not null then
:parameter.item_updatability_control:=fnd_profile.VALUE('CUX_XXX_XXX_CONTROLS'); end if;
form后续功能开发通过此类参数达到配置文件控制的作用。
3.业务实体参数
如果form中的操作不需要区别不同的业务实体,可以跳过此步。
实际上,业务实体参数是一个名称为“ORG_ID”的特定的配置文件参数。
创建参数用以保存业务实体ID,一般起名为ORG_ID。
EBS Form开发总结
2.6 标准代码
在form级触发器PRE-FORM中添加以下代码: if fnd_profile.VALUE('ORG_ID') is not null then
:parameter.ORG_ID:=fnd_profile.VALUE(' ORG_ID ');
end if;
From后续开发中使用ORG_ID区别不同业务实体。 1.APP_CUSTOM
在程序单元app_custom. close_window中修改以下代码: if (wnd = 'MAIN') then
app_window.close_first_window;
表现的效果是:当用户点击MAIN窗口右上方的叉,整个form会退出;而当用户点击form的其他窗口右上方的叉,仅会隐藏当前窗口。
2.FORM同名PACKAGE
在程序单元中增加一个与form同名的package,package头里定义如下procedure: procedure event_handler(event varchar2);
form级触发器里的代码都建议写在这个event_handler内,尤其是行数多于3行时。
在package body里添加以下代码(不用folder可以跳过): PROCEDURE event_handler(event VARCHAR2) IS BEGIN
IF event = 'WHEN-NEW-FORM-INSTANCE' THEN app_folder.define_folder_block('FOLDER_NAME', 'LINE_BLOCKNAME',
'LINE_PROMPT_BLOCKNAME', 'FOLDER_STACKED_CANVAS', 'MAIN', NULL, NULL,
EBS Form开发总结
NULL);
app_folder.event('INSTANTIATE'); END IF;
END event_handler;
3.FORM级触发器
以下代码均为实现folder。
名称
When-window-resized
FOLDER_ACTION
KEY-CLRFRM
WHEN-NEW-FORM-INSTANCE
代码
if :system.event_window in ('MAIN') then
app_folder.event('WHEN-WINDOW-RESIZED'); end if;
app_folder.event(:global.folder_action);
app_folder.event('KEY-CLRFRM'); FORM_NAME.event_handler('WHEN-NEW-FORM-INSTANCE');
注意点:如果When-window-resized中的window名不正确,在form实际运行时会发现folder区域不会随窗口宽度的变化而变化。
4.BLOCK级触发器
为实现folder功能,一共需要在Line块添加BLOCK级触发器14个:
触发器名称
WHEN-NEW-RECORD-INSTANCE
WHEN-NEW-BLOCK-INSTANCE PRE-QUERY POST-QUERY PRE-BLOCK POST-BLOCK KEY-ENTQRY KEY-EXEQRY KEY-PREV-ITEM KEY-NEXT-ITEM KEY-PRVREC KEY-NXTREC KEY-CLRREC 代码
app_folder.event('WHEN-NEW-RECORD-INSTANCE');
app_folder.event('WHEN-NEW-BLOCK-INSTANCE'); app_folder.event('PRE-QUERY'); app_folder.event('POST-QUERY'); app_globe.event('POST-QUERY'); app_folder.event('PRE-BLOCK'); app_folder.event('POST-BLOCK'); app_folder.event('KEY-ENTQRY'); app_folder.event('KEY-EXEQRY'); app_folder.event('KEY-PREV-ITEM'); app_folder.event('KEY-NEXT-ITEM'); app_folder.event('KEY-PRVREC'); app_folder.event('KEY-NXTREC'); app_folder.event('KEY-CLRREC'); EBS Form开发总结
百度搜索“77cn”或“免费范文网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,免费范文网,提供经典小说综合文库EBS Form开发总结(2)在线全文阅读。
相关推荐: