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;