91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

利用fnd_flex_keyval包輕松獲取關鍵性彈性域組合描述字段

發布時間:2020-08-07 23:58:57 來源:ITPUB博客 閱讀:205 作者:kawontony 欄目:關系型數據庫

轉自: https://blog.csdn.net/rfb0204421/article/details/8204103

在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;

參數說明:
- 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;

獲取貨位的描述:
--Get Stock Locators(MTLL) 庫存貨位的組合與描述
--SELECT cux_flex_pkg.get_mtll_flexfields(p_locator_id => 3950, p_organization_id => 7890, p_return => 'S') locator_name FROM dual;
FUNCTION get_mtll_flexfields(p_locator_id      NUMBER,
p_organization_id NUMBER,
p_return          VARCHAR2 DEFAULT 'S') RETURN VARCHAR2 IS
l_concatenated_descriptions VARCHAR2(2000);
l_success                   BOOLEAN;
l_concatenated_segments     VARCHAR2(2000);
c_structure_number          NUMBER;
c_key_flex_code             VARCHAR2(20);
c_appl_short_name           VARCHAR2(20);
l_application_id            NUMBER;
-- Keeps track of the current delimiter
l_delim         VARCHAR2(1) := '';
l_error_message VARCHAR2(1000);
BEGIN
--
--Bug: Value &VALUE for the flexfield segment Subinventory does not exist in the value set @VALUE_SET.
--如果在健彈性域定義的值集中使用了PROFILE,需要初始化賦值之后才行,否則會出現以上錯誤
--SELECT FND_PROFILE.VALUE_WNPS('MFG_ORGANIZATION_ID') FROM DUAL;
--fnd_global.apps_initialize(resp_appl_id => 401, resp_id => 65780, user_id => 1013436);
IF FND_PROFILE.VALUE_WNPS('MFG_ORGANIZATION_ID') IS NULL THEN
fnd_profile.put('MFG_ORGANIZATION_ID', p_organization_id);
END IF;
c_key_flex_code    := 'MTLL';
c_appl_short_name  := 'INV';
c_structure_number := 101;
SELECT application_id
INTO l_application_id
FROM fnd_application_vl a
WHERE a.application_short_name = c_appl_short_name;
-- Get the delimiter
l_delim := fnd_flex_apis.get_segment_delimiter(x_application_id => l_application_id, x_id_flex_code => c_key_flex_code, x_id_flex_num => c_structure_number);
--參數DATA_SET一定要設置,和物料的鍵彈性域定義的原理一樣:因為INVENTORY_LOCATION_ID在數據庫的基表中不是唯一的值
--SELECT set_defining_column_name,unique_id_column_name,application_table_name FROM fnd_id_flexs WHERE id_flex_code IN ('MTLL', 'MSTK');
l_success := fnd_flex_keyval.validate_ccid(appl_short_name  => c_appl_short_name,
key_flex_code    => c_key_flex_code,
structure_number => c_structure_number,
data_set         => to_char(p_organization_id), -- Requied
combination_id   => p_locator_id);
dbms_output.put_line('l_success = ' || to_char(sys.diutil.bool_to_int(l_success)));
l_error_message := fnd_flex_keyval.error_message;
IF l_success THEN
l_concatenated_descriptions := fnd_flex_keyval.concatenated_descriptions;
--dbms_output.put_line('Concatenated Descriptions : ' || l_concatenated_descriptions);
l_concatenated_segments := fnd_flex_keyval.concatenated_values;
--dbms_output.put_line('Concatenated Segments : ' || l_concatenated_segments);
ELSE
l_concatenated_segments     := NULL;
l_concatenated_descriptions := NULL;
fnd_message.set_name('FND', 'FLEX-SSV EXCEPTION');
fnd_message.set_token('MSG', l_error_message);
dbms_output.put_line(fnd_message.get);
RAISE app_exceptions.application_exception;
END IF;
IF p_return = 'S' THEN
RETURN(l_concatenated_segments);
ELSIF p_return = 'D' THEN
RETURN(l_concatenated_descriptions);
ELSE
RETURN(l_concatenated_segments);
END IF;
EXCEPTION
WHEN OTHERS THEN
RETURN NULL;
app_exception.raise_exception;
END get_mtll_flexfields;

庫存物料的組合與描述庫存物料的組合與描述:
FUNCTION get_mstk_flexfields(p_item_id      NUMBER,
p_organization_id NUMBER,
p_return          VARCHAR2 DEFAULT 'S') RETURN VARCHAR2 IS
l_concatenated_descriptions VARCHAR2(2000);
l_success                   BOOLEAN;
l_concatenated_segments     VARCHAR2(2000);
c_structure_number          NUMBER;
c_key_flex_code             VARCHAR2(20);
c_appl_short_name           VARCHAR2(20);
l_application_id            NUMBER;
-- Keeps track of the current delimiter
l_delim         VARCHAR2(1) := '';
l_error_message VARCHAR2(1000);
BEGIN
--
--如果在健彈性域定義的值集中使用了PROFILE,需要初始化賦值之后才行,否則會出現以上錯誤
--SELECT FND_PROFILE.VALUE_WNPS('MFG_ORGANIZATION_ID') FROM DUAL;
--fnd_global.apps_initialize(resp_appl_id => 401, resp_id => 65780, user_id => 1013436);
IF FND_PROFILE.VALUE_WNPS('MFG_ORGANIZATION_ID') IS NULL THEN
fnd_profile.put('MFG_ORGANIZATION_ID', p_organization_id);
END IF;
c_key_flex_code    := 'MSTK';
c_appl_short_name  := 'INV';
c_structure_number := 101;
SELECT application_id
INTO l_application_id
FROM fnd_application_vl a
WHERE a.application_short_name = c_appl_short_name;
-- Get the delimiter
l_delim := fnd_flex_apis.get_segment_delimiter(x_application_id => l_application_id, x_id_flex_code => c_key_flex_code, x_id_flex_num => c_structure_number);
--參數DATA_SET一定要設置,和物料的鍵彈性域定義的原理一樣:因為INVENTORY_LOCATION_ID在數據庫的基表中不是唯一的值
--SELECT set_defining_column_name,unique_id_column_name,application_table_name FROM fnd_id_flexs WHERE id_flex_code IN ('MTLL', 'MSTK');
l_success := fnd_flex_keyval.validate_ccid(appl_short_name  => c_appl_short_name,
key_flex_code    => c_key_flex_code,
structure_number => c_structure_number,
data_set         => to_char(p_organization_id), -- Requied
combination_id   => p_item_id);
dbms_output.put_line('l_success = ' || to_char(sys.diutil.bool_to_int(l_success)));
l_error_message := fnd_flex_keyval.error_message;
IF l_success THEN
l_concatenated_descriptions := fnd_flex_keyval.concatenated_descriptions;
--dbms_output.put_line('Concatenated Descriptions : ' || l_concatenated_descriptions);
l_concatenated_segments := fnd_flex_keyval.concatenated_values;
--dbms_output.put_line('Concatenated Segments : ' || l_concatenated_segments);
ELSE
l_concatenated_segments     := NULL;
l_concatenated_descriptions := NULL;
fnd_message.set_name('FND', 'FLEX-SSV EXCEPTION');
fnd_message.set_token('MSG', l_error_message);
dbms_output.put_line(fnd_message.get);
RAISE app_exceptions.application_exception;
END IF;
IF p_return = 'S' THEN
RETURN(l_concatenated_segments);
ELSIF p_return = 'D' THEN
RETURN(l_concatenated_descriptions);
ELSE
RETURN(l_concatenated_segments);
END IF;
EXCEPTION
WHEN OTHERS THEN
RETURN NULL;
app_exception.raise_exception;
END get_mstk_flexfields;
向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

鄂托克前旗| 凌海市| 常山县| 安阳市| 曲麻莱县| 宜州市| 山东| 且末县| 永登县| 青冈县| 高淳县| 乌兰浩特市| 洞头县| 收藏| 广安市| 西丰县| 彰化县| 渑池县| 阿巴嘎旗| 阳城县| 湘潭市| 木里| 泰和县| 金门县| 拉萨市| 铜鼓县| 安多县| 宝清县| 恩平市| 宁乡县| 无极县| 齐齐哈尔市| 镇巴县| 冀州市| 镇康县| 威远县| 舞钢市| 五大连池市| 宜丰县| 河北区| 青海省|