技术开发 频道

ORACLEERP开发基础之EBS开发基础

  注册说明性弹性域

  1.创建数据表。

  注:使用说明性弹性域的数据表,必须含有ATTRIBUTE_CATEGORY及若干ATTRIBUTEN字段。 ATTRIBUTE_CATEGORY字段:指弹性域的CONTEXT字段。 ATTRIBUTEN字段:指实际使用的字段。

  create table HEK_DISCOUNT_POLICY_H_NEW(

  POLICY_ID NUMBER, POLICY_NO VARCHAR2(30) not null, CUSTOMER_ID NUMBER, CUSTOMER_NUMBER NUMBER , CUSTOMER_NAME VARCHAR2(100), BENIFICIARY_ID NUMBER, BENIFICIARY_NUMBER NUMBER , BENIFICIARY_NAME VARCHAR2(100), RELATION_NUMBER NUMBER , RELATION_NAME VARCHAR2(100), PAYMENT_TYPE VARCHAR2(20), POLICY_PERIOD VARCHAR2(20) not null, ATTRIBUTE_CATEGORY VARCHAR2(150), ATTRIBUTE1 VARCHAR2(150), ATTRIBUTE2 VARCHAR2(150), ATTRIBUTE3 VARCHAR2(150), CREATED_BY NUMBER, CREATION_DATTE DATE, LAST_UPDATED_BY NUMBER, LAST_UPDATE_DATE DATE, LAST_UPDATE_LOGIN NUMBER)

  2.注册弹性域表

  begin

  ad_dd.register_table('HEK','HEK_DISCOUNT_POLICY_H_NEW','T',10,10,40);

  commit;

  end;

  3.注册弹性域表的列

  begin

  ad_dd.register_column('HEK','HEK_DISCOUNT_POLICY_H_NEW','ATTRIBUTE_CATEGORY',1,'VARCHAR2',150,'N','N'); ad_dd.register_column('HEK','HEK_DISCOUNT_POLICY_H_NEW','ATTRIBUTE1',2,'VARCHAR2',150,'N','N'); ad_dd.register_column('HEK','HEK_DISCOUNT_POLICY_H_NEW','ATTRIBUTE2',3,'VARCHAR2',150,'N','N'); ad_dd.register_column('HEK','HEK_DISCOUNT_POLICY_H_NEW','ATTRIBUTE3',4,'VARCHAR2',150,'N','N');

  commit;

  end;

  4.查看是否注册成功

  select ft.table_id from FND_TABLES ft where ft.table_name='HEK_DISCOUNT_POLICY_H_NEW'

  select * from FND_COLUMNS fc where fc.table_id in (select ft.table_id from FND_TABLES ft where ft.table_name='HEK_DISCOUNT_POLICY_H_NEW')

  5.注册弹性域列 操作路径:应用开发员=>弹性域=>说明性=>注册

  点列按钮,选择注册相应的列

  6. 注册弹性域段

  点段按钮,输入提示文本

  7.启用说明性弹性域

  7.1先按将相应的FORM开发好,然后在FORM级的以下TRIGGER中加入

  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-ITEM: FND_FLEX.EVENT('WHEN-VALIDATE-ITEM');

  WHEN-VALIDATE-RECORD: FND_FLEX.EVENT('WHEN-VALIDATE-RECORD');

  7.2在PRE-FORM的TRIGGER中加入

  fnd_descr_flex.define ( BLOCK=>'HEK_DISCOUNT_POLICY_H_NEW',

  FIELD=>'DESC_FLEX',

  APPL_SHORT_NAME=>'HEK',

  DESC_FLEX_NAME=>'HEK返利_订金');

  说明一下相应参数:BLOCK:指启用弹性域的数据块名 FIELD:指后面新增的ITEM APPL_SHORT_NAME:指相应模块的简称(系统管理员->应用->注册) DESC_FLEX_NAME:指注册弹性域时的名称

  8.在要启用弹性域的数据块中增加一个ITEM。名称为:DESC_FLEX。

  8.1 DESC_FLEX属性设置如下:

  子类信息:TEXT_ITEM_DESC_FLEX

  数据库项:否

  画布:MAIN_C

  8.2在DESC_FLEX项的以下trigger中加入:

  WHEN-VALIDATE-ITEM :FND_FLEX.EVENT('WHEN-VALIDATE-ITEM');

  WHEN-NEW-ITEM-INSTANCE:FND_FLEX.EVENT('WHEN-NEW-ITEM-INSTANCE');

  9.完成效果:

  条件控制说明性弹性域

  说明:通过一个字段的值控制是否显示说明性弹性域。与普通的说明性弹性域类似。下面仅说明不同之处。

  1. 注册弹性域列时,定义一个参考列。

  点击参考字段按钮

  DISCOUNT_TYPE是要启用弹性域数据表中的一个字段,即通过这个字段,来控制是否显示弹性域。

  2.定义弹性域段

  新增一条上下文值记录,例:年返。即当DISCOUNT_TYPE的值为“年返”时,才显示弹性域。

  3.实现效果。

6
相关文章