PLSQL提交带有模板的报表的方法
使用fnd_request可以实现在PLSQL代码中提交并发请求。
但是如果请求设置了模板,代码提交请求是带不出来模板的,需要添加代码来为请求指定模板。代码如下
但是如果请求设置了模板,代码提交请求是带不出来模板的,需要添加代码来为请求指定模板。代码如下
PROCEDURE submit_concurrent_program
(
x_request_id OUT NUMBER,
x_return_msg OUT VARCHAR2,
p_conc_prog_code VARCHAR2,
p_group_id NUMBER,
p_doc_seq_num VARCHAR2
) IS
l_layout BOOLEAN;
l_output_type VARCHAR2(30);
BEGIN
BEGIN
SELECT xt.default_output_type
INTO l_output_type
FROM xdo_templates_vl xt
WHERE xt.application_short_name = 'CUX'
AND xt.template_code = p_conc_prog_code;
EXCEPTION
WHEN OTHERS THEN
l_output_type := NULL;
END;
--
l_layout := fnd_request.add_layout('CUX',
p_conc_prog_code,
NULL,
NULL,
l_output_type);
--
IF l_layout AND l_output_type IS NOT NULL THEN
x_request_id := fnd_request.submit_request('CUX',
p_conc_prog_code,
NULL,
NULL,
FALSE,
p_doc_seq_num,
p_group_id);
IF x_request_id = 0 THEN
x_return_msg := '提交并发请求失败,请联系系统管理员.';
RETURN;
ELSE
COMMIT;
END IF;
ELSE
x_return_msg := '获取默认输出格式失败,请联系系统管理员检查设置.';
END IF;
EXCEPTION
WHEN OTHERS THEN
x_request_id := NULL;
x_return_msg := SQLCODE || ':' || SQLERRM;
END submit_concurrent_program;
(
x_request_id OUT NUMBER,
x_return_msg OUT VARCHAR2,
p_conc_prog_code VARCHAR2,
p_group_id NUMBER,
p_doc_seq_num VARCHAR2
) IS
l_layout BOOLEAN;
l_output_type VARCHAR2(30);
BEGIN
BEGIN
SELECT xt.default_output_type
INTO l_output_type
FROM xdo_templates_vl xt
WHERE xt.application_short_name = 'CUX'
AND xt.template_code = p_conc_prog_code;
EXCEPTION
WHEN OTHERS THEN
l_output_type := NULL;
END;
--
l_layout := fnd_request.add_layout('CUX',
p_conc_prog_code,
NULL,
NULL,
l_output_type);
--
IF l_layout AND l_output_type IS NOT NULL THEN
x_request_id := fnd_request.submit_request('CUX',
p_conc_prog_code,
NULL,
NULL,
FALSE,
p_doc_seq_num,
p_group_id);
IF x_request_id = 0 THEN
x_return_msg := '提交并发请求失败,请联系系统管理员.';
RETURN;
ELSE
COMMIT;
END IF;
ELSE
x_return_msg := '获取默认输出格式失败,请联系系统管理员检查设置.';
END IF;
EXCEPTION
WHEN OTHERS THEN
x_request_id := NULL;
x_return_msg := SQLCODE || ':' || SQLERRM;
END submit_concurrent_program;
主要是加入这段代码
l_layout := fnd_request.add_layout('CUX',
p_conc_prog_code,--这里的并发请求简称,和模板简称相同
NULL,
NULL,
l_output_type);
p_conc_prog_code,--这里的并发请求简称,和模板简称相同
NULL,
NULL,
l_output_type);
参数依次为应用简称,模板简称,语言,国家,默认输出方式(PDF,EXCEL等)。