1.创建表时带有键弹性域字段
[sql] view plain copy
- <span style="font-size:18px;">SUMMARY_FLAG VARCHAR2(1) , /* 必须有此字段 */
- ENABLED_FLAG VARCHAR2(1) , /* 必须有此字段 */
- START_DATE_ACTIVE DATE , /* 必须有此字段 */
- END_DATE_ACTIVE DATE , /* 必须有此字段 */
- LAST_UPDATED_BY NUMBER , /* 必须有此字段 */
- LAST_UPDATE_DATE DATE , /* 必须有此字段 */
- SEGMENT1 VARCHAR2(30) ,
- SEGMENT2 VARCHAR2(30) ,
- SEGMENT3 VARCHAR2(30) ,
- SEGMENT4 VARCHAR2(30) ,
- SEGMENT5 VARCHAR2(30) ,
- SEGMENT6 VARCHAR2(30) ,
- SEGMENT7 VARCHAR2(30) ,
- SEGMENT8 VARCHAR2(30) ,
- SEGMENT9 VARCHAR2(30) ,
- SEGMENT10 VARCHAR2(30) ,
- SEGMENT11 VARCHAR2(30) ,
- SEGMENT12 VARCHAR2(30) ,
- SEGMENT13 VARCHAR2(30) ,
- SEGMENT14 VARCHAR2(30) ,
- SEGMENT15 VARCHAR2(30)
- </span>
2.注册表和列
注册表
[sql] view plain copy
- <span style="font-size:18px;">execute ad_dd.register_table('EDV', 'FLEX_LN_KEY', 'T');</span>
注册列
[sql] view plain copy
- <span style="font-size:18px;">execute ad_dd.register_column('EDV', 'FLEX_LN_KEY', 'KEY_FLEX_STRUCTURE_ID', 1, 'NUMBER', 38, 'Y','N' );
- execute ad_dd.register_column('EDV', 'FLEX_LN_KEY', 'KEY_FLEX_ID', 2, 'NUMBER', 38, 'Y', 'N' );
- execute ad_dd.register_column('EDV', 'FLEX_LN_KEY', 'SEGMENT1', 3, 'VARCHAR2', 30, 'Y', 'N' );
- execute ad_dd.register_column('EDV', 'FLEX_LN_KEY', 'SEGMENT2', 4, 'VARCHAR2', 30, 'Y', 'N' );
- execute ad_dd.register_column('EDV', 'FLEX_LN_KEY', 'SEGMENT3', 5, 'VARCHAR2', 30, 'Y', 'N' );
- execute ad_dd.register_column('EDV', 'FLEX_LN_KEY', 'SEGMENT4', 6, 'VARCHAR2', 30, 'Y', 'N' );
- execute ad_dd.register_column('EDV', 'FLEX_LN_KEY', 'SEGMENT5', 7, 'VARCHAR2', 30, 'Y', 'N' );
- </span>
3.FORM中开发弹性域
(1)创建ITEM,可参考我的FORM开发之说明性弹性域开发
加入非基表域用于容纳弹性域,我们做一个ITEM叫KEY_FLEXITEM
注意这个ITEM的CLASS属性为TEXT_ITEM, LOV处选择ENABLE_LIST_LAMP,并把检查有效性设为NO。
(2)在when-new-form-instance中注册弹性域
[sql] view plain copy
- fnd_key_flex.define (
- block => 'T_KEY_FLEX', -- 操作的block
- field => 'KEY_FLEXITEM', -- 创建的item,用来容纳键弹性域
- id => 'KEY_ID', --保存key弹性域的唯一值
- appl_short_name => 'EDV',
- code => 'K_LN', -- 键弹性域的注册代码 fnd_id_flex_structures.id_flex_code
- num => '101' --fnd_id_flex_structures.id_flex_num
- );
(3)分别在BLOCK级别加入如下的触发器(可参考说明性弹性域的应用代码).
PRE-QUERY
PRE-UPDATE
PRE-INSERT
POST-QUERY
WHEN-NEW-ITEM-INSTANCE
WHEN-VALIDATE-ITEM
WHEN-VALIDATE-RECORD
其触发器的代码分别对应
[sql] view plain copy
- FND_FLEX.EVENT('PRE-QUERY');
- FND_FLEX.EVENT('PRE-UPDATE');
- FND_FLEX.EVENT('PRE-INSERT');
- FND_FLEX.EVENT('POST-QUERY');
- FND_FLEX.EVENT('WHEN-NEW-ITEM-INSTANCE');
- FND_FLEX.EVENT('WHEN-VALIDATE-ITEM');
- FND_FLEX.EVENT('WHEN-VALIDATE-RECORD');
4.在系统中注册弹性域
转载出处:https://blog.csdn.net/cai_xingyun/article/details/17302777