Oracle EBS中的弹性域讲解与设置.docx
《Oracle EBS中的弹性域讲解与设置.docx》由会员分享,可在线阅读,更多相关《Oracle EBS中的弹性域讲解与设置.docx(29页珍藏版)》请在冰豆网上搜索。
OracleEBS中的弹性域讲解与设置
浅谈弹性域功能及其应用
弹性域是EBS中一个强有力的功能,允许添加必要和可选择的字段信息。
它是由一个或者多个段组成的字段。
段在数据库表中以单个列表示;在表单上显示为包含各段提示的弹出式窗口,可以在自定义弹性域时定义单个段的外观和含义。
每个段都有一个名称和一个有效值集,最终用户可以在使用应用产品时将段值输入段中。
一般来说,弹性域都会根据通常预先定义的一组有效值(值集)来验证每个段。
“值验证”表示弹性域会将用户在此段中输入的值与值集中该段的值进行比较。
我们知道的弹性域两种类型,一种叫KeyFlexfield(KFF),另一种叫Descriptiveflexfield(DFF)。
KFF诸如AccountingFlexfield、KeyAssetsFlexfield等,这类KFF在设置系统里通常说明了由弹性域标识的实体的特性。
而DFF是允许用户自己选用及扩充的说明文字。
这两类型的弹性域都允许有不同的结构,弹性域结构是段的一种特定配置。
如果在弹性域中添加或删除段,或者将其中的段重新排序,就会得到一个不同的结构。
弹性域可以根据表单或应用数据中的数据条件,针对不同的最终用户显示不同的结构。
近期有很多人问到有关弹性域的一些基础用处,在此以举例的形式简单说说如何发挥弹性域的功能:
目录:
一上下文字段...............................................................................................................................................................2
二自定义上下文列.......................................................................................................................................................6
三与其他设置相关.....................................................................................................................................................12
四多层从属的值集.....................................................................................................................................................18
一上下文字段
说明性弹性有种有别于键弹性域的功能:
“上下文字段”,它允许根据表单或者数据库字段的值,进行自动选择对应的段,也正是这个功能,允许同一个数据库字段可以写上不同类别的记录:
可以是数量,可以是日期。
这个我们通常会在资产、设备管理等模块上感觉非常有用。
打个比方,在制造行业拥有的资产分类除了“电子设备”外还会有“房屋与建筑物”,对于电子设备,可能会比较关心它的“精度”、“强度”及其它;而房屋与建筑物则会比较关心“寿命”、“占地面积”等。
我们就可以通过上下文字段,灵活的设置弹性域。
资产
资产分类
参数一
参数二
电子称
电子设备
精度:
0.01斤
强度:
10公斤
宿舍楼
房屋与建筑物
寿命:
30年
占地面积:
100亩
1,定义弹性域结构,注意在“上下文字段值”中的代码为上图的“资产类别”代码,然后点击“段”按钮:
2,分配上下文段值为“房屋与建筑特”的段值:
3,分配上下文段值为“电子设备”的段值:
4,保存后钩上“冻结弹性域定义”,并按左下角的“编译”按钮:
5,设置效果:
二自定义上下文列
――上面这个例子大家可能想到,为什么他会根据不同的类别带出不同的显示段?
是因为我们在第1步骤中分配了对应于资产类别的上下文字段值。
那又为什么要分配资产类别的值呢?
我能够不能够分配其他的值?
答案是可以的,大家可能也留意到了,在上面的第1步骤的图中有一字段叫“参考字段”,并分配了值“ATTRIBUTE_CATEGORY_CODE”,我们可以去查询一下这个段值保存的是什么东西:
从图中可见,它其实就是我们的资产类别。
这也就是“上下文字段”的最通俗的含义:
它会根据“上下文字段值”列表中的值与“参考字段”进行匹配,对得上了则会进行特定的显示操作,对不上,则不显示。
这个“参考字段”允许根据表单或者数据库字段的值选择特定的段或者值。
“ATTRIBUTE_CATEGORY_CODE”就是一个表单值。
扩展来开,我们可以用到类似于:
”$PROFILES$.USER_ID”的值。
我们就以USER_ID来做个试验:
1,首先,定位到“应用开发员”职责的N:
弹性域>说明性>注册
2,在弹出窗口的“标题”字段输入“资产类别”,查找出我们需要定义“参考字段”的弹性域,然后点右下角的第一个按钮“参考字段”。
3,这时候我们发现“ATTRIBUTE_CATEGORY_CODE”就存放在这里。
我们可以手工添加“字段名”列值为:
”$PROFILES$.USER_ID”并保存。
输入的格式如果是同在一个表名的字段可以直接输入字段名。
如果是其他表或者数据块的,格式如下:
数据块名.字段名。
4,这里要补充一点的是,在第2步中有个字段叫“表名”,这就是参考字段及弹性域各段存放的实在的数据库表,右下角的另一个按钮“列”,则是该表中的所有字段,你可以点上启用,使得和attributeX一样显示在弹性域“列”中。
“参考字段”中可以直接输入这些列名。
5,好,现在我们重新定义弹性域,点开参考字段,我们选择刚才定义的预置文件取值。
6,继续定义“上下文字段值”代码,这里我们失效之前定义的两个值。
7,设置当代码为“1710”时的段值:
(注意,在成文检查后发现下图的名称字段输入是错误的,这里不能够是数字打头,也不要有“?
”这类的符号,会造成创建视图不成功。
请大家注意。
)
8,设置当代码为“1114”时的段值,这里attribute2是可以重复使用的:
9,经过编译,我们以leon用户登录:
10,以tony登录情况就大不一样了:
通过以上两个例子,我想大家基本上了解说明性弹性域的一些作用了。
但这里也仅是举个例子来做个介绍,我想更多的功能大家可以去参考UserGuide的相关章节。
下面也举个比较特殊的用处
三与其他设置相关
大家可能知道,系统标准的地址格式,诸如客户地址、供应商地址、银行地址之类的默认的格式为:
有客户提出说这个格式不好,想用回比较有“中国特色”的地址(省、市、区、镇、街道)。
那怎样去实现这个需求呢?
1,首先,我们看一下“地址”弹性域的结构,系统其实有默认的五类“地址”类型给我们选择,例如:
英国、日本等格式:
2,要创建自己的格式,我们手工创建一个:
3,点击“段”,进行段的设置:
4,编译弹性域:
5,切换到“应用开发者”职责N:
应用产品>代码>应用对象程序库:
6,查询出类型为“ADDRESS_STYLE”的快速编码,并添加代码为“CN”的行记录,把“有效日期自”自动弹出的值取消,这里要注意一点,代码要与弹性域结构中定义的值一要致:
7,切换到“应收”职责N:
设置>系统>国家(地区):
8,查找出国家为“中国”的记录,然后在“地址格式”栏位中选择刚才定义的“CN”:
9,设置效果:
四多层从属的值集
与弹性域密不可分的概念当属值集,这前也一直闭而不谈,缘于值集也是一个庞大的概念,大家可以找相关的文档去揣摩一下。
这里仅仅是提一提值集的从属特性。
值集中有两个类别:
独立值集及从属值集。
独立值集中的取值很随意,而从属值集一般会根据前置独立值集的取值进行相应的显示值。
例如,上例中需要定义一个省/市的二级对应关系,如果选择独立值“广东”,则只能够出现广东行政区域管辖下的市名列表:
广州、深圳、东莞……,这些值就是从属值。
很遗憾的,ORACLE的标准功能是不支持多值集从属的,也就是说如果客户想要定义一个省/市/区的三级对应关系:
利用独立值集/从属值集将无能为力。
但是这多层次的从属在我们身边太常见了,有什么方法可以实现这个需求呢?
我们可以从值集中下手:
行政区域的划分可以按国家的统一编码,前两个字符表示省级代码,中间两位表示市级代码,末两位表示区一级代码,来,我们开始设置:
1,定义一个独立值集:
行政区域值集
3,对这个值集输入所有值,这里需要注意一点,在“层”上输入相对应的层次,0表示最高级,1次之,2再次之:
以下我们定义三个值集:
省(直辖市)、市、区
4,第一个,选择值验证类型:
表。
在验证表信息中注意where语句的写法:
5,第二个同样选择值验证类型:
表。
在验证表信息中注意where语句的写法,注意:
:
$FLEX$.PROVINCE是指上一个弹性域的取值:
SUBSTR(flex_value,1,2)=:
$FLEX$.PROVINCEANDhierarchy_level=1ANDflex_value_set_id=(SELECTflex_value_set_idFROMfnd_flex_value_setsWHEREflex_value_set_name='regionalism')
6,第三个不在赘述:
SUBSTR(flex_value,1,2)=:
$FLEX$.PROVINCEANDSUBSTR(flex_value,3,2)=:
$FLEX$.CITYANDhierarchy_level=2ANDflex_value_set_id=(SELECTflex_value_set_idFROMfnd_flex_value_setsWHEREflex_value_set_name='regionalism')
7,好设置四个值集后我们可以把他组装到上例生成的地址弹性域中:
8,编译后,我们看一下效果:
这个结果正是我们想要的。
写了不多也不少,对于ORACLE的博大精深,这点小伎俩算不了什么。
但是对于我个人来说,确实花了点时间。
仅以此文提及的应用,能够给大家做个入门的介绍,大家可以按照以上例子去试一试,如果有什么问题,可以与我联系mailto:
**************。
希望大家能够真正花点时间去研究,并去分享。