【发布时间】:2016-07-26 21:07:57
【问题描述】:
我有一个 .Net 应用程序,它以前使用 BO 3.x 的 OpenDocument URL 打开 Webi 报告的特定实例,具有一组特定的参数值。效果很好。
但是对于 BO 4.1 和 4.2,每当我使用 &sInstance=Param 获取 OpenDocument 来打开报告的特定实例时,它都会失败,默默地抛出 Java 错误,并留下一个(几乎)空白网页.
OpenDocument&sInstance=Param 是否可以使用 ?
我在 2016 年 8 月 6 日收到以下电子邮件:
“在 BI 4.2 SP2 补丁 2 上可重现问题。此问题已在 BI 4.2 SP2 补丁 3 上解决。问候...”
2016 年 9 月:只是为了确认,使用最新补丁,OpenDocument 确实(终于)再次正常工作,设法打开 Webi 报告的特定实例。
问题描述(针对其他 BO 受害者)...
我发表这篇文章已经过去几个月了,SAP 论坛没有人提供任何帮助,而我仍然卡在这个问题上。
这里是如何重现问题的分步指南。
为了简单起见,我现在有一个“愚蠢的”BO 报告,它只接受两个参数,并在报告中显示它们的值。而已。
我有这个报告的几个实例,我想做的是使用OpenDocument URL 打开那个报告的特定实例。这是我的愚蠢报告的历史,你可以看到我有 3 个实例。
如果我打开参数为AVE;CHF 的实例,我会看到:
太棒了。
现在,我想以编程方式打开这个特定的报表实例。使用OpenDocument。在我的应用程序的“真实”版本中,这些报告每晚都会刷新,每个实例可能需要 20 分钟才能刷新,所以我不想让OpenDocument 刷新报告...只是为了打开一个现有的报表实例。
我的报告有两个参数,称为FX Type 和Currency,我尝试使用OpenDocument URL 打开报告(为了便于阅读,拆分为单独的行):
http://MyServer:6405/BOE/OpenDocument/opendoc/openDocument.jsp?
iDocID=AdF8qLrXtBdEgJxiPvS8s6Q
&sIDType=CUID
&sOutputFormat=H
&sType=wid
&sRefresh=N
&sInstance=Param
&lsMFX+Type=AVE
&lsMCurrency=GBP
&token=blahblahblah
当我打开这个 URL 时,我在 Chrome 和 IE11 中都得到了这个。
注意右侧面板如何显示它已获得该报告的详细信息...所以我正确登录并设法找到正确的报告,但报告区域是空白的。
作为一个极客,我用谷歌浏览器检查了空白区域,发现了这个..
基本上,Webi 抛出了 Java 错误,Webi 决定不告诉用户。
<body>
<script type="text/javascript">
onInvisibleError({actionId: '4587', message: 'while trying to invoke the method java.lang.String.length() of a null object loaded from local variable \'sToDecode\''});
</script>
</body>
从 URL 中删除 &sInstance=Param
返回我的 URL,如果我删除部分 &sInstance=Param,则报告确实成功打开,并正确显示参数值。但是,至关重要的是,它刷新了报告,这是我不想要的。
我们已经有这个报告的一个实例,当这个实例已经存在时,我不想等待 20 分钟让我的报告刷新。
将 &sInstance=Param 替换为 &sInstance=Last
出于兴趣/绝望,我试图让OpenDocument 简单地打开我最近的报告实例。
&sInstance=Last
当我这样做时,它按预期工作。我的报表完美打开,它没有刷新报表,但是当然,它打开了最后创建的任何实例。
包含空格的参数名称
当我最初发布这篇文章时,一些读者建议在任何包含空格的参数名称中使用%20 而不是+。
我应该说,如果我使用我的OpenDocument URL,删除&sInstance=Param 部分,并将@987654357@ 参数从&lsMFX+Type=AVE 修改为&lsMFX+Type=CHF,然后使用这个新的FX Type 值报告刷新。
所以 URL 肯定是正确解析 URL,并将两个参数值设置为正确的参数名称。但是在尝试查找现有实例时它会崩溃。
最后的想法
所以。简而言之,如果我使用&sInstance=Param,BO v4.2(和 v4.1)会悄悄地抛出一个错误并返回一个空白屏幕。
它不允许我加载现有的 Webi 报表实例。
而且 SAP 的支持似乎已经消失了。
有没有人看到这个问题,或者找到了解决方法?
一天后...
今天早上,我创建了第二份 Webi 报告,其中包含指向“迈克斯测试”报告的超链接。
当我点击这个链接时,它成功地打开了我的带有指定参数的 Webi 报告。没问题。
但是当我将“目标窗口”设置从“当前窗口”更改为“新窗口”时...
...看看当我点击超链接时会发生什么...
又是我们的 Java 错误!
所以,我认为这证明了这个是 BO 4.2 本身的一个错误。
即使它自己创建的超链接 URL 也无法打开 Webi 报告的特定实例。
SAP...交给你...
【问题讨论】:
-
您确定存在“BU Cat”提示值的实例吗?我会尝试删除 sInstance 参数并将 sRefresh 更改为 Y。如果报告生成正确的结果,则问题出在实例上。如果仍然没有运行,那么问题在于提示值的传递。
-
此外,在 SP06 中的 openDocument 中存在一个问题,导致它将加号误解为空格的占位符。如果您使用的是 SP06(在补丁 3 之前(我认为)),这可能会影响您。尝试用 %20 代替 + 作为空格。
-
@Joe:是的,实例肯定存在。而且我还尝试修改我的 URL 以专门包含一个没有任何空格的 Parameter 值(对于另一个肯定存在的实例)。我试图在 URL 中用“BU%20CAT”替换“BU+CAT”。每次都是同样的问题。
-
看到您的最新更新 - 听起来您取得了进展。你试过 sInstance=Last 吗?
-
"你试过 sInstance=Last" 其实我不能用这个。对于每个报表,我们可能有 20 个不同的实例(它们会在一夜之间刷新),我需要能够使用 OpenDocument 打开具有特定参数值集的特定实例。在 BO 3.x 中,没问题。使用 BO 4.x,它就不起作用了。
标签: reporting-services business-objects