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

  • 相关阅读:
    tar.xz文件如何解压
    warnings and errors when executing : make -j4
    ubuntu关机
    Linux系统kernel编译替换升级
    安装linux内核
    二叉树的度数和节点数的关系
    刷题--将搜索二叉树转换成双向链表
    刷题--二叉搜索树与双向链表
    刷题--删除链表中重复的节点
    四舍五入输出
  • 原文地址:https://www.cnblogs.com/benio/p/1966853.html
Copyright © 2011-2022 走看看