我是靠谱客的博主 风趣蓝天,最近开发中收集的这篇文章主要介绍EDITOR_PKG.report根据请求的ID,创建输出的URL然后打开,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

DECLARE
    p_mode_request_id NUMBER := 1;
    p_errbuf          VARCHAR2(250);
    p_retcode         NUMBER;


    lv_msg         VARCHAR2(50); --出错信息
    l_phase        VARCHAR2(50); --返回结果
    l_status       VARCHAR2(50); --返回状态
    l_dev_phase    VARCHAR2(50);
    l_dev_status   VARCHAR2(50);
    l_message      VARCHAR2(100); --请求返回信息
    l_wait_outcome BOOLEAN; --等待请求返回结果 
BEGIN
    p_mode_request_id := apps.fnd_request.submit_request(application => 'CUX'
                                                        , --此处为模块的名称,根据需要改为自己程序所在模块简称
                                                         program => 'CUX_BOM_COVER_PRINT_PKG'
                                                        , --此处为要提交的并发程序的名称
                                                         description => '盘点折算打印'
                                                        ,start_time => ''
                                                        ,sub_request => FALSE
                                                        ,argument1 => :query_find.organization_id
                                                        , --原来包中的手工或FORM中提交请求的标识,此处设为0
                                                         argument2 => to_char(:query_find.creation_date_f
                                                                             ,'yyyy-MM-dd HH24:mi:ss')
                                                        ,argument3 => to_char(:query_find.creation_date_t
                                                                             ,'yyyy-MM-dd HH24:mi:ss')
                                                        ,argument4 => :query_find.item_number_f
                                                        ,argument5 => :query_find.item_number_t
                                                        ,argument6 => NULL);
    --如果返回0,则报错
    IF (p_mode_request_id = 0) THEN
        fnd_message.retrieve;
        fnd_message.error;
    ELSE
        COMMIT;
    END IF;
    --等待请求完成,每5秒检查一次,最长等待60秒
    l_wait_outcome := apps.fnd_concurrent.wait_for_request(request_id => p_mode_request_id
                                                          ,INTERVAL => 5
                                                          ,max_wait => 60
                                                          ,phase => l_phase
                                                          ,status => l_status
                                                          ,dev_phase => l_dev_phase
                                                          ,dev_status => l_dev_status
                                                          ,message => l_message);
    --如果返回结果为COMPLETE,状态为NORMAL,显示输出报表,否则报错
    IF (upper(l_dev_phase) = 'COMPLETE' AND upper(l_dev_status) = 'NORMAL') THEN
        editor_pkg.report(p_mode_request_id
                         ,'Y');
    ELSE
        lv_msg := '盘点折算打印: [' || to_char(SYSDATE
                                        ,'YYYY/MM/DD HH24:MI:SS') || '] !';
        fnd_message.set_string(lv_msg);
        fnd_message.show;
    END IF;

END;

 



EDITOR_PKG.report功能主要是根据请求的ID,创建输出的URL然后打开。


库文件中:使用了editor_pkg2.browser_show


PROCEDURE browser_show( 
fname varchar2, 
node varchar2,
mtype varchar2, 
req_id number default null)


获取路径:


fnd_profile.get('APPS_CGI_AGENT', base);


创建temp_id


id := fnd_webfile.create_id(fname,
svc,
10,
mtype,
req_id,
x_mode,
'Y');


获取URL


url := base || 'FNDWRR.exe?' || 'temp_id=' || id;


 


打开URL:


fnd_utilities.open_url(url);


set_application_property(CURSOR_STYLE,'DEFAULT');


值得注意的是系统产生的URL与系统的安全性有关。


如果将查看输出后弹出界面的URL(每次查看输出后面URL的temp_id都不同)在另一个网页标签打开后会提示:


Authentication failed.


如果有类似需求,将请求的输出URL通过自动发邮件给用户,用户在点开URL后也会提示权限呢验证问题。


所以类似的发邮件请求可以考虑开发程序包,将查询的数据通过拼接HTML内容作为正文发送邮件。

 

 

最后

以上就是风趣蓝天为你收集整理的EDITOR_PKG.report根据请求的ID,创建输出的URL然后打开的全部内容,希望文章能够帮你解决EDITOR_PKG.report根据请求的ID,创建输出的URL然后打开所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(63)

评论列表共有 0 条评论

立即
投稿
返回
顶部