提交请求

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;

 

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值