EBS如何实现一个请求控制报表按多个模版输出

有一个这样的需求,EBS中有一个报表,需要在参数中增加一个“输出格式”的参数,当选择输出为EXCEL的时候就去运行模版为EXCEL的那个请求,当选择输出为PDF的时候就去运行模版为PDF的那个请求,PDF、EXCEL的请求模版、取值逻辑都完全不同,如下图1所示。

输出格式

图1:输出格式

为实现这个需求,可以定义两个并发程序,一个用于做程序控制,另一个作为最终运行的程序。其中,在用作程序控制的那个请求的package中加上类似如下的这段代码做控制即可:

-- API body

IF p_output_type = 'PDF' THEN
  l_add := fnd_request.add_layout(template_appl_name => 'CUX',
                                  template_code      => 'CUXFINPDF',
                                  template_language  => 'zh',
                                  template_territory => 'CN',
                                  output_format      => 'PDF',
                                  nls_language       => NULL);

END IF;

IF p_output_type = 'EXCEL' THEN
  l_add := fnd_request.add_layout(template_appl_name => 'CUX',
                                  template_code      => 'CUXFINEXCEL',
                                  template_language  => 'zh',
                                  template_territory => 'CN',
                                  output_format      => 'EXCEL',
                                  nls_language       => NULL);

END IF;

l_request_id := fnd_request.submit_request(application => 'CUX',
                                           program     => 'CUXFINRPT',
                                           argument1   => p_org_id,   -- 把报表需要的参数,在这里传递给要运行的报表
                                           argument2   => p_transaction_type, --
                                           argument3   => p_vendor_code, --
                                           argument4   => p_payment_year, --
                                           argument5   => p_payment_month, --
                                           argument6   => p_receive_date_from, --
                                           argument7   => p_receive_date_to, --
                                           argument8   => p_output_type, -- 
                                           argument9   => p_bill_end_day);
                                            

output('报表提交成功,请查看请求编号为: ' || l_request_id || ' 的报表运行结果');

-- API end body

上面的代码,主要是利用到了fnd_request.add_layout和fnd_request.submit_request这两个函数。

本文标题:EBS如何实现一个请求控制报表按多个模版输出

本文链接:http://yedward.net/?id=317

本文版权归作者所有,欢迎转载,转载请以文字链接的形式注明文章出处。

相关文章