当前位置:文档之家› ebs form开发总结

ebs form开发总结

1.前言这是在深航2期项目期间学习form的过程中总结出来的一些东西,但内容比较零散,不包含form开发的完整过程。

1.开发规范1.1 命名规范文件命名:一般将源码放在….\SVN\05.客户化开发\05.源代码\ 目录下,文件的格式参考该目录下的代码包模板:开发编号-开发项名称文件夹,该文件夹命名如:EAM010_资产报废计划EAM代表模块,010和资产报废计划是由开发文档给出,不需要自己取编号。

路径:05.源代码\代码包模板:开发编号-开发项名称\SZAXXXXX\code 中,SZAXXXXX 也有自己的命名规范,一般取表名称的前6个字符,即应用名+模块名,在取表名后的5-6字符作为后缀,例如:表名是SZA_EAM_RETIRE_PLAN ,则取SZAEAMREPLAN,该文件夹名称与form名称保持一致。

SVN模板目录:Sql :注册弹性域的plsql代码块,名称与表名一致Table :建表脚本View :建视图脚本Pck : 基于视图的增删改form,在hss_public_util程序包中,Table_Handle_Pkg这个过程生成的代码要在数据库中执行,并且代码保存在package文件夹下,并以.pck保存。

Form_Table_Handle这个过程是要放在form中Form规范1.Form的命名:例如表名SZA_INV_TST_DOC_TYPES,选取前6个字符SZAINV,加上后面字符串的5-6个字符,SZAINVTSTDOCTP.2. 块名命名:SZA_INV_TST_DOC_TYPES选表中间字段TST_DOC3.窗口查询的块QUERY_FIND 的名称:块名+QF,对应的FIX和STK画布名字也要保持一致,但是QUERY_FIND触发器名称不能修改。

4.在ebs上注册表单,功能,弹性域时,form表单,功能和弹性域名称:SZA INV:+中文解释,例如:SZA INV:单据类型定义。

因为这些名称都是用户在查找时给用户看的。

5. 在窗口查询中,一般用id来作为查询字段,一般在id字段建立索引,查询速度更快,所以应该有消除依赖的代码6. LOV的显示:id字段一般不显示出来,可以设置id字段的display width为0即可。

2.常用开发组件和功能1.无TAB的Folder功能一般情况下,将不随横向滚动条移动的列放置在FIX画布上,变成固定列,固定列是没有拖动效果的。

画布:MAIN ,FOLDER_FIX ,FOLDER_STK第一步:使用data block wizard创建块第二步:ROW_ID项的子类名设置为ROW_ID。

其他需要显示在画布上的项设置子类, 另设置显示在STK画布上的属性:第三步:将数据块中显示在STK上的项复制到PROMT块中,并设置数据块中的trigger(模提示项的item type为display,子类为FOLDER_PROMT_MULTIROW第四步:在when-new-form-instance初始化form。

使用app_folder.define_folder_block如果用到了FIX画布,需要使用参数8第五步:在画布上调整布局设置块的Scrool Bar Canvas在fix画布上注意:第六步:在WHEN-WINDOW-RESIZED触发器内if :system.event_window in ('MAIN','DOC','TXN_DETAILS') thenapp_folder.event('WHEN-WINDOW-RESIZED');end if;2.TAB页的Folder功能原理:与无tab页不同就是创建画布时,我们会选择创建一个tab_canvas类型的画布假如你要显示的item都来自一个block,则我们只需要一个fix画布;如果画布上的item 来自多个block,则需要多个fix画布。

我们通过when-tab-changed触发器和show_view (hide_view)来控制画布的显示与隐藏2.1 首先要创建类型为Tab的画布,在画布下添加两个子类为Tab_page的画布,注意的是最好使得这两个画布的名称和将来放在两画布上的stacked画布名称一致。

如下图左2.2 画布建好以后,我们来看如何布局。

首先将MAIN_TAB画布,堆叠在MAIN画布上,再将图中TAX画布(fix和stacked画布)和BASE 画布(同上)堆叠在MIAN_TAB画布,尽量保持TAX和BASE重合,就是说x和y坐标相同。

2.3 接下来就是在form builder中写显示和隐藏的代码FORM级的WHEN-TAB-PAGE-CHANGEDhide_main_tab.txt show_main_tab.txt go_tab_first_item.txt以下的两个过程是为了防止bug参考(\桌面\ebs常用文档大全\FOLDER)3.说明性弹性域第一步:在实际开发中(暂时做过的项目中),会提供给你注册的plsql块(保存在sql 中),执行后,就会在ebs中注册。

第二步:在数据块中创建item,取名DF,类型text item,子类TEXT_ITEM_DESC_FLEX第三步:在DF项下,创建两个触发器WHEN-VALIDATE-ITEM --override代码:FND_FLEX.EVENT(‘WHEN-VALIDATE-ITEM’)WHEN-NEW-ITEM-INSTANCE --before代码:FND_FLEX.EVENT(‘WHEN-NEW- ITEM-INSTANCE’)第四步:修改DF所在数据块的trigger,添加完成后初始化弹性域添加此代码:FND_FLEX.EVENT( ‘ ..’)使用fnd_descr_flex.define初始化弹性域第五步:启用弹性域1.先是查找出注册好的弹性域2.进入段设置界面Open 弹性域3.然后保存4.最后保存。

4.关键性弹性域下面讲解的是核算科目账户对应的键弹性域的创建方法4.1创建三个item项,设置相应属性CODE_COMBINATION:显示项(称为账户项),字段长度设置2000,显示核算科目的数字组合。

LOV为ENABLE_LIST_LAMP, 验证为NOCOMBINATION_DESC:显示项,字段长度设置2000,显示核算科目的中文描述组合GL_CCID:数据库表项,存储的是核算科目对应的ID4.2为账户项添加两个触发器WHEN-NEW-ITEM-INSTANCE : 触发器执行层次设置为BeforeWHEN-VALIDATE-ITEM为两个触发器添加代码: fnd_flex.event('WHEN-NEW-ITEM-INSTANCE');4.3为这三个item所在的block块添加触发器PRE-QUERY POST-QUERY PRE-INSERT PRE-UPDATE WHEN-VALIDATE-RECORD触发器代码:fnd_flex.event('PRE-INSERT');4.单选框和复选框Value when Checked:YValue when Unchecked:NCheck Box Mapping of Other Values:Unchecked 因为复选框除了选中,被选中外,还有一个null值状态,所以要设置null状态下的值是多少。

获得复选框的值:块名.复选框名–> Y or N单选框:是一个单选组,组里有单选按钮单选组:子类---Radio Group单选按钮:子类---Radio ButtonRadio Button Value—这个属性必须有值5.手电筒窗口查询1.打开一个模板APPSTAND,将Object Groups下的QUERY_FIND对象拖到自己的form中,点击copy。

将在block,canvases,windows下生成对应名称为QUERY_FIND的对象。

2. 将new 和find按钮,QUERY_FIND数据块下的key-nxtblock代码修改New:新建的数据块名称Find:查询的数据块名称key-nxtblock:查询数据块的名称3.设置query_find查询块的属性为主界面块,这样关闭query_find的时候,就会显示主界面块。

4.在主界面块内创建query_find触发器,名称不能修改,添加如下代码:App_find.query_find(main_win,query_find_win,query_find_block);参数1:main_win—查询窗口显示在哪个窗口上参数2:query_find_win ---查询窗口界面对应的窗口参数3:query_find_block –查询窗口对应的块名称5.在主界面块中的pre-query内添加查询代码Copy ,app_find.query_range等6.主界面块的when-new-record-instace触发器Execution Hierarchy 设置为After注意:在其他窗口上调用出手电筒若该窗口有两个块。

则在两个块上建立query_find触发器,代码为app_find.query_find6.菜单栏通过这种方法来设置菜单的名称(when-new-form-instance)fnd_message.set_name('SQLSZA','SZA_PA_010_BUDGET_CHECK')/*;消息内容:预算检查(&B)*/ app_special.instantiate('SPECIAL1',fnd_message.get);app_special.disable('SPECIAL1');--使菜单灰显(失效)app_special.enable('SPECIAL1');--启用菜单7.主从块7.启用功能8.行指示器打开记录1).更改行指示器的子类,如图2.在Item触发器when-item-instance内CURRENT_RECORD_INDICATOR名称改成DRILLDOWN_RECORD_INDICATOR三.Form开发中常用的技巧1.关闭窗口如何正确的关闭非主窗口(A是主窗口块,B是非主窗口块)在APP_CUSTOM.close_window这个过程内,if语句内注册window的关闭事件,代码为clear_block;go_item(‘A.Item_name’);第二种方法是:设置B的previous navigate block为A,建议使用在form触发器WHEN-WINDOW-RESIZED中的代码作用:folder能否随着窗口大小变化而变化。

相关主题