弹性域
1.弹性域的分成:关键性弹性域,说明性弹性域。
关键性弹性域:在使用key弹性域的基表中,只保存ID,但是可以通过ID查询到相应的segment1.在table结构中表现为**_ID,Segment1等。
说明性弹性域:针对特定用户 扩展输入特定信息的字段。在table的structure中表现为attribute_category,attribute1,attribute2字段等。
注册关键性弹性域 à略。
注册说明性弹性域:
(1).创建table
注:使用说明性弹性域的数据table必须含有attribute_category及若干attribute字段。 Attribute_category字段:指弹性域的context字段。Attribute字段:指实际使用的字段。
Create table ( ….....,
Attribute_category varchar2(20),
Attribute1 varchar2(40),
……… )
(2).注册弹性域:
Begin
Ad_dd.register_table(‘BND’,’CHALLENGE_FLEX’,’T’,10,10,40);
End;
Remark:BNDà application short name, CHALLENGE_FLEX àTable Name
Column type |
Column name |
序号 |
Begin
Columns length |
Ad_dd.register_column(‘BND’,’CHALLENGE_FLEX’,’Attribute1’,2,‘Varchar2’,40,’N’,’N’ );
End;
(4).查看是否注册成功
select ft.table_id
from fnd_tables ft
where ft.table_name = 'Challenge_flex';
select *
from fnd_columns fc
where fc.table_id in
(select ft.table_id
from fnd_tables ft
where ft.table_name = 'CHALLENGE_FLEX')
(5).注册弹性域列
PATH:Application Developer àFlexfieldàdescriptiveàregister
(6).注册弹性域字段
Path: Application DeveloperàFlexfieldàDescriptiveàsegments
(7).启用说明性弹性域
7.1先按将相应的form开发好,然后在form级的以下trrigger中加入
PRE-QUERY: FND_FLEX.EVENT(‘PRE-QUERY’);
POST-QUERY: FND_FLEX.EVENT(‘PRE-QUERY’);
PRE-INSERT: FND_FLEX.EVENT(‘PRE-INSERT’);
PRE-UPDATE: FND_FLEX.EVENT(‘PRE-UPDATE’);
WHEN-VALIDATE-ITEM FND_FLEX.EVENT(‘WHEN-VALIDATE-ITEM’);
WHEN-VALIDATE-RECORD FND_FLEX.EVENT(‘WHEN-VALIDATE-RECORD’);
7.2在pre-form的trigger中加入如下:
Begin
Fnd_descr_flex.define(block à’CHALLENGE_FLEX’,
Field à’block_item’,---value: Desc_Flex
Appl_short_name à ‘BND’,
Desc-flex_name à ‘TEST_FLEX’);
End;
说明一下相应的参数:
Block:启用弹性域的数据块名。
Field:指后面新增的item.
Appl_short_name:指相应的模块的简称(System AdminàApplicationàRegister)
Desc_flex_name:指注册弹性域时的名称
(8).在要启用弹性域的数据块中增加一个item作为flex_item.名称为desc_flex
8.1 flex_item desc_flex属性设置如下:
Subclass information : text_item_desc_flex
Database item : NO
Canvas: 对应的canvas name
8.2 在desc_flex项的以下trigger中加入如下代码。
When-validate-item : fnd_flex.event(‘when-validate-item’);
When-new-item-instance: fnd_flex.event(‘when-new-item-instance’);