壹佰网|ERP100 - 企业信息化知识门户

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 753|回复: 10

[财务] 如何提高fnd_request 速度?

  [复制链接]
发表于 2012/5/17 12:36:13 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。如果您注册时有任何问题请联系客服QQ: 83569622  。

您需要 登录 才可以下载或查看,没有帐号?注册

x
  问题是这样的  button 触发 fnd_request 调用, 这时界面上什么操作都做不了。有什么方法,能在触发fnd_request 的时候,页面能继续做其他的操作。 我试过 synchroize 关键字,不过不好用,页面还是停在那,什么都做不了。怎样能实现我的要求?

发表于 2012/5/17 13:29:06 | 显示全部楼层
是不是这个button触发器下还有其他process在跑啊?如果是的话,你只能修改这个触发器的逻辑了,如果这个button'下只是提交一个request'的话是很快的。提交之后可以马上进行其他操作的。
 楼主| 发表于 2012/5/17 13:32:37 | 显示全部楼层
marusu 发表于 2012/5/17 13:29
是不是这个button触发器下还有其他process在跑啊?如果是的话,你只能修改这个触发器的逻辑了,如果这个but ...

只有一个request,这个request是出报表的。他会调用其他的程序。。。。 所以页面停在那了,状态栏的黑杠一直在那跑

发表于 2012/5/17 14:04:07 | 显示全部楼层
呵呵,这种情况还真没有遇到过。如果就是一个request应该提交完事就在后台里面运行了,我们可以操作其他画面的。
方便的话,可以看一下提交的代码吗?
 楼主| 发表于 2012/5/17 15:57:16 | 显示全部楼层
marusu 发表于 2012/5/17 14:04
呵呵,这种情况还真没有遇到过。如果就是一个request应该提交完事就在后台里面运行了,我们可以操作其他画面 ...

     ln_req_id := FND_REQUEST.SUBMIT_REQUEST(
                 application => 'AR',
                        program     => V_PROGRAM,--并发程序的名称
                        description => '',
                        start_time  => '',
                        sub_request => FALSE,
                        argument1   => to_char(:CTRL.RECEIPT_DATE_FR, 'yyyy-mm-dd'),
                        argument2   => to_char(:CTRL.RECEIPT_DATE_TO, 'yyyy-mm-dd'),
                        argument3   => :CTRL.CUSTOMER_NO,
                        argument4   => CHR(0),
                        argument5   => null,
                        argument6   => null,
                        argument7   => null,
                        argument8   => null,
                        argument9   => null,
                        argument10  => null,
                        argument11  => null,
                        argument12  => null,
                        argument13  => null,   
                        argument14   =>null,
                        argument15  => null,
                        argument16  => null,  
                        argument17   => null,
                        argument18  => null,
                        argument19  => null,  
                        argument20  => null,
                        argument21   => null,
                        argument22  => null,
                        argument23  => null,   
                        argument24   => null,
                        argument25  => null,
                        argument26  => null,  
                        argument27   => null,
                        argument28  => null,
                        argument29  => null,
                        argument30  => null,
                        argument31   => null,
                        argument32  => null,
                        argument33  => null,   
                        argument34   => null,
                        argument35  => null,
                        argument36  => null,  
                        argument37   => null,
                        argument38  => null,
                        argument39  => null,
                        argument40  => null,
                        argument41   => null,
                        argument42  => null,
                        argument43  => null,   
                        argument44   => null,
                        argument45  => null,
                        argument46  => null,  
                        argument47   => null,
                        argument48  => null,
                        argument49  => null,
                        argument50  => null,
                        argument51   => null,
                        argument52  => null,
                        argument53  => null,   
                        argument54   => null,
                        argument55  => null,
                        argument56  => null,  
                        argument57   => null,
                        argument58  => null,
                        argument59  => null,
                        argument60  => null,
                        argument61   => null,
                        argument62  => null,
                        argument63  => null,   
                        argument64   => null,
                        argument65  => null,
                        argument66  => null,  
                        argument67   => null,
                        argument68  => null,
                        argument69  => null,
                        argument70  => null,
                        argument71   => null,
                        argument72  => null,
                        argument73  => null,   
                        argument74   => null,
                        argument75  => null,
                        argument76  => null,  
                        argument77   => null,
                        argument78  => null,
                        argument79  => null,   
                        argument80  => null,
                        argument81   => null,
                        argument82  => null,
                        argument83  => null,   
                        argument84   => null,
                        argument85  => null,
                        argument86  => null,  
                        argument87   => null,
                        argument88  => null,
                        argument89  => null,
                        argument90  => null,
                        argument91   => null,
                        argument92  => null,
                        argument93  => null,   
                        argument94   => null,
                        argument95  => null,
                        argument96  => null,  
                        argument97   => null,
                        argument98  => null,
                        argument99  => null,
                        argument100  => null
     
     );
   synchronize;                                
                 if ( ln_req_id = 0 ) then
                          fnd_message.retrieve;
                          fnd_message.error;
                 else
                     commit;              
                 end if;
                        v_request_result := fnd_concurrent.wait_for_request( request_id  => ln_req_id,
                                                                                               interval=> 5,
                                                                                               max_wait    => 300,
                                                                                               phase   => v_phase,
                                                                                               status  => v_status,
                                                                                               dev_phase   => v_dev_phase,
                                                                                               dev_status  => v_dev_status,
                                                                                               message => v_message );
                      synchronize;
                      IF v_request_result THEN
                          if ( UPPER(v_dev_status) = 'NORMAL') then
                                  editor_pkg.report(ln_req_id,'Y');   
                                else
                    fnd_message.debug('打印单据出错,请查看请求中的详细信息.');
                    RETURN;
                                end if;
                       ELSE
                           Fnd_Message.Debug('请求未完成,无法查看报表内容!');
                           RETURN;
                       END IF;
        我明白你的意思, 我意思是提交的时候  画面上有短暂的时间 鼠标什么都点不了

发表于 2012/5/17 16:24:36 | 显示全部楼层
你问题描述得我都有点迷糊了。。一会儿说时间很长不能做其他操作,一会儿说短暂的时间。一般request提交是直接在后台运行,这个你我都知道。而根据你问题的描述我觉得你这个问题可能是提交之后EBS application画面不能再进行任何操作,直到这个request运行结束,这是我对你问题的理解。然后看了你的代码,其中:
                        v_request_result := fnd_concurrent.wait_for_request( request_id  => ln_req_id,
                                                                                               interval=> 5,
                                                                                               max_wait    => 300,
                                                                                               phase   => v_phase,
                                                                                               status  => v_status,
                                                                                               dev_phase   => v_dev_phase,
                                                                                               dev_status  => v_dev_status,
                                                                                               message => v_message );
我觉得,这就是问题所在,这个会在你提交之后一直检查这个request的状态,是loop循环,所以只有当你这个request结束或者error之后,这个定格的状态才会结束。希望对你有所帮助,有问题我们一起讨论!
发表于 2012/5/17 16:30:00 | 显示全部楼层
你可以把下面检查request运行结果的代码comment,然后再尝试一次看看吧
 楼主| 发表于 2012/5/17 16:51:27 | 显示全部楼层
marusu 发表于 2012/5/17 16:30
你可以把下面检查request运行结果的代码comment,然后再尝试一次看看吧

如果不等request执行完,就去掉输出会出错的。 看来二者只能取其一

发表于 2012/5/17 17:03:10 | 显示全部楼层
zhangjl218 发表于 2012/5/17 16:51
如果不等request执行完,就去掉输出会出错的。 看来二者只能取其一

输出会出错?什么意思?有点不明白。为什么会出错。
你能把具体process说明一下吗?
根据我的了解,先是点击报表生成button create报表,对?
然后还有输出button?!因为我不知道标准报表应用是怎样的,因为我们公司没有使用Oracle的报表开发。
如果还有其他的button操作,你可以在其他button中对系统中这个request进行check,如果发现有运行,可以进行输出等待。


 楼主| 发表于 2012/5/18 08:10:17 | 显示全部楼层
marusu 发表于 2012/5/17 17:03
输出会出错?什么意思?有点不明白。为什么会出错。
你能把具体process说明一下吗?
根据我的了解,先是 ...

我这个报表就是在 output中生成的html报表,手写的报表,request跑完之后 生成的output文件。

editor_pkg.report(ln_req_id,'Y');    这段代码 就是调用 output的。如果不等request跑完,就调用,会报出文件没有生成的错误。

所以要想正常调用,必须等request跑完,所以画面就在那loop了。 为了提高速度,现在改成手动去看报表。不在画面上调用output文件了。


发表于 2012/5/18 08:17:19 | 显示全部楼层
恩,算是知道怎么回事了,output输出报表我也做过,是,如果用户不检查request执行状态,在没有结束之前去输出的确是是个问题。
不过可以建议他们自行去check request状态的。哈哈
您需要登录后才可以回帖 登录 | 注册

本版积分规则

QQ|Archiver|小黑屋|手机版|壹佰网 ERP100 ( 京ICP备19053597号-2 )

Copyright © 2005-2012 北京海之大网络技术有限责任公司 服务器托管由互联互通
手机:13911575376
网站技术点击发送消息给对方83569622   广告&合作 点击发送消息给对方27675401   点击发送消息给对方634043306   咨询及人才点击发送消息给对方138011526

GMT+8, 2025/11/29 18:30 , Processed in 0.025758 second(s), 18 queries , File On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表