EBS描述性弹性域及键弹性域总结
一.描述性弹性域
前言介绍:
描述性弹性域的实质就是系统预留自定字段,系统可以使用说明性弹性域来获取业务所特有的重要附加信息。系统可能自定义说明性弹性域,以显示存储更多信息的字段,提供一套完整的“自定义”机制,可以用值集来验证字段、字段间可以设置依赖关系等等。
1.注册表和字段到EBS(记得COMMIT):
说明:
注册表 :
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)
注册列:
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)
2.在应用开发员>弹性域>说明性>注册 中注册说明性弹性域,通常NAME 起名和表名一致,Title的值为可明显区分:


保存后,点击Columns,可以看到,系统自动选中了所有Attribute字段:

3.创建非数据库项:
在块中手工创建一个字段,名字通常叫DESC_FLEX,子类为TEXTITEMDESCFLEX,Prompt为一对大括号"[]",布局时通常放在最后,但不随滚动条滚动:

注:为非数据库字段,Database Item属性为No
4.触发器:
4.1Form级:WHEN-NEW-FORM-INSTANCE
fnd_descr_flex.define(BLOCK => 'BLOCKNAME',
field => 'DESC_FLEX',
appl_short_name => 'SCF',
desc_flex_name => 'CUX_FLEXFIELD_DEMO');
例:
fnd_descr_flex.define(BLOCK => 'ORDER_HEADERS'
,field => 'DESC_FLEX'
,appl_short_name => 'CUX'
,desc_flex_name => 'CUX_OE_ORDER_HEADERS_25305_ALL');
4.2块级 :
PREINSERT中追加: fnd_flex.event('PREINSERT');
PREUPDATE中追加: fnd_flex.event('PREUPDATE');
PREQUERY中追加: fnd_flex.event('PREQUERY');
POSTQUERY中追加: fnd_flex.event('POSTQUERY');
WHENVALIDATERECORD中追加: fnd_flex.event('WHENVALIDATERECORD');
4.3Item级:
WHENNEWITEMINSTANCE中追加: fnd_flex.event('WHENNEWITEMINSTANCE');
WHENVALIDATEITEM中追加: fnd_flex.event('WHENVALIDATEITEM');
注意::可以把这些触发器(Block级和Item级)写在Form级,这样不需要每个块都写,不过如果为了其它功能 在块级写了同名触发器,执行层次需要改为Before(修改触发器的Execution Hierarchy属性,该属性默认为Override,可以改为After,Before)。
1、 Override模式,默认模式,不再触发高级别事件(执行顺序是Item级别——》Block级别——》Form级别);
2、 Before模式,触发完本级别的事件后,再触发高级别事件;
3、 After模式,先触发高级别事件,再回来触发本级别事件

5.启用弹性域:
通过Application Developer职责/Flexfield/Descriptive/Segments启用弹性域:选择相应字段并保存 。


6.效果:

二.键弹性域
前言介绍:
键弹性域具有足够的“弹性”,它允许根据需要使用任意的代码组合以描述实体。系统可为每个键弹性域确定一个实体具有多少段、每个段的含义、每个段可具有的值以及每个段值表示的含义。系统也可以定义管理段值组合有效的规则(交叉验证规则),或定义段与段之间的相关性。从而系统可以使用其所需的代码。键弹性域通常用来处理有层次结构的编码,比如账户、类别等,极少自行客户化开发,一般都是使用系统标准的键弹性域而已。
1.要求:
1.1基表要求:
键弹性域对应的表都有一个ID字段,如果在客户化开发中需要使用该表 作为外键,当然需要一个外键ID字段,名字根据需要起即可。
1.2字段要求:
字段要求:一个键代码组合字段+一个可选的键描述组合字段 :这两个字段可以是数据库项,也可以不是。 代码组合字段子类是Text_Item,描述组合字段子类通常是 Text_Item_Display_Only;注意它们的长度要足够,不然可能放不下组合。 对代码组合字段,需要设置其Lov属性(List of Values设置为 ENABLE_LIST_LAMP,Validate from List设置为NO,非必需)。

2.触发器:
2.1Form级:
WHEN-NEW-FORM-INSTANCE:
fnd_key_flex.define(BLOCK => 'FLEXFIELD_DEMO',
field => 'ACCOUNT_CODE',
description => 'ACCOUNT_DESC',
appl_short_name => 'SQLGL',
code => 'GL#',
id => 'CODE_COMBINATION_ID',
required => 'N',
usedbflds => 'N',
validate => 'FULL',
vrule => '\\nSUMMARY_FLAG\\nI\\nAPPL=SQLGL;NAME=GL_NO_PARENT_SEGMENT_ALLOWED\\nN\\0GL_GLOBAL\\nDETAIL_POSTING_ALLOWED\\nE\\nAPPL=INV;NAME=INV_VRULE_POSTING\\nN',
--因为不同公司启用的Structure不同,实际开发中不要写死Num值。
num => 101);
注:可以使用以下SQL查询不同键弹性域的定义:
SELECT app.application_short_name,
app.application_name,
flx.id_flex_code,
flx.id_flex_name,
str.id_flex_num,
str.id_flex_structure_code,
str.id_flex_structure_name
FROM fnd_id_flexs flx,
fnd_id_flex_structures_vl str,
fnd_application_vl app
WHERE flx.application_id = str.application_id
AND flx.id_flex_code = str.id_flex_code
AND flx.application_id = app.application_id
ORDER BY 1, 3, 5
2.2块级:
PRE-INSERT中追加:
fnd_flex.event('PRE-INSERT');
PRE-UPDATE中追加:
fnd_flex.event('PRE-UPDATE');
PRE-QUERY中追加:
fnd_flex.event('PRE-QUERY');
POST-QUERY中追加:
fnd_flex.event('POST-QUERY');
WHEN-VALIDATE-RECORD中追加:
fnd_flex.event('WHEN-VALIDATE-RECORD');
2.3Item级:
WHEN-NEW-ITEM-INSTANCE中追加:
fnd_flex.event('WHEN-NEW-ITEM-INSTANCE');
WHEN-VALIDATE-ITEM中追加:
fnd_flex.event('WHEN-VALIDATE-ITEM');
注:可以把这些触发器(Block级和Item级)写在Form级,这样不需要每个块都写,不过如果为了其它功能 在块级写了同名触发器,执行层次需要改为Before(同说明性弹性域)
3.效果:

EBS描述性弹性域及键弹性域总结的更多相关文章
- JS跨域(ajax跨域、iframe跨域)解决方法及原理详解(jsonp)
这里说的js跨域是指通过js在不同的域之间进行数据传输或通信,比如用ajax向一个不同的域请求数据,或者通过js获取页面中不同域的框架中(iframe)的数据.只要协议.域名.端口有任何一个不同,都被 ...
- AWK只打印某个域后的所有域
如转载请指明(博客http: yangzhigang cublog cn).前言:有时我们需要将某个域之后的所有域打印出来,而且每个记录(行)的域的个数也不一定,所以用$4,$5,… $n,… $(N ...
- 【转】JS跨域(ajax跨域、iframe跨域)解决方法及原理详解(jsonp)
这里说的js跨域是指通过js在不同的域之间进行数据传输或通信,比如用ajax向一个不同的域请求数据,或者通过js获取页面中不同域的框架中(iframe)的数据.只要协议.域名.端口有任何一个不同,都被 ...
- Api之Cors跨域以及其他跨域方式
Web Api之Cors跨域以及其他跨域方式(三) 我们知道ajax不能跨域访问,但是有时我们确实需要跨域访问获取数据,所以JSONP就此诞生了,其本质使用的是Script标签,除JSONP以外还 ...
- 在Word2010文档中显示域代码而非域值
当Word2010文档中含有域内容时,默认情况下显示域值,这样可以使插入的域内容清晰明了.用户可以根据需要选择显示域代码或显示域值,操作步骤如下所述: 步骤/方法 第1步,打开Word2010文档窗口 ...
- 2.1 存储器域与PCI总线域
HOST主桥的实现因处理器系统而异.PowerPC处理器和x86处理器的HOST主桥除了集成方式不同之外,其实现机制也有较大差异.但是这些HOST主桥所完成的最基本功能依然是分离存储器域与PCI总线域 ...
- 跨域学习笔记1--跨域调用webapi
在做Web开发中,常常会遇到跨域的问题,到目前为止,已经有非常多的跨域解决方案. 通过自己的研究以及在网上看了一些大神的博客,写了一个Demo 首先新建一个webapi的程序,如下图所示: 由于微软已 ...
- SSO单点登录、跨域重定向、跨域设置Cookie、京东单点登录实例分析
最近在研究SSO单点登录技术,其中有一种就是通过js的跨域设置cookie来达到单点登录目的的,下面就已京东商城为例来解释下跨域设置cookie的过程 涉及的关键知识点: 1.jquery ajax跨 ...
- window.name实现的跨域数据传输 JavaScript跨域总结与解决办法
原文地址: http://www.cnblogs.com/rainman/archive/2011/02/20/1959325.html#m4 什么是跨域 1.document.domain+ifr ...
随机推荐
- 邻居子系统 之 更新neigh_update
概述 neigh_update函数用来更新指定的邻居项,更新内容是硬件地址和状态,更新之后,会根据新状态设置其输出函数,CONNECTED状态则使用快速输出,否则使用慢速输出:如果是由原来的无效状态变 ...
- TCP输入 之 tcp_prequeue
在未开启tcp_low_latency的情况下,软中断将skb送上来,加入到prequeue中,然后 在未启用tcp_low_latency且有用户进程在读取数据的情况下,skb入队到prequeue ...
- Web存储机制—sessionStorage,localStorage使用方法
Web存储机制,在这里主要聊有关于Web Storage API提供的存储机制,通过该机制,浏览器可以安全地存储键值对,比使用cookie更加直观.接下来简单的了解如何使用这方面的技术. 基本概念 W ...
- android data binding jetpack IV 绑定一个方法另一种写法和参数传递
android data binding jetpack VIII BindingConversion android data binding jetpack VII @BindingAdapter ...
- 在sed中引入shell变量的四种方法
1.eval sed ’s/$a/$b/’ filename2.sed "s/$a/$b/" filename3.sed ’s/’$a’/’$b’/’ filename 4.sed ...
- intellij系列编辑器个性化注释说明(定义个人风格的todo)
有时候我们需要用于自己个性化的注释,不为装逼,只为能够快速找到自己的注释,自己的代码,不迷路... 废话少说,孩儿们看过来: 1.打开你的编辑器,打开setting,搜索TODO: 设置完点击保存去试 ...
- [微信小程序] 当动画(animation)遇上延时执行函数(setTimeout)出现的问题
小程序中当动画animation遇上setTimeout函数内部使用this.setData函数,通常情况下会出现报错.本文先告诉解决方法,后分析报错原因 1.解决方法: 在 setTimeout() ...
- Java异常超详细总结
1.1,什么是异常: 异常就是Java程序在运行过程中出现的错误. 骚话: 世界上最真情的相依就是你在try我在catch,无论你发什么脾气,我都静静接受,默默处理(这个可以不记) 1.2,异常继 ...
- Gradle DSL method not found: 'compile()'
问题描述: 今天在导入第三方库的时候报错:Gradle DSL method not found: 'compile()' 通过网上查询发现是自己导包路径错误:应该导入app下面的build.grad ...
- [LeetCode] 697. Degree of an Array 数组的度
Given a non-empty array of non-negative integers nums, the degree of this array is defined as the ma ...
