ORACLE EBS FORM二次开发整理

2018-12-05 20:56

一、开始开发标准FORM

1. 输出不必要的BLOCKNAME,DETAILBLOCK。(包括数据块,画布,窗口) 2. 修改触发器:PRE-FORM

FND_STANDARD.FORM_INFO(版本号,名称,模块,日期,作者);

APP_WINDOW.SET_WINDOW_POSITIN(‘第一个窗口名称’,’FIRST_WINDOW’); FND_ORG.CHOOSE_ORG;――选择组织 APP_WINDOW.SET_TITLE(‘窗体名称’,:global.org_code); 3. 修改程序单元:app_customer:close_window 4. 编译 f60gen module=/porcli/applmgr/1159/au/11.5.0/forms/ZHS/IAQTEST01.fmb userid=apps/simple4u

output_file=/porcli/applmgr/1159/inv/11.5.0/forms/ZHS/IAQTEST01.fmx module_type=form batch=no compile_all=yes f60gen

apps/

pre_insert, pre_update中加入代码:fnd_standard.set_who

二、QUERY FIND 制作

一. 把APPSTAND 的QUERY FIND 对象组拉到 开发的FORM上,选择子类。

二. 在目的数据块的添加QUERY FIND (BLOCK LEVEL,注:可以从FORM LEVEL

拷贝),然后修改代码

app_find.query_find (block_window VARCHAR2, --目的数据块 find_window VARCHAR2, --查询窗口 find_block VARCHAR2) --查询数据块 4.在QUERY FIND里面添加文本项等查询内容。

3.在目的数据块添加PRE-QUERY(BLOCK LEVEL),添加代码如下: IF :parameter.G_query_find = 'TRUE' THEN APP_FIND.QUERY_RANGE(:QUERY_FIND.CDATE_FROM, :QUERY_FIND.CDATE_TO, 'MAIN.CREATION_DATE'); APP_FIND.QUERY_RANGE(:QUERY_FIND.ITEM_FROM, :QUERY_FIND.ITEM_TO, 'MAIN.SEGMENT1'); APP_FIND.QUERY_RANGE(:QUERY_FIND.DESC_FROM, :QUERY_FIND.DESC_TO, 'MAIN.DESCRIPTION'); :parameter.G_query_find := 'FALSE'; END IF;

三、FOLDER 制作

1. 添加附加程序库: APPFLDR.pll.

2. 把APPSTAND 的STANDARD FOLDER 对象组拉到 开发的FORM上,选择子类。 3. 在目的画布上画一个堆叠画布,之类信息选择CANVAS_STACKED。

4. 创建一个数据块,作为创建数据块的FOLDER使用,子类信息选择BLOCK。

5. 把需要放到FOLDER的数据项放到堆叠画布上,把这些数据项的提示全部去掉,

然后给每一个数据项创建一个提示,提示用显示项做(基于新建数据块),子类信息选择FOLDER_PROMPT_MULTIROW,显示项名称和对应的数据项名称必须相同。

6. 创建三个按钮(基于新建数据块),名称分别是

ORDER_BY1,ORDER_BY2,ORDER_BY3,之类信息选择之类信息选择FOLDER_ORDER_BY,把这三个按钮放在堆叠画布上(放在看不见的区域)。 7. 在原来画布上创建一个FOLDER_OPEN按钮(基于新建数据块),之类信息选择

FOLDER_OPEN。

8. 在原来画布上创建一个FOLDER_TITLE显示项(基于新建数据块),之类信息选

择DYNAMIC_TITLE。

9. 在新建的数据块上创建一个FOLDER_DUMMY,之类信息选择FOLDER_DUMMY。 10. FOLDER_ACTION(form level)触发器的代码修改,修改如下:

--message('You must modify the FOLDER_ACTION trigger in your form!');

app_folder.event(:global.folder_action);

11. 修改WHEN-NEW-FORM-INSTANCE代码,修改如下:

app_folder.define_folder_block app_folder.event('INSTANTIATE');

12. 把APPSTAND的SAMPLE_FOLDER数据块的TRIGGER全部靠到原来数据库上。 (添加块的trigger。新增Pre-Query、Post-Query、Key-Prev-Item、Key-Next-Item、Key-ExeQry 、 Key-EntQry、When-New-Record-Instance、Post-Block、Pre-Block,When-New-Block-Instance, Key-Prvrec,Key-Nxtrec, Key-Clrblk, Key-Clrrec, Query_Find以上Trigger均直接 引用标准Standard Trigger ,如:app_folder.event('KEY-PREV-ITEM');

)

四、DATE的使用

1. ITEM的LOV属性选择ENABLE_LAMP_LIST 2. LOV for Validation属性选择false 3. 增加Item级trigger:key_listvalue calendar.show;

4. 并注意时间的长度格式

五、FND_ORG.CHOOSE_ORG的使用

注:FND_ORG.CHOOSE_ORG 需要创建的参数: CHART_OF_ACCOUNTS_ID(Number) ORG_NAME(Char) ORG_CODE(Char) ORG_ID(Number) 六、说明性弹性域使用

1. 注册table以及column 利用ad_dd package begin

ad_dd.register_table(p_appl_short_name=>'CUS' ,

p_tab_name => 'actuant_task_lists_all', p_tab_type => 'T' );

end;

begin

ad_dd.register_column(p_appl_short_name =>'CUS' ,

p_tab_name => 'actuant_task_lists_all', p_col_name =>'ATTRIBUTE9' , p_col_seq => 9,

p_col_type =>'VARCHAR2' , p_col_width =>250 , p_nullable => 'Y', p_translate => 'N'); end;

2. Application中Flex Table的定义

Application Developer GUI?Flexfield?Descriptive?Register

3. 增加Item

属性继承text_item_desc_flex,并显示于canvas上 4. 增加一些标准trigger FORM LEVEL

a.定义flex的trigger

when_new_form_instance

FND_DESCR_FLEX.DEFINE(BLOCK=>'ACTUANT_TASK_LISTS_ALL', FIELD=>'DESC_FLEX', APPL_SHORT_NAME =>'CUS',

DESC_FLEX_NAME =>'Actuant Header Flex'); b. PRE–QUERY

FND_FLEX.EVENT(‘PRE-QUERY’); c. POST–QUERY

FND_FLEX.EVENT(‘POST-QUERY’); d. PRE–INSERT

FND_FLEX.EVENT(‘PRE-INSERT’); e. PRE–UPDATE

FND_FLEX.EVENT(‘PRE-UPDATE’); f. WHEN–VALIDATE–RECORD

FND_FLEX.EVENT(‘WHEN-VALIDATE-RECORD’); g. WHEN–NEW–ITEM–INSTANCE

FND_FLEX.EVENT(‘WHEN-NEW-ITEM-INSTANCE’); 5. 弹性栏位的开启和编译 七、关键性弹性域使用

1. 添加代码,ID,描述3个项,继承TEXT_ITEM子类 2. 增加一些标准trigger FORM LEVEL

a.定义flex的trigger

when_new_form_instance

fnd_key_flex.define( BLOCK => 'CONTRACTS', field => 'SUB_CODE', id => 'SUB_ID', description => 'SUB_DESC', appl_short_name => 'SQLGL',

code => 'GL#',

num =>

nvl(to_number(fnd_profile.VALUE('MFG_CHART_OF_ACCOUNTS_ID')),

-1), --STRUCTURE Number required => 'N', validate => 'FULL', usedbflds => 'N'); b. PRE–QUERY

FND_FLEX.EVENT(‘PRE-QUERY’); c. POST–QUERY

FND_FLEX.EVENT(‘POST-QUERY’); d. PRE–INSERT

FND_FLEX.EVENT(‘PRE-INSERT’); e. PRE–UPDATE

FND_FLEX.EVENT(‘PRE-UPDATE’); f. WHEN–VALIDATE–RECORD

FND_FLEX.EVENT(‘WHEN-VALIDATE-RECORD’); g. WHEN–NEW–ITEM–INSTANCE

FND_FLEX.EVENT(‘WHEN-NEW-ITEM-INSTANCE’); 3. 弹性栏位的开启和编译 八、Special菜单的制作

1. 增加一个User_Named的trigger,并改名SPECIALn(1<=n<=15) 2. 在PRE–FORM中调用app_special.instantiate 来注册菜单项

app_special.instantiate('SPECIAL1', 'Approve', '', FALSE); parameter2: Special上显示的字,可以其他方式得到

3. 在PRE-BLOCK 或PRE-RECORD 中调用app_special.enable 启

用或屏蔽菜单项,或者其他trigger:

app_special.enable('SPECIAL1', property_on);

4. 在specialn的trigger里面写要得代码

请求日期INV_SRS_DATE_STANDARD :$PROFILES$.GL_SET_OF_BKS_ID 科目GL_SRS_LEDGER_FLEXFIELD


ORACLE EBS FORM二次开发整理.doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:汇编语言程序设计教程(第二版)卜艳萍著

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: