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.系统中注册说明性弹性域

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

应用:选择注册的应用

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

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

表应用:在注册表,列时指定的应用(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冻结才能使设置生效

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

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

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

上一篇:页面中多个script块之间的关系


下一篇:Android课程---简单的音乐播放器