Flexfield学习研究心得_第1页
Flexfield学习研究心得_第2页
Flexfield学习研究心得_第3页
Flexfield学习研究心得_第4页
Flexfield学习研究心得_第5页
已阅读5页,还剩12页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、陈震南 email: makemydaywo msn: makemydaywo qq: 31505614 这半个月来一直在学习设置ebs的设置,越来越觉得这其中环环相扣,博大精深。但就这其中一个flexfield概念就值得琢磨半天,结合前一阵子的开发经验,我也来谈谈对flexfield的认识。1. flexfield的绑定表结构(皮之不存,毛将焉附) 刚开始接触oracle application ,看到某些表包括多达数个,十数个甚至是数十个arributen,segementn的字段,总感到疑惑不解,觉得很多表这些字段很多都是空的,真是浪费空间。而这些特殊的表,实际上叫做combinatio

2、n table ,正是这些特殊的字段支持了oracle erp的弹性,可以说没有这些特殊的字段,oracle erp的通用性将会极大地下降。 对于熟悉数据库和程序开发的人员来说,理解flexfield可能更直观深刻一些,对于其它人员来说,了解一下combination table的结构对理解flexfield有百利而无一害。who字段col1col2atr1atrnseg1segnseg_atr1seg_atrn也是oracle表的一大特点,记录跟踪信息。表基本字段(正常字段)attribute 字段,常与descriptive flexfield 配合使用 segment 字段,常与key

3、flexfield 配合使用具体我说不清楚,感觉就像col对应atr字段,seg也可对应seg_atr字段 表 1.1上表是combination table的基本结构,这个例子的结构相对完整并且复杂,实际应用中可能某个combination table仅包括这些特殊列的一部分或者几部分。即使我们在其他数据库平台下构建一种可扩展,可重用,柔性高的应用系统,这种结构无疑具有很高的借鉴与启迪作用。至于这些字段是如何与flexflied相结合的,在后面会具体说明。2. flexfield的相关概念 flexfield中有几个相关的概念,我们先来了解下。structure,segment,value

4、set ,一个flexfield可以拥有多个structure,这就好像一种物料,企业a会用三个字段去限定,而企业b却会用到四个字段。每个structure又会拥有多个segment,把segment看作sub-field也好,看成属性也好,反正按照“用到什么就选什么”的原则就好。有segment就会有segment value,一个 segment可以取什么类型的值,什么范围的值,甚至精确到可以取那些值,这都可以交给value set,我觉得value set既是value的容器,又是value校验器(格式,范围等)。 这些概念的联系为:一个flexfield可以对应多个structure,

5、每个structure由不同排列或不同内容的segment组成,每个segment又会与一个value set相关联,这个value set中存放了这个segment的可选取值,见下图。 图 2.1需要进一步说明的是,value set并不是segment私有的,一个value set可以被任意多个flexfield 的任意多个segment共享,当然其容纳的可选value也被共享。由上面的联系也可以推断出在flexfield设置的一般步骤:第一步是先设value set;第二步设flexfield的structure,选择需要的segment并且关联到上步设置的value set;最后一步是

6、设置value set容纳的value,另一种设法是到各个segment下去设value,它们会自动关联到segment对应的value set下。我请教过同事,她说有一种情况,当segment不需要可选值列表时(list of type: none),可以不关联value set,系统会将它关联到默认的non-validated value set,使用时用手工输入的方式为该segment赋值,只要输入的值不违反格式要求就行。3. key flexfields关于descriptive和key flexfield之间的区别以及使用flexfield的优点我不做赘述了,我想谈谈key flex

7、field的用法,设置及后台存储结构等。顾名思义,key flexfields就是要定义一个entity的key,而且这个entity需要多个键值才能唯一的确定,key flexfields中的每一个segment就对应着其中的一个键。这就很像数据库中联合主键的概念。每一个key flexfields都需要一个combination table,可参看第一节所示的结构。oracle文档中根据使用key flexfields情况的不同将应用key flexfields的form分为3类:combination form ,foreign key form,range form。个人认为,这种分类

8、依据恰恰反映了不同类别的form依赖了不同类别的combination table。首先来看combination form,我们先明确几个概念,combination table,form table(此处是我为了表达需要创建的名字,表示应用key flexfield的那个字段所在的数据库基表),下图表明combination form的combination table和form table是同一个table。假如这个form用来维护零件信息,我们在此创建了一条记录,那就意味着我们添加了一条唯一的零件信息,使用key flexfield填写的各segment的value都存入了该表的seg

9、ment column中,另外系统还会产生一个唯一的id存入unique id列中,等于是用单一的主键代替联合主键唯一的标识了一个零件。structure id标识该记录对应此前设置的该key flexfield的哪个structure。 图 3.1foreign key form就不一样了,combination table和form table各不相同,其中form table中有一个特殊的外键字段引用了combination table的主键字段,unique id。图 3.2在form中输入了那么多segment的值,大部分都存入了combination table中。只有unique

10、 id的值被两个表同时记录。第三类是range form,这种form使用的combination table比较特殊,配合了一对flexfiled使用,combination table设置structure id和多个segment n_low、segment n_high字段,多用于报表输出,具体设置我还不是很清楚。图 3.3下面就结合一个设置key flexfield(foreign key form)的例子来看看使用要点。step 1 register假设已经定义并创建了key flexfield的combination table,那么第一步的工作就是在系统中注册一个key fle

11、xfield图 3.4namedescriptionapplication没什么好说的codecode在form代码里经常被引用来指定flexfieldtitle就像一个犯人编号07573,它的名字叫李二黑table name指定的combination table unique id columncombination table unique id列structure columncombination table structure id列kfv view name下文说明dynamic insert feasible 下文说明allow id value setswhether to

12、allow values sets that use a hidden id in your flexfield.qualifiers下文说明column下图说明表 3.1点击column按钮,出现图3.4所示窗口,显示的combination table中可储存flexfield segment值的可选列,只有enable的column在随后的设置中才会被关联。 图 3.4step 2 定义value set接下来我设置了一个名为scf_gl_accflxfld_account 的value set 图 3.5namedescriptionlist of typepoplist200secu

13、rityno security 不应用安全验证 hierarchical security 应用级联的安全验证 父value的安全特性绑定到子value non-hierarchical security非级联的安全验证,不绑定。format type格式类型:字符,日期,数字等等maximum size最大长度 (负号和小数点也算长度)precision精度,小数点后面的位数numbers onlycombination table structure id列uppercase全部大写,小写的字符自动转成大写right-justify and zero-fill numbers 右对齐和自动

14、补零min value最小值 当maximum size=5 precision=2时max value最大值 min value=-9.99 max value=99.99validation typeindependent,dependent,table,none等;dependent时后面的edit information 按钮激活表 3.2定义完之后,可以立即对该value set进行修改,但是一旦该value set或者该value set的值被其他对象关联或引用的话(关联安全规则,值被使用,制定到某个参数等),那么就不能轻易地对其修改,即使确实要修改也要非常谨慎,做好备份。一个定义

15、好的value set,有些属性是不能被修改的入format type,precision等,其他属性如maximum size修改起来要慎重,因为它会对此前插入的数据产生影响。step 3 设置structure图 3.6namedescriptionview name没搞明白,大伙告诉我freeze flexfield definition冻住,好像选中了就不能修改了,修改完后要重新编译,下文说明。enabled激活segment separator分隔符cross-validate segment下文说明freeze rollupgroups好像gl里有用到,还不很明白allow dyn

16、amic inserts允许动态插入,下文说明表 3.3 一旦完成structure或者segment的设置,需要freeze flexfield definition复选框,系统对你做的设置进行编译并保存。以后当你在该窗体作了任何的修改或是在shorthand aliases 窗体激活或禁用shorthand entry,都需要到这个窗体重编译,使你的修改即时生效,需要注意的是即时生效仅仅对于你当前用户来说。对于其他的用户,你所做的变动在他们改变responsibility或重新登录系统后生效。 谈到allow dynamic inserts,这个比较有意思,还记得图3.4中有个dynami

17、c insert feasible复选框吗?可行和允许好像还是递进的关系。联系本节开头所讲的combination table的概念,究竟什么样的key flexfield需要设置allow dynamic inserts,答案是foreign key form中的key flexfield才需要。这个属性的具体含义是,是否能在form table插入一条记录的时候,combination table也同时生成一条记录对应form table的记录。比如在采购窗体中录入某个物品时发现该物品在原物品表中未定义,常规的做法是打开物品定义的窗体先定义该物品,然后回到采购窗体中录入该物品;allow

18、dynamic inserts选中使得用户可以在采购窗体中利用key flexfield录入了一个新物品,同时在combination table生成物品记录,使得form table中的子项能找到combination table中的父项。并不是所有的key flexfield都可以使用allow dynamic inserts,这和combination table的column设置有很大的关系,详细内容请查阅 user guide,下图揭示了allow dynamic inserts的底层联系。图 3.7图 3.8namedescriptionnumber不允许重复name略window

19、 prompt使用flexfield对应segment的提示column对应的combination table的字段value set 关联的value setflexfield qualifers见图3.9open见图3.10表 3.4接下来是设置structure的各个segment,如图3.8所示。点击图3.8中flexfield qualifers 按钮,会出现图3.9所示窗体。在ebs中,我设置了好几个flexfield,有的不需要此处进行设置,有些就必须设置,就像下图中segment account 就必须对上flexfield qualifers中的naturalaccount

20、 segment,记得gl accounting flexfield的设置中,成本中心,自然帐户段,平衡段是必设的,另外两个不是必须的,个人认为这和flexfield qualifer的定义有关,关于flexfield qualifer,在第五节中还会进一步谈到。图 3.9图 3.10validationdefault type缺省类型default value缺省值required 是否必须输入security enabled激活安全性range取值范围sizesdisplay size加入display sizelines,field=acctg_flex_values,id=gl_account_cc_id,appl_short_name=sqlgl,code=gl#,num=101);fnd_descr_flex.define(block=orders,field=desc_flex,appl_short_name=dem,desc_flex_name=dem_orders);这种区别和不同类型flexfield的定义方法有关。 此外在form-level的下列trigger中,加入后面的函数。如果在block/item-level 上overrid

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论