在Oracle Forms客戶化開發中,如果遇到有在Form上提供關鍵性彈性域(以下簡稱“鍵彈性域”)功能支援的時候,我們可以利用FND_KEY_FLEX.DEFINE函數來輕鬆完成所有的初始化工作。其中也包括鍵彈性域的組合描述欄位的顯示的初始化:只要在FND_KEY_FLEX.DEFINE調用時指定了DESCRIPTION參數即可。然而有時我們僅是想要顯示這個描述組合欄位,僅此而已。並不需要提供完整的鍵彈性域功能。那麼我們有什麼快速而有效方法來得到這個描述組合欄位呢?試試下面的fnd_flex_keyval包裡的方法吧~
執行個體:擷取庫存物料的物料類別集中的類別組合“描述”欄位
需要用到的方法:
- fnd_flex_keyval.validate_segs()
- fnd_flex_keyval.concatenated_descriptions()
fnd_flex_keyval.validate_segs 的參數很多,對於擷取物料類別組合欄位我們僅需要其中的五個參數,如下:
fnd_flex_keyval.validate_segs( operation => <OPERATIONS> , appl_short_name => <Application Short Name> , key_flex_code => <Key Flex Code> , structure_number => <ID_FLEX_NUM> , concat_segments => <CONCATENATED_SEGMENTS>);
參數說明:- operation 可選值有:
- FIND_COMBINATION - 所給定的組合欄位必須在系統中已經被定義
- CREATE_COMBINATION - 如果組合欄位不存在,則在系統中建立該組合
- CREATE_COMB_NO_AT - 功能和CREATE_COMBINATION相同,只是不像前者要使用相對獨立的子事務autonomous transaction
- CHECK_COMBINATION - 只是檢查一下給定的組合欄位是否合法,不管檢查結果如何,都不建立新的組合
- DEFAULT_COMBINATION - 返回預設的最小組合(這個參數值我也沒太搞懂,呵呵)
- CHECK_SEGMENTS - 分別驗證欄位(這個也很糊塗~)
- appl_short_name 應用程式簡稱,例如庫存模組對應的應用簡稱為INV- key_flex_code 鍵彈性域代碼,可以在鍵彈性域定義介面找到,例如MCAT, GL#等等- structure_number 指定鍵彈性域下的某個結構NUM,可以在鍵彈性域定義介面找到,對應欄位為ID_FLEX_NUM- concat_segments 要擷取組合描述欄位的對應的“值“組合欄位,例如: A.000.MISC一旦初始化驗證欄位成功,那麼描述組合欄位便可以通過調用fnd_flex_keyval.concatenated_descriptions()來得到了。完整代碼如下:
FUNCTION get_concat_descriptions(p_concat_segs IN VARCHAR2) RETURN VARCHAR2 IS BEGIN IF fnd_flex_keyval.validate_segs( operation => 'FIND_COMBINATION' -- 請根據情況自行修改 , appl_short_name => 'INV' -- 請根據情況自行修改 , key_flex_code => 'MCAT' -- 請根據情況自行修改 , structure_number => 101 -- 請根據情況自行修改 , concat_segments => p_concat_segs) THEN RETURN (fnd_flex_keyval.concatenated_descriptions()); ELSE RETURN ''; END IF; END;