首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > 其他数据库 >

交付请求

2012-07-22 
提交请求1、首先调用函数 fnd_request.add_layout 来设置打印报表的rtf模板,result : fnd_request.add_lay

提交请求
1、首先调用函数 fnd_request.add_layout 来设置打印报表的rtf模板,

result := fnd_request.add_layout(template_appl_name   => :template_appl_name,
template_code              => :template_code,
template_language      => :template_language,
template_territory       => :template_territory,
output_format              =>utput_format,
nls_language                 => :nls_language);
?
说明:
返回值: boolean 类型的变量;
template_appl_name:为请求模板对应的应用简;
template_code :为请求模板的简称,一般与请求的简称相同;
template_language :指运行请求时模板的语言,中文为 ZH,英文为US,此参数必需在挂模板时所选的语言范围内;
template_territory :指语言对应的区域,中国为 CN;
output_format: 指报表输出时的格式类型,如 PDF,EXCEL等;
nls_language: 留空即可。

2、在 result 返回值为 true 时再调用函FND_REQUEST.SUBMIT_REQUEST 来正式提交请求:

ln_request_id := fnd_request.submit_request(application              => :application,
program                => :program,
Description           => :description,
start_time             => :start_time,
sub_request          => :sub_request,
argument1..100    => :argument1..100);
说明:
返回值:数值类型的变量;
application         :指请求对应的应用简称;
program              :指请求的简称;
description         :指描述,在调用时留空即可;
start_time           :指请求开始运行的时间,在调用时留空即可,表示即时执行;
sub_request       :指当前请求是否是子请求,一般在调用时赋值 false;
argument1..100: 指调用请求时的参数,最多100个,在form中调用时可在最后一个参数后用 chr(0)来表示为最后一个参数,不用写满100个参数,如果在pl/sql中调用则需要写满100个参数。

3、执行后如果 ln_request_id > 0 表示提交成功,则需要显式执行 commit才可最终提交成功。
如果期间没有显式执行commit导致请求提交后不能立刻执行,而且会导致请求不成功。

4、 还可以使用函数
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;
说明:
等待并发请求的完成,然后返回请求的阶段、状态以及完成消息。在等待的过程中每隔一段时间检查一下。其中,request_id指并发请求的id,interval指两次检查见等待的秒数,两次检查之间该程序会休息,max_wait指等待并发请求完成所能等待的的最长时间,单位为秒。
补充:
由于Oracle的请求操作时并发处理,执行此函数将很可能等待很长时间,因此,一般不建议使用该函数,其实fnd_request.submit_request函数返回值不为零已经表示成功提交请求了。

5、可以使用过程editor_pkg.report(REQUEST_ID,'Y')来显示成功执行请求之后生成的报表。但是因为Oracle的     并发处理机制,执行此函数将很可能等待很长时间才能够显示生成的报表,因为需要请求完成才能生成相应的报表,才能执行该过程。
例:
  PROCEDURE print IS
    l_default_language  VARCHAR2(20);
    l_default_territory VARCHAR2(20);
    l_template_code     VARCHAR2(200);
    request_id          NUMBER;
    v_layout            BOOLEAN;
  BEGIN
    BEGIN
      SELECT xtv.default_language, xtv.default_territory, xtv.template_code
        INTO l_default_language, l_default_territory, l_template_code
        FROM xdo_templates_vl xtv
       WHERE xtv.application_short_name = 'CUX'
         AND xtv.template_code = :print_bank_apy.template_code;
    EXCEPTION
      WHEN OTHERS THEN
        fnd_message.set_name('CUX', 'RTF文件有误!');
        fnd_message.error;
        RAISE form_trigger_failure;
    END;
    v_layout := fnd_request.add_layout('CUX', l_template_code, l_default_language, l_default_territory, 'PDF');
 
request_id := fnd_request.submit_request(
application  => 'CUX',
          program    => 'CUXAPYPNT',
          description  => NULL,
          start_time   => NULL,
          sub_request  => FALSE,
          argument1  => :cux_exp_credit_headers.credit_header_id);
     commit;                                       
    IF request_id IS NULL OR request_id <= 0 THEN
      fnd_message.set_name('CUX', '提交合同打印请求出错');
      fnd_message.error;
      RAISE form_trigger_failure;
    ELSE
      fnd_message.set_name('CUX', '您提交了开证申请书打印请求,请求号为:' || request_id);
      fnd_message.show;
      cancle;
    END IF;
  END;

热点排行