需求:
創建或者查找現在賬戶ID ,需要通過一下三個步驟:
1. 得到賬簿的CHART_OF_ACCOUNTS_ID
2. 得到賬戶彈性域分隔符
3. 調用標準的API得到賬戶組合id
具體實現如下:
1. 得到賬簿的CHART_OF_ACCOUNTS_ID實現code:
SELECT sob.chart_of_accounts_id
INTO l_chart_of_accounts_id
FROM financials_system_params_all fsp, gl_sets_of_books sob
WHERE org_id = p_org_id
AND sob.set_of_books_id = fsp.set_of_books_id;
2. 得到賬戶彈性域分隔符實現code:
SELECT concatenated_segment_delimiter
INTO l_segment_delimiter
FROM fnd_id_flex_structures
WHERE application_id = 101
AND id_flex_code = 'GL#'
AND id_flex_num = l_chart_of_accounts_id;
3. 調用標準的API得到賬戶組合id(不存在則創建並返回ID):
DECLARE
x_account_id NUMBER;
BEGIN
IF fnd_flex_keyval.validate_segs(operation => 'CREATE_COMBINATION',
appl_short_name => 'SQLGL',
key_flex_code => 'GL#',
structure_number => l_chart_of_accounts_id,
concat_segments => l_temp_segment1 ||
l_segment_delimiter ||
lv_segment2 ||
l_segment_delimiter ||
lv_segment3 ||
l_segment_delimiter ||
lv_segment4 ||
l_segment_delimiter ||
lv_segment5 ||
l_segment_delimiter ||
lv_segment6 ||
l_segment_delimiter ||
lv_segment7 ||
l_segment_delimiter ||
lv_segment8,
validation_date => NULL) THEN
-- Success
x_account_id := fnd_flex_keyval.combination_id;
ELSE
x_account_id := NULL;
END IF;
dbms_output.put_line(x_account_id);
END;