小说网站 搜小说 无限网 烟雨红尘 小说爱好者 免费小说 免费小说网站

FORM开发之说明性弹性域开发

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

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

AD_DD.REGISTER_TABLE(p_appl_short_name in varchar2, --应用名简称/所有者
                             p_tab_name        in varchar2, --表名
                             p_tab_type        in varchar2, --T自动扩展/S非自动扩展/F
                             p_next_extent     in number, --下一区
                             p_pct_free        in number,
                             p_pct_used        in number)


 

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

 

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


检查注册成功与否:

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

删除注册:

executead_dd.delete_table('CUX','CUX_OM_POP_VALIDITY_ALL');

注册表

EXECUTE AD_DD.REGISTER_TABLE('CUX','CUX_AP_INVOICE','T',131072,10,);

注册列

 

EXECUTE AD_DD.REGISTER_COLUMN('CUX','CUX_AP_INVOICE','LAST_UPDATE_DATE',41,'DATE',9,'N','N');
EXECUTE AD_DD.REGISTER_COLUMN('CUX','CUX_AP_INVOICE','LAST_UPDATE_LOGIN',42,'NUMBER',38,'Y','N');
EXECUTE AD_DD.REGISTER_COLUMN('CUX','CUX_AP_INVOICE','PROGRAM_APPLICATION_ID',43,'NUMBER',38,'Y','N');
EXECUTE AD_DD.REGISTER_COLUMN('CUX','CUX_AP_INVOICE','PROGRAM_ID',44,'NUMBER',38,'Y','N');
EXECUTE AD_DD.REGISTER_COLUMN('CUX','CUX_AP_INVOICE','PROGRAM_UPDATE_DATE',45,'DATE',9,'Y','N');
EXECUTE AD_DD.REGISTER_COLUMN('CUX','CUX_AP_INVOICE','REQUEST_ID',46,'NUMBER',38,'Y','N');
EXECUTE AD_DD.REGISTER_COLUMN('CUX','CUX_AP_INVOICE','ATTRIBUTE_CATEGORY',47,'VARCHAR2',30,'Y','N');
EXECUTE AD_DD.REGISTER_COLUMN('CUX','CUX_AP_INVOICE','ATTRIBUTE1',48,'VARCHAR2',240,'Y','N');
EXECUTE AD_DD.REGISTER_COLUMN('CUX','CUX_AP_INVOICE','ATTRIBUTE2',49,'VARCHAR2',240,'Y','N');
EXECUTE AD_DD.REGISTER_COLUMN('CUX','CUX_AP_INVOICE','ATTRIBUTE3',50,'VARCHAR2',240,'Y','N');
EXECUTE AD_DD.REGISTER_COLUMN('CUX','CUX_AP_INVOICE','ATTRIBUTE4',51,'VARCHAR2',240,'Y','N');
EXECUTE AD_DD.REGISTER_COLUMN('CUX','CUX_AP_INVOICE','ATTRIBUTE5',52,'VARCHAR2',240,'Y','N');
EXECUTE AD_DD.REGISTER_COLUMN('CUX','CUX_AP_INVOICE','ATTRIBUTE6',53,'VARCHAR2',240,'Y','N');
EXECUTE AD_DD.REGISTER_COLUMN('CUX','CUX_AP_INVOICE','ATTRIBUTE7',54,'VARCHAR2',240,'Y','N');
EXECUTE AD_DD.REGISTER_COLUMN('CUX','CUX_AP_INVOICE','ATTRIBUTE8',55,'VARCHAR2',240,'Y','N');
EXECUTE AD_DD.REGISTER_COLUMN('CUX','CUX_AP_INVOICE','ATTRIBUTE9',56,'VARCHAR2',240,'Y','N');
EXECUTE AD_DD.REGISTER_COLUMN('CUX','CUX_AP_INVOICE','ATTRIBUTE10',57,'VARCHAR2',240,'Y','N');
EXECUTE AD_DD.REGISTER_COLUMN('CUX','CUX_AP_INVOICE','ATTRIBUTE11',58,'VARCHAR2',240,'Y','N');
EXECUTE AD_DD.REGISTER_COLUMN('CUX','CUX_AP_INVOICE','ATTRIBUTE12',59,'VARCHAR2',240,'Y','N');
EXECUTE AD_DD.REGISTER_COLUMN('CUX','CUX_AP_INVOICE','ATTRIBUTE13',60,'VARCHAR2',240,'Y','N');
EXECUTE AD_DD.REGISTER_COLUMN('CUX','CUX_AP_INVOICE','ATTRIBUTE14',61,'VARCHAR2',240,'Y','N');
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 上加上如下的代码

从列表中验证=否

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

具体参数及意思.如下

含有弹性域的BLOCK         叫FLEX_LN

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

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

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

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

PRE-QUERY

PRE-UPDATE

PRE-INSERT

POST-QUERY

其触发器的代码分别对应

(

FND_FLEX.EVENT('PRE-QUERY');

FND_FLEX.EVENT('PRE-UPDATE');

FND_FLEX.EVENT('PRE-INSERT');

FND_FLEX.EVENT('POST-QUERY');

在容纳弹性域的域ITEM级别加入如下的触发器

WHEN-VALIDATE_ITEM

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: 自定义段结构

 

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


 

 

 

posted on 2013-12-12 23:59  王小航  阅读(606)  评论(0编辑  收藏  举报

导航