Oracle EBS FORM開發,有時候需要在客戶化form界面調用併發請求,並打開請求界面。代碼如下所示,僅供參考。
DECLARE
l_question_result NUMBER;
l_request_id NUMBER;
--等待請求字段
l_bl_result BOOLEAN;
l_phase VARCHAR2(240);
l_status VARCHAR2(240);
l_dev_phase VARCHAR2(240);
l_dev_status VARCHAR2(240);
l_message VARCHAR2(240);
BEGIN
IF :blk_qry.period_yearmonth IS NULL THEN
fnd_message.set_string('查詢界面字段“期間”爲空');
fnd_message.show;
RAISE form_trigger_failure;
END IF ;
fnd_message.set_string('查詢界面“BU編碼”和“期間”將作爲參數運行請求“XXMA:管會費用收集”,是否繼續?');
l_question_result := fnd_message.question('YES'
,NULL
,'CANCEL'
,'1'
,'3'
,'question');
IF l_question_result = 1 THEN
--提交請求
l_request_id := fnd_request.submit_request('XXMA'
,'XXMA_EXPENSE_COLLECT_PKG'
,NULL
,SYSDATE
,FALSE
,:blk_qry.bu_code
,:blk_qry.period_yearmonth
,chr(0));
IF l_request_id >0 THEN
IF NOT(app_form.quietcommit) THEN
RAISE form_trigger_failure;
END IF;
fnd_function.execute(function_name => 'fnd_fndrsrun'
,open_flag => 'Y'
,session_flag => 'Y'
,other_params => 'concurrent_program_name="XXMA_EXPENSE_COLLECT_PKG" program_appl_short_name="XXMA"dodt_req_id ="'||l_request_id||'"');
--等待請求處理完成
l_bl_result := fnd_concurrent.wait_for_request(request_id => l_request_id
,INTERVAL => 1
,max_wait => 360
,phase => l_phase
,status => l_status
,dev_phase => l_dev_phase
,dev_status => l_dev_status
,message => l_message);
ELSE
fnd_message.set_string('提交併發請求失敗,請聯繫系統管理員!');
fnd_message.error;
RAISE form_trigger_failure;
END IF;
ELSE
RAISE form_trigger_failure;
END IF ;
END;