值集&快速編碼(Lookup_code)
--值集 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.現狀:通常對一些欄位的描述放在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