`

提交请求

 
阅读更多

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;

 

 

 

 

1
8
分享到:
评论

相关推荐

    asp.net jquery 跨域提交请求数据

    本文将深入探讨如何在ASP.NET中配置允许jQuery进行跨域提交请求数据的方法。 首先,了解CORS的工作原理。CORS通过在HTTP头信息中添加`Access-Control-Allow-*`字段来实现跨域访问。服务器需要明确允许哪些源可以...

    ajax 三种提交请求的方法

    **Ajax 三种提交请求的方法详解** Ajax(Asynchronous JavaScript and XML)是一种在无需重新加载整个网页的情况下,能够更新部分网页的技术。它通过在后台与服务器进行少量数据交换,使网页实现异步更新,大大提升...

    1AJAX避免用户重复提交请求实现方案设计说明书[定义].pdf

    系统的主要任务是构建一个机制,当用户通过AJAX提交请求后,能够阻止其在服务器响应之前再次发起相同的请求,从而防止数据的重复插入或更新。 2.1.1 系统目标 目标是提供一个用户友好且健壮的解决方案,确保每次...

    android客户端向服务器提交请求的中文乱码问题

    在Android客户端向服务器提交请求时,遇到中文乱码问题是一个常见的困扰。这通常是由于编码格式不一致或处理不当导致的。以下将详细解释这个问题的原因、影响以及如何解决。 首先,我们要明白字符编码的基本原理。...

    C++提交WEB请求(带中文参数)的动态链接库DLL源码

    本话题涉及的是一个C++编写的动态链接库(DLL),它能够实现向WEB服务器提交POST请求,尤其处理带有中文参数的情况。DLL是Windows操作系统中的一种共享库机制,允许不同进程调用同一份代码,提高资源利用率。 首先...

    Gitlab拉取_推送代码,提交合并请求.docx

    ### GitLab 拉取与推送代码,提交合并请求详解 #### 一、拉取代码 **1. 初始化 Git 信息** 在开始任何 Git 操作之前,首先需要配置您的 Git 用户名和电子邮件地址,这将用于标识您提交的代码。 ```bash git ...

    jquery重复提交请求的原因浅析

    根据文件中的描述,造成jQuery重复提交请求主要有两个原因:一是没有取消事件绑定,二是多次引用同一个JavaScript文件。 首先,我们来详细探讨第一点,没有取消事件绑定。在jQuery中,事件绑定通常通过点击(click...

    php模拟post提交请求调用接口示例解析

    首先,模拟POST提交请求通常涉及到以下几个关键步骤: 1. **构建请求URL**:指定你要发送POST请求的目标接口URL,例如在示例中的`$url = 'http://mobile.jschina.com.cn/jschina/register.php';`。 2. **准备POST...

    AJAX避免用户重复提交请求实现方案

    通过这种方式,我们就可以有效避免用户在AJAX请求还未完成时重复点击按钮提交请求,防止因多次请求给服务器带来不必要的压力,同时也给用户提供更好的交互体验。需要注意的是,在实际开发中,AJAX请求的发送通常是在...

    Android移动开发-使用URLConnection提交请求的实现

    URL的openConnection()方法将返回一个URLConnection对象,该对象...程序可以通过URLConnection实例向该URL发送请求,读取URL引用的资源。 程序Demo示范了如何向Web站点发送GET请求、POST请求,并从Web站点取得响应。

    window的open方法把get请求转成post请求处理方式逻辑

    根据实际的开发项目整理的一个window的open方法把get请求转成post请求处理方式逻辑,由于window.open方法的get实现时,请求传入的参数长度不能超过2000这样一个字符长度,故需转换成post请求处理方式达到既能用到...

    Android使用URLConnection提交请求的实现

    总结来说,Android中使用URLConnection提交请求涉及的主要步骤包括:创建URL对象、建立URLConnection、设置请求参数、发送GET或POST请求以及处理响应。理解这些步骤对于进行Android网络编程至关重要。

    JavaWeb开发中请求重复提交的解决方案及实现.pdf

    一次性验证码是常用的方法,它要求用户在提交请求前输入一个随机生成的图像中的字符序列。这种方式可以有效地防止自动化工具的无限尝试,因为每个请求都需要用户手动输入正确的验证码。设计验证码时需要平衡安全性和...

    SAP如何修改已释放的请求

    - **重新提交审批**:完成所有必要的修改后,再次提交请求进行审批。这一步骤是确保修改后的请求符合组织的政策和流程要求。 #### 4. 遵守组织政策 在进行任何修改之前,还需要注意遵守所在组织的特定政策和程序。...

    spring boot 防止重复提交实现方法详解

    2. 当客户端提交请求时,服务器端检查提交记录是否存在,如果存在,则视为重复提交,否则,记录提交请求。 3. 在检查提交记录时,可以根据客户端的 IP 地址、用户 ID、提交参数等信息来进行比较。 自定义注解 ...

    解决Tomcat修改get提交请求乱码问题

    本文主要讨论如何解决Tomcat在处理GET提交请求时出现的乱码问题。 首先,我们要明白GET请求与POST请求的区别。GET请求通常用于获取资源,而POST请求则用于向服务器发送数据。对于POST请求,Spring框架提供了`...

    http请求测试工具

    httppost可以模拟post发送和get方法向目标网站提交请求,这个是电脑端的软件,不是运行于web的脚本代码 1. testhttppost.exe:http post上传文件工具; 2. TestHttpPost: 源码; 3.lr_post.txt: 录制的loadrunner ...

    j2ee服务器端避免重复提交

    比如,当用户首次提交请求时,服务器可以在会话中设置一个标志,后续的相同请求如果发现此标志,则忽略处理。 6. **HTTP状态码和重定向**: 使用HTTP状态码来通知客户端操作结果,例如返回200表示成功,303或307...

    token-springMVC 防止重复提交

    当客户端再次提交请求时,需要将这个令牌一起发送回服务器。服务器端验证令牌的有效性,如果匹配则处理请求,否则拒绝。 2. **实现步骤**: - **生成令牌**:在接收到客户端请求时,服务端生成一个唯一的、随机的...

Global site tag (gtag.js) - Google Analytics