• FORM提交请求后自动打开输出EDITOR_PKG.REPORT


    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内容作为正文发送邮件。
  • 相关阅读:
    测试管理工具
    测试用例--zy
    测试计划和测试用例
    测试用例
    软件测试基础
    异步任务 ---- django-celery
    图片验证码接口
    测试作业
    数据库原理
    HTTPS原理
  • 原文地址:https://www.cnblogs.com/lipera/p/6269119.html
Copyright © 2020-2023  润新知