|
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;
|