Oracle Form中调用并发请求生成报表并输出为PDF的方法 (FND_CONCURRENT.WAIT_FOR_REQUEST)_rfb0204421的博客-CSDN博客
Form 中调用并发请求生成报表并输出PDF的方法。
要完成这个目的,首先要在ebs中注册报表,并注册模板。
然后再方法里先调用FND_REQUEST.ADD_LAYOUT添加模板,然后调用FND_REQUEST.SUBMIT_REQUEST提交并发请求,再调用FND_CONCURRENT.WAIT_FOR_REQUEST等待请求完成并返回分析,状态和完成信息。
procedure print_report(order_number in NUMBER,date_from in date,date_to in date) is
L_REQUEST_ID NUMBER;
L_BL_RESULT BOOLEAN;
v_layout BOOLEAN;
X_PHASE VARCHAR2(100);
X_STATUS VARCHAR2(100);
X_DEV_PHASE VARCHAR2(100);
X_DEV_STATUS VARCHAR2(100);
X_MESSAGE VARCHAR2(100);
BEGIN
/*
—
— Name
— add_layout
— Purpose
— Called before submission to add layout options for request output.
—
— Arguments
— Template_APPL_Name – Template Application Short name.
— Template_code – Template code
— Template_Language – Template File language (iso value)
— Template_Territory – Template File Territory (iso value)
— Output Format – Output Format
–添加输出模板,FND_REQUEST.add_layout (template_appl_name in varchar2,
template_code in varchar2,
template_language in varchar2,
template_territory in varchar2,
output_format in varchar2) return boolean
*/
v_layout:=FND_REQUEST.ADD_LAYOUT(‘PO’,
‘TRNORDER094’,
Null,
Null,
‘PDF’);
/*
—
— Name
— submit_request
— Purpose
— Submits concurrent request to be processed by a concurrent manager
—
— Arguments
— application – Short name of application under which the program
— – is registered
— program – concurrent program name for which the request has
— – to be submitted
— description – Optional. Will be displayed along with user
— – concurrent program name
— start_time – Optional. Time at which the request has to start
— – running
— sub_request – Optional. Set to TRUE if the request is submitted
— – from another running request and has to be treated
— – as a sub request. Default is FALSE
— argument1..100 – Optional. Arguments for the concurrent request
— 提交并发请求
–FND_REQUEST.SUBMIT_REQUEST(application IN varchar2 default NULL,
program IN varchar2 default NULL,
description IN varchar2 default NULL,
start_time IN varchar2 default NULL,
sub_request IN boolean default FALSE
argument1,
argument2, …, argument99,
argument100) return number;
*/
L_REQUEST_ID := FND_REQUEST.SUBMIT_REQUEST(‘PO’,
‘TRNORDER094’,
”,
”,
FALSE,
order_number,
date_from,
date_to,
CHR(0),”,”,”,”,”,”,
”,”,”,”,”,”,”,”,”,”,
”,”,”,”,”,”,”,”,”,”,
”,”,”,”,”,”,”,”,”,”,
”,”,”,”,”,”,”,”,”,”,
”,”,”,”,”,”,”,”,”,”,
”,”,”,”,”,”,”,”,”,”,
”,”,”,”,”,”,”,”,”,”,
”,”,”,”,”,”,”,”,”,”,
”,”,”,”,”,”,”,”,”,”);
COMMIT;
IF L_REQUEST_ID IS NULL OR L_REQUEST_ID = 0 THEN
RETURN;
END IF;
/*
—
— Name
— WAIT_FOR_REQUEST
— Purpose
— Waits for the request completion, returns phase/status and
— completion text to the caller. Calls sleep between db checks.
— Arguments (input)
— request_id – Request ID to wait on
— interval – time b/w checks. Number of seconds to sleep
— – (default 60 seconds)
— max_wait – Max amount of time to wait (in seconds)
— – for request’s completion
— Arguments (output)
— User version of phase and status
— Developer version of phase and status
— Completion text if any
— phase – Request phase ( from meaning in fnd_lookups )
— status – Request status( for display purposes )
— dev_phase – Request phase as a constant string so that it
— – can be used for comparisons )
— dev_status – Request status as a constatnt string
— message – Completion message if request has completed
—
–等待并发请求完成,并返回分析/状态和完成信息,FND_CONCURRENT.WAIT_FOR_REQUEST(request_id IN number default NULL,
interval IN number default 60,
max_wait IN number default 0,
phase OUT varchar2,
status OUT varchar2,
dev_phase OUT varchar2,
dev_status OUT varchar2,
message OUT varchar2) return boolean;
*/
L_BL_RESULT := FND_CONCURRENT.WAIT_FOR_REQUEST(L_REQUEST_ID,
1,
0,
X_PHASE,
X_STATUS,
X_DEV_PHASE,
X_DEV_STATUS,
X_MESSAGE);
IF X_DEV_PHASE = ‘COMPLETE’ AND X_DEV_STATUS = ‘NORMAL’ THEN
editor_pkg.report(L_REQUEST_ID,’Y’); –使输出的报表pdf文件在浏览器中显示。
ELSE
fnd_file.put_line(1,RPAD(‘x_phase’,20,’ ‘) || ‘=’ || X_PHASE);
fnd_file.put_line(1,RPAD(‘x_status=’,20,’ ‘) || ‘=’ || X_STATUS);
fnd_file.put_line(1,RPAD(‘x_dev_phase=’, 20, ‘ ‘) || ‘=’ || X_DEV_PHASE);
fnd_file.put_line(1,RPAD(‘x_dev_status=’,20,’ ‘) || ‘=’ || X_DEV_STATUS);
fnd_file.put_line(1,RPAD(‘x_message=’,20,’ ‘) || ‘=’ || X_MESSAGE);
fnd_file.put_line(1,’Warning : Starting journal print report failure! It did not running in 120 seconds, its request_id is ‘ ||
TO_CHAR(L_REQUEST_ID) || ‘ please check it.’);
END IF;
end print_report;
如有侵犯您的版权,请及时联系3500663466#qq.com(#换@),我们将第一时间删除本站数据。
暂无评论内容