EBS OAF中如何在页面的表中实现简单的关键性弹性域(KFF)

EBS OAF中如何在页面的表中实现简单的关键性弹性域(KFF)

 

在OAF中要实现一个简单的关键性弹性域是很简单的,只需要简单的步骤就可以了。这里只记录在OAF的实现,如何在FORM中定义KFF请参考其它文章。而且这里的实现,即是使用KFF,也就是”外键”引用KFF,而不是KFF的维护页面,而且现在版本OAF也只支持外键实现KFF。

1.      定义KFF,请参考其它文章。

2.      先实现一个简单的查询页面,其中的VO对应的表中包含了KFF主键的外键,如果没有外键关联KFF,自然无从实现KFF。

3.      更改VO定义,将KFF外键加入到VO定义中。如下图,这里FwkitemId是KFF外键。

EBS OAF中如何在页面的表中实现简单的关键性弹性域(KFF)_第1张图片

4.      在查询结果表中添加一个新为KFF类型的列(item),并设置属性如下:

这里的关键属性有:

Ø  Item Style:一定要是flex.

Ø  View Instance:就是这个表对应的VO实例.

Ø  Appl Short Name:是KFF定义所属的产品的缩写名.

Ø  Name:是KFF定义的编码

Ø  Type:是弹性域的类型,可以选择key或者descriptive,我们这里是关键性弹性域,所以要选择key.

Ø  Segment List:弹性域的结构和分段列表,可以定义必填字段,只读字段等。详细使用可以参考我的关于KFF和DFF的翻译文章。我们这里不填,也就是要显示所有分段。

Ø  Read Only和Rendered:这个不是必填字段,可利用PPR(SPEL)来动态控制。

EBS OAF中如何在页面的表中实现简单的关键性弹性域(KFF)_第2张图片

EBS OAF中如何在页面的表中实现简单的关键性弹性域(KFF)_第3张图片

5.      在页面的控制器的processRequest方法中添加下面代码来处理

  public void processRequest(OAPageContextpageContext, OAWebBean webBean)

  {

    super.processRequest(pageContext, webBean);

    OAKeyFlexBean flexBean =(OAKeyFlexBean)webBean.findIndexedChildRecursive("KFF");

    flexBean.setStructureCode("FWK ItemFlexfield");

    flexBean.setCCIDAttributeName("FwkitemId");

  }


这里结构代码"FWK Item Flexfield"就是KFF分段定义中的结构代码,"FwkitemId"就是VO定义中的KFF外键。

6.      实现的的效果如下.

EBS OAF中如何在页面的表中实现简单的关键性弹性域(KFF)_第4张图片

2014-02-25 更正

1.之前上传的图片有问题,现在上传正确的图片了

2.如果你测试使用的KFF也是FWK,并且是在R12上的话,有可能KFF的值出现....的问题,那是因为Oracle提供的数据有问题,

在FND_ID_FLEX_STRUCTURES中ID_FLEX_NUM的值为52737

select * from FND_ID_FLEX_STRUCTURES where ID_FLEX_CODE = 'FWK';
但是在KFF的基表FWK_TBX_ITEM_CCIDS中,对应的结构ID FWKITEM_STRUCTURE_ID的值为101

select * from FWK_TBX_ITEM_CCIDS;
所以虽然在VO的基表FWK_TBX_ITEMs中的KFF 的CCID都是正确的,也会在OAF中显示错误,用下面的脚本更改FWK_TBX_ITEM_CCIDS中的数据为正确的结构ID就可以了

update FWK_TBX_ITEM_CCIDS set FWKITEM_STRUCTURE_ID = 52737


你可能感兴趣的:(ebs,oaf,CCID,关键性弹性域,KFF)