FORM开发之键性弹性域开发(转载)

1.创建表时带有键弹性域字段

[sql] view plain copy

  1. <span style="font-size:18px;">SUMMARY_FLAG            VARCHAR2(1) ,  /* 必须有此字段 */  
  2.   ENABLED_FLAG            VARCHAR2(1) ,  /* 必须有此字段 */  
  3.   START_DATE_ACTIVE       DATE ,         /* 必须有此字段 */  
  4.   END_DATE_ACTIVE         DATE ,  /* 必须有此字段 */  
  5.   LAST_UPDATED_BY         NUMBER ,  /* 必须有此字段 */  
  6.   LAST_UPDATE_DATE        DATE ,   /* 必须有此字段 */  
  7.   SEGMENT1                VARCHAR2(30) ,   
  8.   SEGMENT2                VARCHAR2(30) ,   
  9.   SEGMENT3                VARCHAR2(30) ,   
  10.   SEGMENT4                VARCHAR2(30) ,   
  11.   SEGMENT5                VARCHAR2(30) ,   
  12.   SEGMENT6                VARCHAR2(30) ,   
  13.   SEGMENT7                VARCHAR2(30) ,   
  14.   SEGMENT8                VARCHAR2(30) ,   
  15.   SEGMENT9                VARCHAR2(30) ,   
  16.   SEGMENT10               VARCHAR2(30) ,   
  17.   SEGMENT11               VARCHAR2(30) ,   
  18.   SEGMENT12               VARCHAR2(30) ,   
  19.   SEGMENT13               VARCHAR2(30) ,   
  20.   SEGMENT14               VARCHAR2(30) ,   
  21.   SEGMENT15               VARCHAR2(30)   
  22. </span>  

2.注册表和列

注册表

[sql] view plain copy

  1. <span style="font-size:18px;">execute ad_dd.register_table('EDV''FLEX_LN_KEY''T');</span>  


注册列

[sql] view plain copy

  1. <span style="font-size:18px;">execute ad_dd.register_column('EDV''FLEX_LN_KEY''KEY_FLEX_STRUCTURE_ID', 1, 'NUMBER', 38, 'Y','N' );  
  2. execute ad_dd.register_column('EDV''FLEX_LN_KEY''KEY_FLEX_ID', 2, 'NUMBER', 38, 'Y''N' );  
  3. execute ad_dd.register_column('EDV''FLEX_LN_KEY''SEGMENT1', 3, 'VARCHAR2', 30, 'Y''N' );  
  4. execute ad_dd.register_column('EDV''FLEX_LN_KEY''SEGMENT2', 4, 'VARCHAR2', 30, 'Y''N' );  
  5. execute ad_dd.register_column('EDV''FLEX_LN_KEY''SEGMENT3', 5, 'VARCHAR2', 30, 'Y''N' );  
  6. execute ad_dd.register_column('EDV''FLEX_LN_KEY''SEGMENT4', 6, 'VARCHAR2', 30, 'Y''N' );  
  7. execute ad_dd.register_column('EDV''FLEX_LN_KEY''SEGMENT5', 7, 'VARCHAR2', 30, 'Y''N' );  
  8. </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

  1. fnd_key_flex.define (  
  2.     block => 'T_KEY_FLEX'-- 操作的block  
  3.     field => 'KEY_FLEXITEM'-- 创建的item,用来容纳键弹性域  
  4.     id => 'KEY_ID'--保存key弹性域的唯一值  
  5.     appl_short_name => 'EDV',  
  6.     code => 'K_LN'-- 键弹性域的注册代码 fnd_id_flex_structures.id_flex_code  
  7.     num => '101' --fnd_id_flex_structures.id_flex_num  
  8. );  

(3)分别在BLOCK级别加入如下的触发器(可参考说明性弹性域的应用代码).

PRE-QUERY

PRE-UPDATE

PRE-INSERT

POST-QUERY

WHEN-NEW-ITEM-INSTANCE

WHEN-VALIDATE-ITEM

WHEN-VALIDATE-RECORD

其触发器的代码分别对应

[sql] view plain copy

  1. FND_FLEX.EVENT('PRE-QUERY');  
  2.   
  3. FND_FLEX.EVENT('PRE-UPDATE');  
  4.   
  5. FND_FLEX.EVENT('PRE-INSERT');  
  6.   
  7. FND_FLEX.EVENT('POST-QUERY');  
  8.   
  9. FND_FLEX.EVENT('WHEN-NEW-ITEM-INSTANCE');  
  10.   
  11. FND_FLEX.EVENT('WHEN-VALIDATE-ITEM');  
  12.   
  13. FND_FLEX.EVENT('WHEN-VALIDATE-RECORD');  


 

4.在系统中注册弹性域

 

 

转载出处:https://blog.csdn.net/cai_xingyun/article/details/17302777

阅读更多

没有更多推荐了,返回首页