FORM开发之说明性弹性域开发(转载)

1.注册使用弹性域的表,字段

注册表语法:ad_dd.register_table('所有者','表名','T自动扩展/S非自动扩展','下一区','自由','已使用')

[sql] view plain copy

  1. <span style="font-size:18px;">AD_DD.REGISTER_TABLE(p_appl_short_name in varchar2, --应用名简称/所有者  
  2.                              p_tab_name        in varchar2, --表名  
  3.                              p_tab_type        in varchar2, --T自动扩展/S非自动扩展/F  
  4.                              p_next_extent     in number, --下一区  
  5.                              p_pct_free        in number,  
  6.                              p_pct_used        in number)  
  7. </span>  


 

注册列语法:executead_dd.register_column('所有者','表名','字段名',序号,'类型',字段宽度,是否为空,是否可以转换)

 

[sql] view plain copy

  1. AD_DD.REGISTER_COLUMN(p_appl_short_name in varchar2,  
  2.                                 p_tab_name        in varchar2, --应用名简称/所有者  
  3.                                 p_col_name        in varchar2, --列名  
  4.                                 p_col_seq         in number,   --序号,唯一  
  5.                                 p_col_type        in varchar2, --类型  
  6.                                 p_col_width       in number,   --字段宽度  
  7.                                 p_nullable        in varchar2, --是否为空  
  8.                                 p_translate       in varchar2, --是否可以转换  
  9.                                 p_precision       in number default null,  
  10.                                 p_scale           in number default null)  


检查注册成功与否:

[sql] view plain copy

  1. select ft.table_idfrom fnd_tables ft whereft.table_name='CUX_OM_POP_VALIDITY_ALL  

[sql] view plain copy

  1.    

[sql] view plain copy

  1.    

删除注册:

[sql] view plain copy

  1. <span style="font-size:18px;">executead_dd.delete_table('CUX','CUX_OM_POP_VALIDITY_ALL');</span>  

注册表

[sql] view plain copy

  1. <span style="font-size:18px;">EXECUTE AD_DD.REGISTER_TABLE('CUX','CUX_AP_INVOICE','T',131072,10,);</span>  

注册列

 

[sql] view plain copy

  1. EXECUTE AD_DD.REGISTER_COLUMN('CUX','CUX_AP_INVOICE','LAST_UPDATE_DATE',41,'DATE',9,'N','N');  
  2. EXECUTE AD_DD.REGISTER_COLUMN('CUX','CUX_AP_INVOICE','LAST_UPDATE_LOGIN',42,'NUMBER',38,'Y','N');  
  3. EXECUTE AD_DD.REGISTER_COLUMN('CUX','CUX_AP_INVOICE','PROGRAM_APPLICATION_ID',43,'NUMBER',38,'Y','N');  
  4. EXECUTE AD_DD.REGISTER_COLUMN('CUX','CUX_AP_INVOICE','PROGRAM_ID',44,'NUMBER',38,'Y','N');  
  5. EXECUTE AD_DD.REGISTER_COLUMN('CUX','CUX_AP_INVOICE','PROGRAM_UPDATE_DATE',45,'DATE',9,'Y','N');  
  6. EXECUTE AD_DD.REGISTER_COLUMN('CUX','CUX_AP_INVOICE','REQUEST_ID',46,'NUMBER',38,'Y','N');  
  7. EXECUTE AD_DD.REGISTER_COLUMN('CUX','CUX_AP_INVOICE','ATTRIBUTE_CATEGORY',47,'VARCHAR2',30,'Y','N');  
  8. EXECUTE AD_DD.REGISTER_COLUMN('CUX','CUX_AP_INVOICE','ATTRIBUTE1',48,'VARCHAR2',240,'Y','N');  
  9. EXECUTE AD_DD.REGISTER_COLUMN('CUX','CUX_AP_INVOICE','ATTRIBUTE2',49,'VARCHAR2',240,'Y','N');  
  10. EXECUTE AD_DD.REGISTER_COLUMN('CUX','CUX_AP_INVOICE','ATTRIBUTE3',50,'VARCHAR2',240,'Y','N');  
  11. EXECUTE AD_DD.REGISTER_COLUMN('CUX','CUX_AP_INVOICE','ATTRIBUTE4',51,'VARCHAR2',240,'Y','N');  
  12. EXECUTE AD_DD.REGISTER_COLUMN('CUX','CUX_AP_INVOICE','ATTRIBUTE5',52,'VARCHAR2',240,'Y','N');  
  13. EXECUTE AD_DD.REGISTER_COLUMN('CUX','CUX_AP_INVOICE','ATTRIBUTE6',53,'VARCHAR2',240,'Y','N');  
  14. EXECUTE AD_DD.REGISTER_COLUMN('CUX','CUX_AP_INVOICE','ATTRIBUTE7',54,'VARCHAR2',240,'Y','N');  
  15. EXECUTE AD_DD.REGISTER_COLUMN('CUX','CUX_AP_INVOICE','ATTRIBUTE8',55,'VARCHAR2',240,'Y','N');  
  16. EXECUTE AD_DD.REGISTER_COLUMN('CUX','CUX_AP_INVOICE','ATTRIBUTE9',56,'VARCHAR2',240,'Y','N');  
  17. EXECUTE AD_DD.REGISTER_COLUMN('CUX','CUX_AP_INVOICE','ATTRIBUTE10',57,'VARCHAR2',240,'Y','N');  
  18. EXECUTE AD_DD.REGISTER_COLUMN('CUX','CUX_AP_INVOICE','ATTRIBUTE11',58,'VARCHAR2',240,'Y','N');  
  19. EXECUTE AD_DD.REGISTER_COLUMN('CUX','CUX_AP_INVOICE','ATTRIBUTE12',59,'VARCHAR2',240,'Y','N');  
  20. EXECUTE AD_DD.REGISTER_COLUMN('CUX','CUX_AP_INVOICE','ATTRIBUTE13',60,'VARCHAR2',240,'Y','N');  
  21. EXECUTE AD_DD.REGISTER_COLUMN('CUX','CUX_AP_INVOICE','ATTRIBUTE14',61,'VARCHAR2',240,'Y','N');  
  22. EXECUTE AD_DD.REGISTER_COLUMN('CUX','CUX_AP_INVOICE','ATTRIBUTE15',62,'VARCHAR2',240,'Y','N');  


2.系统中注册说明性弹性域


 

应用:选择注册的应用

名称:填写注册说明弹性域的名称(必须唯一)

标题:弹性域的标题,在今后的应用中,此说明弹性域将会在窗口标题上显示在此定义的标题内容

表应用:在注册表,列时指定的应用(appl_short_name

表名:  选择注册的表名称

结构列:必须也是存在于注册过的列,结构列的意义就是存放说明性弹性域上下文提示的值

上下文提示:是在说明性弹性域上下文字段的标题描述

3.FORM中开发弹性域

 

(1):加入非基表域用于容纳弹性域,我们做一个ITEM叫DF 注意这个ITEM的CLASS属性为 TEXT_ITEM,LOV处选ENABLE_LIST_LAMP,并把检查有效性设为NO。

(2):FORM中要包含所设置的弹性域如ATTRIBUTE_CATEGORY,ATTRIBUTE1,ATTRIBUTE2…... 注意这些域为基表项,设置CANVANS为NULL或者显示在画布上都可以

(3):把DF放在CANVANS上,弄成弹性域的样子.设置其属性:值列表=ENABLE_LIST_LAMP

(4):在FORM中注册弹性域

为了FORM识别弹性域,在FORM级别的WHEN-NEW_FORM_INSTANCE 上加上如下的代码

从列表中验证=否

 

[sql] view plain copy

  1. fnd_descr_flex.define(  
  2.     'FLEX_LN'-- form中的block name  
  3.     field=>'DF'-- form中的弹性域的item name  
  4.     appl_short_name=>'EDV'-- 注册弹性域在那个user下  
  5.     desc_flex_name=>'FLEX_LN' -- 注册弹性域的名称  
  6. );  

具体参数及意思.如下

含有弹性域的BLOCK         叫FLEX_LN

DF                        我们命名的那个容纳弹性域的域.

 FLEX_LN                          我们注册的那个弹性域的名称.

5):加入触发器以支持弹性域.

分别在BLOCK级别加入如下的触发器.

PRE-QUERY

PRE-UPDATE

PRE-INSERT

POST-QUERY

其触发器的代码分别对应

[sql] view plain copy

  1. (  
  2.   
  3. FND_FLEX.EVENT('PRE-QUERY');  
  4.   
  5. FND_FLEX.EVENT('PRE-UPDATE');  
  6.   
  7. FND_FLEX.EVENT('PRE-INSERT');  
  8.   
  9. FND_FLEX.EVENT('POST-QUERY');  
  10.   
  11. 在容纳弹性域的域ITEM级别加入如下的触发器  
  12.   
  13. WHEN-VALIDATE_ITEM  
  14.   
  15. FND_FLEX.EVENT('WHEN-VALIDATE-ITEM');  

4.系统中启用弹性域

 

 

路径 ApplicationDeveloper --> Flexfield --> Descriptive --> Segments

   弹性域设置结束后,需要将Freeze Flexfield Definition冻结才能使设置生效

Application: 弹性域注册的应用名称

   Title: 弹性域标题,打开弹性域窗体时所显示的名称

   Freeze Flexfield Definition:冻结弹性域定义,修改时需要解除冻结,设置完成之后需要冻结才能生效

   Segment Separator:段分隔符

   Prompt: 上下文提示

   Value Set: 为上下文内容提供一个LOV值集选择

   Default Value:上下文默认值

   Reference Field:参考字段,作用是根据参考字段的值来判断显示哪一中弹性域(上下文)

   Global Data Elements:每个弹性的段信息中,都有一个默认的段定义 Global Data Elements。如果我们定义的弹性域只有一种段结构的话,可以直接在  Global Data Elements段中进行定义,如果有多个的话,需要在另创建记录进行段定义的需要,有一点需要说明的是,一旦有注册了的字段在 Global Data Elements中定义了结构的话,那么用户自己在创建其他的段结构,则不会显示在Global Data Elements中使用了的字段

   Parts: 自定义段结构

   Vehicle: 自定义段结构

 

   设置完成之后注意要冻结弹性域定义并保存

 

 

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

阅读更多
换一批

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