




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、-作者xxxx-日期xxxx弹性域的使用(整理版)【精品文档】弹性域的使用弹性域分为键弹性域和说明性弹性域,本文就针对这两种弹性域在二次开发中使用进行举例说明,并附带说明弹性域中经常使用的值集; 一个弹性域由多个段组合起来,数据库中,段以单个表列形式出现。一、弹性域开发中需要做的前期工作1.注册一个可以使用弹性域的表,字段本范例全部以如下对象为基础,进行弹性域的说明CREATE TABLE flex_ln( name VARCHAR2 (20), age NUMBER, dept VARCHAR2 (20), attribute1 VARCHAR2 (250), attribute2 VARC
2、HAR2 (250), attribute3 VARCHAR2 (250), attribute4 VARCHAR2 (250), attribute_category VARCHAR2 (250);注册数据库表,列系统中的数据库表和列的注册旨在支持系统的弹性域和预警系统两个特性如果不需要这些特性不需要注册表.注册方法: 用如下的过程注册表语法: ad_dd.register_table(所有者,表名,T自动扩展/S非自动扩展,下一区,自由,已使用)execute ad_dd.register_table ( EDU,FLEX_LN,T);检查注册成功与否: select ft.table_i
3、d from fnd_tables ft where ft.table_name = CUX_OM_POP_VALIDITY_ALL; 删除注册: execute ad_dd.delete_table ( CUX,CUX_OM_POP_VALIDITY_ALL);这里说明下,EDV 是在系统注册过的一个应用简称,二次开发的程序,最好重新注册一个应用,这样便于今后的管理。如下图:注册表中的列(弹性域列)语法: execute ad_dd.register_column(所有者,表名, 字段名,序号,类型,字段宽度,是否为空,是否可以转换)execute ad_dd.register_column
4、 (EDV,FLEX_LN,ATTRIBUTE1,1,VARCHAR2,50,N,N);execute ad_dd.register_column (EDV,FLEX_LN,ATTRIBUTE2,2,VARCHAR2,50,N,N);execute ad_dd.register_column (EDV,FLEX_LN,ATTRIBUTE3,3,VARCHAR2,50,N,N);execute ad_dd.register_column (EDV,FLEX_LN,ATTRIBUTE4,4,VARCHAR2,150,N,N);execute ad_dd.register_column (EDV,F
5、LEX_LN,ATTRIBUTE_CATEGORY,5,VARCHAR2,30,N,N);注册说明性弹性域应用:选择注册的应用名称:填写注册说明弹性域的名称(必须唯一)标题:弹性域的标题,在今后的应用中,此说明弹性域将会在窗口标题上显示在此定义的标题内容表应用:在注册表,列时指定的应用(appl_short_name)表名: 选择注册的表名称结构列:必须也是存在于注册过的列,结构列的意义就是存放说明性弹性域上下文提示的值上下文提示:是在说明性弹性域上下文字段的标题描述参考字段BUTTON里,如下界面:上面的界面是输入界面,系统提供输入,这里可以输入多个记录,当然最终只能有一个字段来起作用,需要
6、在段里指定。字段名:必须与弹性域中选择的表中的字段一致。说明:对字段的描述性文字参考字段的含义:参考字段的主要作用是 与结构列的作用类似,可以在不选择上下文字段的情况下,系统根据参考字段的含义来对应显示不用的弹性域,举例说明:例如参考字段为 NAME,则在系统中输入NAME信息后,系统会自动根据NAME的信息来确定显示什么样的弹性域,这样就可以避免来选择上下文来显示需要的弹性域。列BUTTON里,如下界面这里面显示的是注册后的列字段(如果填写了结构列字段,则这里面将不在显示结构列字段,因为系统认为结构列字段与弹性字段是不同的) 如果对某个弹性字段不需要,可以将起用CHECKED失效,这样在构造
7、弹性域的时候,此弹性字段不会作用显示系统注册完弹性域的名称后,下一步需要配置弹性域的弹性字段.界面如下:弹性域上下文的范围定义在值集里面,每一个值,都会定义自己的段;根据参考字段的值和上下文字段的值进行比较,如果存在,则显示维护弹性值,如果不存在,则不显示.名称:填写注册说明弹性域的名称(必须唯一)此处的界面需要重点注意的地方:上下文字段-提示:这里的提示是上下文PROMPT的信息,在这里输入信息后,在注册弹性域 “上下文提示” 栏的内容,两者的内容是一致的-值集:为上下文字段的内容提供一个值的LOV形式选择,以本例说明:值集SET_VALUE_DESC_FLEX中包括的信息是“弹性一”、“弹
8、性二”,这样,就可以根据选择不同的信息来实现不同的弹性域,而且,选择的上下文字段信息(此处就是弹性域上下文AAAA栏)会保存在结构列中。-默认值: 设定上下文的默认值-参考字段:此处系统提供的是一个LOV输入,此处LOV里的数据来源于在注册弹性域里的时候“参考字段:”BUTTON里的输入记录。参考字段的含义是,可以以其他字段的输入记录来判断是否显示哪种弹性域。上下文字段值 这里可以定义多个弹性域段:比如 弹性域1=弹性字段1+弹性字段2 弹性域2=弹性字段1+弹性字段2+弹性字段3弹性域3=弹性字段1+弹性字段2+弹性字段3+弹性字段4这里需要说明下:每个弹性的段信息中,都有一个默认的段定义
9、Global Data Elements 弹性域Global Data Elements 的段结构如下:如果我们定义的弹性域只有一种段结构的话,可以直接在Global Data Elements段中进行定义,如果有多个的话,需要在另创建记录进行段定义的需要,有一点需要说明的是,一旦有注册了的字段在 Global Data Elements中定义了结构的话,那么用户自己在创建其他的段结构,则不会显示在Global Data Elements中使用了的字段具体定义弹性域中需要那些弹性字段,需要在“段”BUTTON里的界面中进行定义如 弹性一 的段结构弹性二 的段结构 以本文中的为例进行说明: Gl
10、obal Data Elements 段中定义了一个 ATTRIBUTE1字段,那么在弹性一、弹性二中的段定义的时候,无法在选择 ATTRIBUTE1这个字段。针对此弹性域的配置,在实际使用中的说明:图中红色框代表的是加载说明性弹性域的字段,点击此处,便可出现弹性域的结构。由于在系统设置弹性域段的时候,给上下文段一个默认值 = “弹性一” 则系统会自动将弹性一的段结构给显示出来(定义了三个弹性字段TITLE分别为10、15、20),由于此弹性域还定义了一个Global Data Elements 的段结构,则系统会将Global Data Elements 显示在最前面,作为整个弹性域的公共字
11、段(不论弹性域上下文AAAA选择的是“弹性一、弹性二”)整个弹性域都将会显示 Global Data Elements的段结构。选择“弹性二” 后的界面如下: 下面在图文说明下 定义的参考字段“NAME”的作用在应用弹性域界面中 在“NAME”栏输入 “弹性一”,选择弹性栏位 得到的结果如下如果在“NAME”栏输入 “弹性二” 选择弹性栏位 得到的结果如下从以上两个图可以说明 参考字段也可以决定需要显示的弹性结构。在这里需要提一个:参考字段+上下文段(不显示+不需要) 这样就可以在界面中动态的控制弹性的结构,而不需要来选择上下文的内容当然,参考字段与上下文段还是有所区别的,在参考字段输入“弹性
12、一”后,虽然显示的是弹性一的段结构,然而也可以在选择上下文段的值来重新选择需要的段结构,这样的话,参考字段的值=弹性一,而上下文的值=弹性二,也就是说,参考字段的作用是在于初始话一个弹性域的结构,一旦该弹性段有值以后,就不在作用了。真正跟弹性结构相关的字段还是结构列字段,也就是上下文段这里可以看到,虽然参考字段是“弹性二”,但可以在继续选择上下文来需要相应的段结构。 编写FORM设置和弹性域1:加入非基表域用于容纳弹性域,我们做一个ITEM叫DESC_FLEX 注意这个ITEM的CLASS属性为 TEXT_ITEM, LOV处选择ENABLE_LIST_LAMP,并把检查有效性设为NO。2:F
13、ORM中要包含所设置的弹性域如ATTRIBUTE_CATEGORY,ATTRIBUTE1,ATTRIBUTE2. 注意这些域为基表项,设置CANVANS为NULL或者显示在画布上都可以 3:把DESC_FLEX放在CANVANS上,弄成弹性域的样子.设置其属性:值列表=ENABLE_LIST_LAMP4:在FORM中注册弹性域为了FORM识别弹性域,在FORM级别的WHEN-NEW_FORM_INSTANCE 上加上如下的代码从列表中验证=否 fnd_descr_flex.define( FLEX_LN, - form中的block name field=DESC_FLEX, - form中的
14、弹性域的item name appl_short_name=EDV, - 注册弹性域在那个user下 desc_flex_name=FLEX_LN - 注册弹性域的名称);含有弹性域的BLOCK叫FLEX_LNDESC_FLEX我们命名的那个容纳弹性域的域. FLEX_LN 我们注册的那个弹性域的名称.5:加入触发器以支持弹性域.分别在BLOCK级别加入如下的触发器.PRE-QUERYPRE-UPDATEPRE-INSERTPOST-QUERY其触发器的代码分别对应FND_FLEX.EVENT(PRE-QUERY );FND_FLEX.EVENT(PRE-UPDATE );FND_FLEX.E
15、VENT(PRE-INSERT );FND_FLEX.EVENT(POST-QUERY );在容纳弹性域的域ITEM级别加入如下的触发器WHEN-VALIDATE_ITEMFND_FLEX.EVENT(WHEN-VALIDATE-ITEM);至此我们完成了本FORM ,只要打开弹性域我们就可以像用系统弹性域一样用这些弹性域了。手工删除说明性弹性域脚本:/* 删除说明性弹性域的段结构 */DELETE fnd_descr_flex_col_usage_tl WHERE (application_id = 660) AND (descriptive_flexfield_name LIKE FLEX
16、_LN); /* 删除说明性弹性域的段 */DELETE fnd_descr_flex_contexts_tl WHERE (application_id = 660) AND (descriptive_flexfield_name LIKE FLEX_LN); DELETE fnd_descr_flex_column_usages WHERE (application_id = 660) AND (descriptive_flexfield_name LIKE FLEX_LN); /* 删除说明性弹性域的注册信息 */DELETE fnd_descriptive_flexs_tl a WHE
17、RE a.application_id = 660 AND a.descriptive_flexfield_name = FLEX_LN;注册键弹性域键弹性域的注册如下图 应用:选择注册的应用代码:填写注册键弹性域的CODE(必须唯一,最多四个字符,在调用键弹性域必须使用的值)标题:键弹性域的标题,在今后的应用中,此键弹性域将会在窗口标题上显示在此定义的标题内容说明:表应用:在注册表,列时指定的应用(appl_short_name)表名: 选择注册的表名称结构列:必须也是存在于注册过的列,结构列的意义就是存放键弹性域使用的是哪个段结构的代码唯一标识列:是记录键弹性域唯一的值,要找到健弹性域的具
18、体含义,必须通过此唯一标识列定义键弹性域的段结构,如下图点击“段”按纽 进行定义: 此处定义段结构与说明性弹性域一致,在此不再多说。键弹性域的开发例子:/*在客户化的用户下*/* 键应用表 */* Formatted on 2011/11/30 0:12:17 (QP5 v5.115.810.9015) */CREATE TABLE t_key_flex( key_id NUMBER, /* 键弹性域唯一值 */ age NUMBER, name VARCHAR2 (30), dept VARCHAR2 (30), TYPE VARCHAR2 (30);/* 创建存放键弹性域的结构表 */*
19、Formatted on 2011/11/30 0:13:03 (QP5 v5.115.810.9015) */CREATE TABLE flex_ln_key( key_flex_structure_id NUMBER, key_flex_id NUMBER, summary_flag VARCHAR2 (1), /* 必须有此字段 */ enabled_flag VARCHAR2 (1), /* 必须有此字段 */ start_date_active DATE, /* 必须有此字段 */ end_date_active DATE, /* 必须有此字段 */ last_updated_by
20、NUMBER, /* 必须有此字段 */ last_update_date DATE, /* 必须有此字段 */ segment1 VARCHAR2 (30), segment2 VARCHAR2 (30), segment3 VARCHAR2 (30), segment4 VARCHAR2 (30), segment5 VARCHAR2 (30), segment6 VARCHAR2 (30), segment7 VARCHAR2 (30), segment8 VARCHAR2 (30), segment9 VARCHAR2 (30), segment10 VARCHAR2 (30), se
21、gment11 VARCHAR2 (30), segment12 VARCHAR2 (30), segment13 VARCHAR2 (30), segment14 VARCHAR2 (30), segment15 VARCHAR2 (30);/* 必须要创建一个与键结构表对应的序列 */ CREATE SEQUENCE FLEX_LN_KEY_S START WITH 1; -创建存放键弹性域表的对应序列(键弹性域表名+_S) /*在公共用户APPS下*/* 创建同义词 */ /* Formatted on 2011/11/30 0:14:01 (QP5 v5.115.810.9015) *
22、/CREATE SYNONYM flex_ln_key FOR erp_dev.flex_ln_key;create synonym t_key_flex for erp_dev.t_key_flex ; create synonym flex_ln_key_s for erp_dev.flex_ln_key_s;/* 注册键结构表和字段 */execute ad_dd.register_table(EDV, FLEX_LN_KEY, T);execute ad_dd.register_column(EDV, FLEX_LN_KEY, KEY_FLEX_STRUCTURE_ID, 1, NUM
23、BER, 38, Y,N );execute ad_dd.register_column(EDV, FLEX_LN_KEY, KEY_FLEX_ID, 2, NUMBER, 38, Y, N );execute ad_dd.register_column(EDV, FLEX_LN_KEY, SEGMENT1, 3, VARCHAR2, 30, Y, N );execute ad_dd.register_column(EDV, FLEX_LN_KEY, SEGMENT2, 4, VARCHAR2, 30, Y, N );execute ad_dd.register_column(EDV, FLE
24、X_LN_KEY, SEGMENT3, 5, VARCHAR2, 30, Y, N );execute ad_dd.register_column(EDV, FLEX_LN_KEY, SEGMENT4, 6, VARCHAR2, 30, Y, N );execute ad_dd.register_column(EDV, FLEX_LN_KEY, SEGMENT5, 7, VARCHAR2, 30, Y, N );FORM程序语法:fnd_key_flex.define ( block = T_KEY_FLEX, - 操作的block field = KEY_FLEXITEM, - 创建的ite
25、m,用来容纳键弹性域 id = KEY_ID, -保存key弹性域的唯一值 appl_short_name = EDV, code = K_LN, - 键弹性域的注册代码 num = 101 -);分别在BLOCK级别加入如下的触发器(可参考说明性弹性域的应用代码).PRE-QUERYPRE-UPDATEPRE-INSERTPOST-QUERYWHEN-NEW-ITEM-INSTANCEWHEN-VALIDATE-ITEMWHEN-VALIDATE-RECORD其触发器的代码分别对应FND_FLEX.EVENT(PRE-QUERY );FND_FLEX.EVENT(PRE-UPDATE );F
26、ND_FLEX.EVENT(PRE-INSERT );FND_FLEX.EVENT(POST-QUERY );FND_FLEX.EVENT(WHEN-NEW-ITEM-INSTANCE);FND_FLEX.EVENT(WHEN-VALIDATE-ITEM);FND_FLEX.EVENT(WHEN-VALIDATE-RECORD);编写FORM设置和弹性域加入非基表域用于容纳弹性域,我们做一个ITEM叫 KEY_FLEXITEM注意这个ITEM的CLASS属性为 TEXT_ITEM, LOV处选择ENABLE_LIST_LAMP,并把检查有效性设为NO。由下图可以看出键弹性域的存放关系,在应用表
27、里存放的是键唯一值,而在键结构表中存放的是键结构值(段结构代码和键唯一值) 备注说明:/*键弹性域的数据字典*/select * from fnd_id_flexs where id_flex_code=K_LN;select * from fnd_id_flex_segments_tl where id_flex_code=K_LN;select * from fnd_id_flex_segments where id_flex_code=K_LN;select * from fnd_id_flex_structures where id_flex_code=K_LN; select * f
28、rom fnd_id_flex_structures_tl where id_flex_code=K_LN;/*完全删除键弹性域的语法*/-删除键弹性域的结构段DELETE FND_ID_FLEX_SEGMENTS_VL WHERE ID_FLEX_CODE = KFTV;-删除键弹性域的结构DELETE FND_ID_FLEX_STRUCTURES_VL WHERE ID_FLEX_CODE = KFTV;-删除键弹性注册DELETE FND_ID_FLEXS WHERE ID_FLEX_CODE =KFTV;范围弹性域范围弹性域是使用的键弹性域的一种扩展,其没有专门的弹性注册,全部来源于键
29、弹性域的结构定义:应用表CREATE TABLE flex_rang_ln( concatenated_segments_low VARCHAR2 (300), concatenated_segments_high VARCHAR2 (300), segment1_low VARCHAR2 (30), segment2_low VARCHAR2 (30), segment3_low VARCHAR2 (30), segment4_low VARCHAR2 (30), segment5_low VARCHAR2 (30), segment6_low VARCHAR2 (30), segment7
30、_low VARCHAR2 (30), segment1_high VARCHAR2 (30), segment2_high VARCHAR2 (30), segment3_high VARCHAR2 (30), segment4_high VARCHAR2 (30), segment5_high VARCHAR2 (30), segment6_high VARCHAR2 (30), segment7_high VARCHAR2 (30);需要说明点:segment_low和segment_high 是用来存放上,下范围的段,在应用表中必须出现,CONCATENATED_SEGMENTS_LO
31、W与 CONCATENATED_SEGMENTS_HIGH 也必须成对出现,因为在应用脚本中,需要指定的/* 创建同义词 */ CREATE SYNONYM FLEX_RANG_LN FOR ERP_DEV.FLEX_RANG_LN;fnd_range_flex.define( block= FLEX_RANG_LN, - 操作的block; field= RANGE_FLEX,- 创建的item,用来容纳范围弹性域(在form界面中无range_flex数据项,只有range_flex_low与range_flex_high数据项) data_field=CONCATENATED_SEGME
32、NTS,-保存范围性域的值(concatenated_segments_low与 concatenated_segments_high的共同段名称) appl_short_name= EDV, code= K_LN, - 键弹性域的注册代码 num= 101,- displayable= !ALL, updateable= !ALL, insertable= !ALL, allownulls= Y);使用范围弹性域是不需要任何注册表和字段的,因为其值就保存在应用表中,引用的确实键弹性域的段结构代码说明: FIELD= RANGE_FLEX在FORM界面中,不存在RANG_FLEX的项,在此 泛指的是 RANG_FLEX_LOW与RANG_FLEX_HIGH两个范围性的项,用来加载范围弹性域DATA_FIELD=CONCATENATED_SEGMENTS 在FORM界面中,不存在CONCATENATED_SEGMENTS的项,在此 泛指的是CONCATENATED_SEGMENTS_LOW与CONCATENATED_SEGME
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 质量控制计划表CP
- 12、新人培训教材接触
- 贷房贷委托书范本
- 敬老院双十一活动策划书
- 高级文秘工作简历模板
- 会计信息系统应用 (第二版)教案全套 钟爱军
- 农民合作社土地承包经营权确权登记指南
- 三农行业三农村基层社区治理实践指南
- 二零二五年办公室防盗门定制与智能安防系统安装合同
- 商务活动策划与执行手册
- 2025年企业资金授权管理协议范本
- 2024-2025学年山东省济南市九年级(上)期末语文试卷(含答案)
- 邓宗良《煤油灯》阅读答案
- 2024年合理膳食教案
- 临床检验分子生物学发展
- 2025版年度城市绿化活动策划及实施服务合同范本
- 2025年全国高考体育单招政治时事填空练习50题(含答案)
- 人教版高中物理《圆周运动》
- 【课件】平行线的概念课件人教版(2024)+数学七年级下册
- 劳务派遣服务方案(技术方案)
- 2024年医疗器械经营质量管理规范培训课件
评论
0/150
提交评论