转:Form 中调用并发请求生成报表并输出PDF的方法。

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;

© 版权声明
THE END
支持一下吧
点赞12 分享
评论 抢沙发
头像
请文明发言!
提交
头像

昵称

取消
昵称表情代码快捷回复

    暂无评论内容