cancel
Showing results for 
Search instead for 
Did you mean: 

如何在WAD里做一个按钮执行如同RSRT里生成报表的按钮的那个操作?

Former Member
0 Kudos

请问各位专家,我基于ODS开发了一张报表,但是实时性特别差,必须得到RSRT里按一下生成报表按钮,数据才能刷新过来,所以现在想在WAD里做一个刷新按钮执行如同RSRT里生成报表的按钮的那个操作,请各位专家指导一下,谢谢。

Edited by: kenneth7836 on Jul 8, 2009 8:40 AM

Accepted Solutions (0)

Answers (4)

Answers (4)

Former Member
0 Kudos

谢谢支持!

是的,我正是指执行query以获得缓存。因为业务人员青睐使用复杂的格式化报表,口径复杂,涉及的数据量又大。其实质是涉及报表performance的问题。

以上Frank提供的程序,我想也有变通的办法(可能维护起来比较麻烦,权限之类的,信息提供商的量剧增),COPY Multicube,COPA 对应的query,然后数据上载完之后执行程序,选择新的信息提供商。

另外,Frank提到的Broadcaster是否是WAD中使用的呢。BW3.5的WAD似乎简陋了点,SAP Portal因为N久不用也停业了。

我还想到用Report Agent试下。不知这方面有好的Ideas?

Former Member
0 Kudos

Hi,

我那个程序是regenerate query的,而不是你说的预先执行query以获得缓存。

我说的broadcaster不是WAD里的,BW3.5也有,是可以让你定时执行query并且把query结果email出来的。你可以在里面用user的选择条件,定义好每天早上运行一次,可以把报表发给自己。然后用户再执行query的时候(无论怎么执行,是通过WAD或其他),就能够用到cache了。

Report agent应该也可以,你可以测试下。

ps 如果有新问题,请开新贴。这样以后大家查询起来比较方便。谢谢!

Regards,

Frank

Former Member
0 Kudos

有没有试过在query添加characteristic 'Request ID'

然后在 'Request ID' 里创建customer exit 'Most Relevant Data' 就是最新的 Dataload ID.

然后运行query时就应该是最新的数据了吧.

Former Member
0 Kudos

HI Xi Feng,

首先谢谢你的分享,我的query是基于ODS做的,里面找不到'Request ID'的characteristic,这个好像只有CUBE的数据包维度中才有,ods里可以加这个维嘛?怎么加啊?

Former Member
0 Kudos

ODS 没有也不能加这个字段。

发现lz的帐号是新注册的啊。。欢迎来到SDN!

这里有发贴规则: , lz可以看下。

Edited by: Frank Lee on Jul 17, 2009 11:58 AM

Former Member
0 Kudos

如果没有相应的CUBE,用process chain 应该是比较方便的办法吧。下面的link应该对你有用

如果ODS Query 运行太慢,用broadcaster/process chain 来建 cache根本不是办法,比如运行一些大的报告本身就占用很多资源并且对于有CKF 和structure 的报告可能没有好的效果。

把报告写在CUBE里,最好是weekly或者monthly 然后再建aggregate 会更好些。

Former Member
0 Kudos

非常感谢Lee的分享,让我也受益!

另外,有没有选择指定执行具体某一个或几个query的程序呢?由于业务口径的问题,基于某信息提供商创建了N多的query ,现提供的执行程序似乎只能选择信息提供商来执行,如果这样的话,系统地开销就大了,缓存是否足够保证我要的那几个query的结果可以保留呢?

请赐教,谢谢!

Former Member
0 Kudos

Hi,

你好,你说的执行query是运行query以获得缓存吗?你可以用Broadcaster里运行这些query。

还是说regenerate query?上面我说的程序RSR_GEN_DIRECT_ALL_QUERIES你可以看一下,选择屏幕的选项能否满足你的需求。

Regards,

Frank

Former Member
0 Kudos

你好,

客气了,专家不敢当。 有个方法你试试看行不行,有一个程序RSR_GEN_DIRECT_ALL_QUERIES,可以generate多个query (例如你输入你的ODS名称)。

你把这个程序放在你loading数据的process chain里,跟在loading数据的节点后面,这样每当数据loading完毕,query就会自动generate。在process chain里调用abap的方法很简单,有专门的这个处理类型。

如果有问题请随时发贴。

Regards,

Frank

Former Member
0 Kudos

首先多谢赐教,这么厉害还说不是专家,哈哈。由于我的ODS是XI直接同步过来的,没做process chain,所以现在准备用在planing function里调RSR_GEN_DIRECT_ALL_QUERIES这段程序,但是我abap不太行,不知道把我需要刷新的ODS名称写在这段程序的什么地方,还需高手指点一下,谢谢

Former Member
0 Kudos

hi,

还是建议用process chain,易于维护和监控。在planning function里调用abap程序,如果你想改程序的变量会比较麻烦。

你只要去SE38,执行这个程序,输入好你的ODS名称,然后按保存按钮。将这些选择条件存为一个variant。然后在process chain里调用就可以了。

Frank