zoukankan      html  css  js  c++  java
  • Oracle Form中调用并发请求生成报表并输出为PDF的方法

    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;

             

                成长

           /      |     \

        学习   总结   分享

    QQ交流群:122230156

  • 相关阅读:
    JS LeetCode 1423. 可获得的最大点数简单题解
    SpringBoot 学集 (第六章) Docker
    Linux 学记 (第三章)
    Linux 学记 (第二章)
    Linux 学记 (第一章)
    SpringBoot 学集 (第五章) Web开发续
    SpringBoot 学集 (第四章)Web开发
    SpringBoot 学集 (第三章) 日志框架
    SpringBoot 学集 (第二章) 配置文件
    SpringBoot 学集 (第一章)
  • 原文地址:https://www.cnblogs.com/benio/p/1966853.html
Copyright © 2011-2022 走看看