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