--值集 SELECT ffv.flex_value, ffv.description FROM fnd_flex_values_vl ffv, fnd_flex_value_sets ffs WHERE ffv.flex_value_set_id = ffs.flex_value_set_id AND ffs.flex_value_set_name = 'HSST_ACCOUNT' --值集名; AND ffv.enabled_flag = 'Y' AND SYSDATE BETWEEN nvl(ffv.start_date_active, SYSDATE) AND nvl(ffv.end_date_active, SYSDATE + 1) and ffv.flex_value = '1001';--value
--客户化LOOKUP_CODE SELECT v.lookup_code, v.tag FROM cux_lookup_codes v WHERE v.lookup_type = 'CUX_INV_TRANSACTION_SOURCE_OMS' --lookup_type AND v.enabled_flag = 'Y' AND v.lookup_code = 'IC-OUT';--lookup_code --系统LOOKUP_CODE SELECT t.meaning, t.lookup_code FROM fnd_lookup_values_vl t WHERE t.lookup_type = '1099 VENDOR EXCEPTION' AND t.enabled_flag = 'Y' AND SYSDATE BETWEEN NVL(t.START_DATE_ACTIVE,trunc(SYSDATE)) AND NVL(t.END_DATE_ACTIVE,SYSDATE + 1) AND T.LOOKUP_CODE = 'FOREIGN VENDOR';
SELECT ffv.flex_value, ffv.description FROM fnd_flex_values_vl ffv, fnd_flex_value_sets ffs WHERE ffv.flex_value_set_id = ffs.flex_value_set_id AND ffs.flex_value_set_name = 'BZ_ACCOUNT'--值集名 AND ffv.enabled_flag = 'Y'--启用 AND ffv.summary_flag = 'N'--负数是否允许 AND SYSDATE BETWEEN nvl(ffv.start_date_active, SYSDATE) AND nvl(ffv.end_date_active, SYSDATE + 1)--有效期 AND ffv.attribute1 IS NOT NULL AND substr(ffv.compiled_value_attributes, 5, 1) = 'E'
值集的概念
第一个问题,什么是值集?
问同事,同事的回答是值的集合,我找了很久来反驳这句话(喜欢钻牛角尖的缘故吧,
呵呵),却没有找到。那么,我就认可这种说法了
其实这都是中文的说话,你想想人家 Oracle一开始出来的时候,肯定只有英文的,值
集的英文叫 Value Set,泛泛解释为:值集合,对于 Oracle中的 Value,是指具体或者变化的
某一个值,Set 是个集合,联合起来,具体的或者变化的很多值的集合,即值集。加定语太
多,画蛇添足,呵呵,不过这正好说明了值集的内容。大家估且认为值集就是值的集合吧
二、值集的验证类型
首先,我们来了解一下值集的验证类型
以下是影响用户输入以及使用段或参数值方式的几种验证类型:
无(根本无需验证)
独立
从属
表
特殊(高级)
成对(高级)
可转换独立
可转换从属
无
在允许用户输入任意值时,只要该值符合值集格式规则,您就可以使用“无”类型值集。
也就是说,此值不能超过您为值集定义的最大长度,以及它必须符合该值集的任何格式要求。
例如,如果值集不允许使用字母字符,则用户无法输入值 ABC,但是可以输入值 456(对
于最大长度为 3 的值集而言)。否则,将不验证使用此值集的段值,并且这些段值也不会有
说明。
由于不验证“无”值集,因此使用此值集的段不为用户提供值列表。使用此值集的段(即,
非验证的段)不能使用弹性域值安全性规则来限制用户输入的值。
独立
“独立”值集提供了预定义的段值列表。这些值可能有关联的说明。例如,值 01 的说
明可能为“公司 01”。此值集中值的含义与其它任何段的值无关。独立值存储在 Oracle
Application Object Library 表中。您可以通过 Oracle Applications 窗口中的“段值”定义独
立值。
表
验证表值集提供了类似于独立集的预定义值列表,但是其值存储在应用表中。您可以定
义使用哪些表,并定义 WHERE 子句来限制值集要使用的值。一般来说,如果您在应用表
中维护了表值(例如,由“定义供应商”表单维护的供应商名称表),则可以使用验证表值
集。表验证还提供了某些高级功能,如允许段从属于相同结构中多个前面的段。
从属
从属值集类似于独立值集,只是列表中的可用值和给定值的含义从属于在弹性域结构的
前面段中选定的独立值。您可以将从属值集视为小值集的组合,每个小值集适用于相应的独
立值集中每个独立值。在定义独立值集的从属值集之前,您必须定义独立值集。您可以在“段
值”窗口中定义从属值,您的值将存储在 Oracle Application ObjectLibrary 表中。请参阅:
独立值与从属值之间的关系
特殊值集和成对值集
特殊值集和成对值集提供了一种允许“在弹性域中嵌弹性域”的机制。这些值集主要用
于“标准请求提交”参数。对于正常的弹性域段,您通常不使用这些值集。
特殊值集和成对值集使用您定义的特殊验证例行程序。例如,您可以定义验证例行程序,
以便提供另一个弹性域作为单个段的值集,或提供一个范围弹性域作为段对的值集。
可转换独立和可转换从属
可转换独立值集类似于提供预定义的段值列表的独立值集。但是,您可以使用转换的值。
可转换从属值集类似于某些从属值集,这些从属值集中列表内的可用值和给定值的含义
从属于弹性域结构前面的段中选定的独立值。但是,您可以使用转换的值。
弹性域值安全性不能与可转换独立值集或可转换从属值集一起使用。
对于格式验证,可转换值集必须使用格式类型字符。最大长度不大于 150。“仅限于数
字”选项和“右对齐和填零数字”选项不能与可转换值集一起使用。
范围弹性域不能使用可转换独立值集或可转换从属值集。
您不能创建具有可转换独立值集或可转换从属值集的层次结构或累计组。
注:“会计科目弹性域”不支持可转换独立值集和可转换从属值集。
fnd_lookup_values表示干什么的?
1系统给提供的记录一些值的地方,可以用来设计LOV用
2是不是通过lookup_type来区别记录的种类
1对,在系统设置完后,就可以用了:
lookup_type 是你定义的名字
LOOKUP_CODE指的是这个类别下的值
1相当于映射表
hash_map的表实現
1.现状:oracle通常对一些字段的描述放在table:FND_LOOKUP_VALUES中,当我们知道描述字段栏位值时候,可以通过值进行查询。
2. table:FND_LOOKUP_VALUES,FND_LOOKUP_TYPES, view: MFG_LOOKUPS
3.举例说明:
A.对物料表MTL_SYSTEM_ITEMS_B中对制造件或购买件关联,对应后台字段为 1,2
B.执行sql:
SELECT * FROM FND_LOOKUP_VALUES FLV WHERE (FLV.MEANING LIKE '制造' or FLV.MEANINGLIKE '购买') order by 1;
C.根据LOOKUP_TYPE有两行重复及LOOKUP_CODE值为1,2,
可以推断出:只有两个LOOKUP_TYPE可能是MTL_ITEM_ORIGINATION2,MTL_PLANNING_MAKE_BUY
D.分别一下执行sql,大致可以推出为MTL_PLANNING_MAKE_BUY,就是所要的;
SELECT * FROM FND_LOOKUP_VALUES FLV WHEREFLV.LOOKUP_TYPE='MTL_ITEM_ORIGINATION2';
SELECT * FROM FND_LOOKUP_VALUES FLV WHERE FLV.LOOKUP_TYPE='MTL_PLANNING_MAKE_BUY';
E.客户化开发尽量用快速编码的方式定义,以便后期维护更容易,当然可以放置各个模块下,
但是可能受权限限制使开发人员找不到。
路径为:Application Developer-->Application-->Lookups-->Common