如何在Form中使用描述性弹性域.docx
- 文档编号:6207788
- 上传时间:2023-01-04
- 格式:DOCX
- 页数:9
- 大小:271.09KB
如何在Form中使用描述性弹性域.docx
《如何在Form中使用描述性弹性域.docx》由会员分享,可在线阅读,更多相关《如何在Form中使用描述性弹性域.docx(9页珍藏版)》请在冰豆网上搜索。
如何在Form中使用描述性弹性域
描述性弹性域的开发步骤主要包括:
1、创建表,表中包括弹性域结构列和弹性域列
2、创建视图,视图中包括弹性域相关列(非必需)
3、使用AD_DD工具包注册表和表列
4、在OracleEBS系统中注册描述性弹性域
5、启用描述性弹性域
6、按照一般Form开发的步骤,创建相关对象
1)、在块中创建一个DF非数据库项,并设置属性
2)、给DF项和数据块添加必要的触发器和标准代码
3)、在PRE-FORM触发器中初始化第四步中注册的弹性域
7、登录OracleEBS系统验证弹性域
一、创建表
创建的表中必须包括描述性弹性域列:
ATTRIBUTE_CATEGORY 结构列
ATTRIBUTE1…N 弹性域列的数据库段
脚本如下
DROPTABLECUX.CUX_FORM_DFF_TEST;
CREATETABLECUX.CUX_FORM_DFF_TEST
(
ITEM_IDNUMBERNOTNULL,
ITEM_NUMBERVARCHAR2(30)NOTNULL,
ITEM_NAMEVARCHAR2(100)NOTNULL,
ITEM_DESCRIPTIONVARCHAR2(255),
START_DATE_ACTIVEDATE,
END_DATE_ACTIVEDATE,
ATTRIBUTE_CATEGORYVARCHAR2(30),
ATTRIBUTE1VARCHAR2(150),
ATTRIBUTE2VARCHAR2(150),
ATTRIBUTE3VARCHAR2(150),
ATTRIBUTE4VARCHAR2(150),
ATTRIBUTE5VARCHAR2(150),
ATTRIBUTE6VARCHAR2(150),
ATTRIBUTE7VARCHAR2(150),
ATTRIBUTE8VARCHAR2(150),
ATTRIBUTE9VARCHAR2(150),
ATTRIBUTE10VARCHAR2(150),
ATTRIBUTE11VARCHAR2(150),
ATTRIBUTE12VARCHAR2(150),
ATTRIBUTE13VARCHAR2(150),
ATTRIBUTE14VARCHAR2(150),
ATTRIBUTE15VARCHAR2(150),
CREATED_BYNUMBERNOTNULL,
CREATION_DATEDATENOTNULL,
LAST_UPDATED_BYNUMBERNOTNULL,
LAST_UPDATE_DATEDATENOTNULL,
LAST_UPDATE_LOGINNUMBER
)
TABLESPACECUX;
--CreateIndex
CREATEUNIQUEINDEXCUX_FORM_DFF_TEST_U1ONCUX.CUX_FORM_DFF_TEST(ITEM_ID);
--CreateSequence
CREATESEQUENCECUX.CUX_FORM_DFF_TEST_SSTARTWITH1;
--CreateSynonym
CREATESYNONYMCUX_FORM_DFF_TESTFORCUX.CUX_FORM_DFF_TEST;
CREATESYNONYMCUX_FORM_DFF_TEST_SFORCUX.CUX_FORM_DFF_TEST_S;
二、创建视图
略
三、注册表和列
使用AD_DD包来注册表和列
注册表
AD_DD.REGISTER_TABLE(p_appl_short_nameinvarchar2,--应用名简称/所有者
p_tab_name invarchar2,--表名
p_tab_type invarchar2,--T自动扩展/S非自动扩展/F
p_next_extent innumber,--下一区
p_pct_free innumber,
p_pct_used innumber)
注册列
AD_DD.REGISTER_COLUMN(p_appl_short_nameinvarchar2,
p_tab_name invarchar2,--应用名简称/所有者
p_col_name invarchar2,--列名
p_col_seq innumber, --序号,唯一
p_col_type invarchar2,--类型
p_col_width innumber, --字段宽度
p_nullable invarchar2,--是否为空
p_translate invarchar2,--是否可以转换
p_precision innumberdefaultnull,
p_scale innumberdefaultnull)
可以自己编写工具包来自动生成注册脚本,或者可以使用Excel来生成,脚本如下
--注册表
EXECUTEAD_DD.REGISTER_TABLE('CUX','CUX_FORM_DFF_TEST','T',8,10,90);
--注册列
EXECUTEAD_DD.REGISTER_COLUMN('CUX','CUX_FORM_DFF_TEST','ITEM_ID',1,'NUMBER',38,'N','N');
EXECUTEAD_DD.REGISTER_COLUMN('CUX','CUX_FORM_DFF_TEST','ITEM_NUMBER',2,'VARCHAR2',30,'N','N');
EXECUTEAD_DD.REGISTER_COLUMN('CUX','CUX_FORM_DFF_TEST','ITEM_NAME',3,'VARCHAR2',100,'N','N');
EXECUTEAD_DD.REGISTER_COLUMN('CUX','CUX_FORM_DFF_TEST','ITEM_DESCRIPTION',4,'VARCHAR2',255,'Y','N');
EXECUTEAD_DD.REGISTER_COLUMN('CUX','CUX_FORM_DFF_TEST','START_DATE_ACTIVE',5,'DATE',9,'Y','N');
EXECUTEAD_DD.REGISTER_COLUMN('CUX','CUX_FORM_DFF_TEST','END_DATE_ACTIVE',6,'DATE',9,'Y','N');
EXECUTEAD_DD.REGISTER_COLUMN('CUX','CUX_FORM_DFF_TEST','ATTRIBUTE_CATEGORY',7,'VARCHAR2',30,'Y','N');
EXECUTEAD_DD.REGISTER_COLUMN('CUX','CUX_FORM_DFF_TEST','ATTRIBUTE1',8,'VARCHAR2',150,'Y','N');
EXECUTEAD_DD.REGISTER_COLUMN('CUX','CUX_FORM_DFF_TEST','ATTRIBUTE2',9,'VARCHAR2',150,'Y','N');
EXECUTEAD_DD.REGISTER_COLUMN('CUX','CUX_FORM_DFF_TEST','ATTRIBUTE3',10,'VARCHAR2',150,'Y','N');
EXECUTEAD_DD.REGISTER_COLUMN('CUX','CUX_FORM_DFF_TEST','ATTRIBUTE4',11,'VARCHAR2',150,'Y','N');
四、在EBS中注册描述性弹性域
路径ApplicationDeveloper-->Flexfield-->Descriptive-->Register
Application:
弹性域注册的应用名称
Name:
描述性弹性域的名称,必须唯一。
一般设置成和表名一样
Title:
弹性域的标题,在今后的应用中,此说描述性弹性域将会在窗口标题上显示在此定义的标题内容
Description:
说明
TableApplication:
在(第三步)注册表和列时所指定的应用名称
TableName:
注册时的表名称
StructureColumn:
结构列,一般为ATTRIBUTE_CATEGORY,必须是存在于注册过的列。
结构列的意义就是存放说明性弹性域上下文提示的值
ContextPrompt:
上下文提示,是在描述性弹性域上下文字段的标题描述
DFVViewName:
ReferenceFields:
参考字段的主要作用与结构列的作用类似,可以在不选择上下文字段的情况下,系统根据参考字段的含义来对应显示不用的弹性域。
举例说明,例如参考字段为NAME,则在系统中输入NAME信息后,系统会自动根据NAME的信息来确定显示什么样的弹性域,这样就可以避免来选择上下文来显示需要的弹性域。
五、启用描述性弹性域
路径ApplicationDeveloper-->Flexfield-->Descriptive-->Segments
弹性域设置结束后,需要将FreezeFlexfieldDefinition冻结才能使设置生效
Application:
弹性域注册的应用名称
Title:
弹性域标题,打开弹性域窗体时所显示的名称
FreezeFlexfieldDefinition:
冻结弹性域定义,修改时需要解除冻结,设置完成之后需要冻结才能生效
SegmentSeparator:
段分隔符
Prompt:
上下文提示
ValueSet:
为上下文内容提供一个LOV值集选择
DefaultValue:
上下文默认值
ReferenceField:
参考字段,作用是根据参考字段的值来判断显示哪一中弹性域(上下文)
GlobalDataElements:
每个弹性的段信息中,都有一个默认的段定义GlobalDataElements。
如果我们定义的弹性域只有一种段结构的话,可以直接在 GlobalDataElements段中进行定义,如果有多个的话,需要在另创建记录进行段定义的需要,有一点需要说明的是,一旦有注册了的字段在GlobalDataElements中定义了结构的话,那么用户自己在创建其他的段结构,则不会显示在GlobalDataElements中使用了的字段
Parts:
自定义段结构
Vehicle:
自定义段结构
设置完成之后注意要冻结弹性域定义并保存
六、开发Form
Form开发的基本步骤不再冗述,仅对开发描述性弹性域需要的操作做说明:
1)、创建DF项
在DataBlock中新增一个Item,命名为”DF”,其SubclassInfoRMAtion设置为TEXT_ITEM_DESC_FLEX,(ListofValues设置为ENABLE_LIST_LAMP,ValidatefromList设置为NO,非必需)DatabaseItem设置为NO,
2)、给DF项和数据块添加必要的触发器和标准代码
为DF项添加WHEN-NEW-ITEM-INSTANCE触发器,并将其ExecutionHierarchy属性从Override修改为Before,触发器代码如下
FND_FLEX.EVENT('WHEN-NEW-ITEM-INSTANCE');
为DF项添加WHEN-VALIDATE-ITEM触发器,其代码为
FND_FLEX.EVENT('WHEN-VALIDATE-ITEM');
在DF项所在DataBlock下添加几个Block级别的触发器,分别为
PRE-QUERY:
FND_FLEX.EVENT('PRE-QUERY');
POST-QUERY:
FND_FLEX.EVENT('POST-QUERY');
PRE-INSERT:
FND_FLEX.EVENT('PRE-INSERT');
PRE-UPDATE:
FND_FLEX.EVENT('PRE-UPDATE');
WHEN-VALIDATE-RECORD:
FND_FLEX.EVENT('WHEN-VALIDATE-RECORD');
WHEN-VALIDATE-ITEM:
FND_FLEX.EVENT('WHEN-VALIDATE-ITEM');
3)、在Form级别的触发器PRE-FORM中注册弹性域
在Form级别的触发器PRE-FORM中使用FND_DESCR_FLEX.DEFINE来初始化描述性弹性域,如
FND_DESCR_FLEX.DEFINE(block=>'ITEMS',
field=>'DF',
appl_short_name=>'CUX',
desc_flex_name=>'CUX_FORM_DFF_TEST');
参数说明如下
block:
弹性域显示项DF所在的DataBlock名称
field:
描述性弹性域显示字段的名称,一般都命名为DF
appl_short_name:
描述性弹性域注册时的应用简称
desc_flex_name:
描述性弹性域注册时的名称,一般都与表名一致
七、验证弹性域
登录EBS中验证开发的描述性弹性域,最终效果如下
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 如何 Form 使用 描述 弹性