【问题标题】:Business Objects 4 "OpenDocument" URL not working with parametersBusiness Objects 4“OpenDocument”URL 不能使用参数
【发布时间】: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 TypeCurrency,我尝试使用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,如果我删除部分 &amp;sInstance=Param,则报告确实成功打开,并正确显示参数值。但是,至关重要的是,它刷新了报告,这是我不想要的。

我们已经有这个报告的一个实例,当这个实例已经存在时,我不想等待 20 分钟让我的报告刷新。

将 &sInstance=Param 替换为 &sInstance=Last

出于兴趣/绝望,我试图让OpenDocument 简单地打开我最近的报告实例。

&sInstance=Last

当我这样做时,它按预期工作。我的报表完美打开,它没有刷新报表,但是当然,它打开了最后创建的任何实例。

包含空格的参数名称

当我最初发布这篇文章时,一些读者建议在任何包含空格的参数名称中使用%20 而不是+

我应该说,如果我使用我的OpenDocument URL,删除&amp;sInstance=Param 部分,并将@​​987654357@ 参数从&amp;lsMFX+Type=AVE 修改为&amp;lsMFX+Type=CHF,然后使用这个新的FX Type 值报告刷新。

所以 URL 肯定是正确解析 URL,并将两个参数值设置为正确的参数名称。但是在尝试查找现有实例时它会崩溃。

最后的想法

所以。简而言之,如果我使用&amp;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


【解决方案1】:

我认为错误信息的原因是您没有指定与您传递的提示值匹配的索引值(BU Cat)。请查看 OpenDocument 手册中关于 lsI[NAME] 的部分。

这里有一个比较简单的选项来比较和检查您的 OpenDocument 链接:让 Webi 中的 文档链接 功能为您创建它们。你可以这样做:

  1. 创建一个新的 Webi 文档(如果您愿意,可以使用现有的)。如果您创建一个新文档,请选择无数据源

重要提示:确保您使用的是 HTML Webi 客户端,而不是 Java 小程序 (RIA)。

  1. 创建一个空白单元格,右键单击它并选择链接 > 添加文档链接。在对话框中浏览并选择文档。

  1. Webi 将在后台分析文档,并列出 OpenDocument 选项以及它在目标文档中找到的任何提示。指定提示值并选择链接到文档实例,将其设置为最新 - 匹配提示值

备注:考虑到某些提示可能需要索引值和文本值(对于 BW 变量/提示尤其如此)。

  1. 配置不同的选项和提示值后,单击确定并检查单元格的内容。您会看到它现在包含 OpenDocument URL。将此 URL 与您创建的 URL 进行比较,看看是否有任何差异。

【讨论】:

  • 非常感谢您抽出宝贵时间给出如此详尽的答案 - 我真的很感激。但是......我遵循了这个建议,在单元格中获得了“openDocument.jsp”URL(顺便说一句,它不包含索引值),将它粘贴到我的浏览器中,同样的问题。报告确实打开了,但它仍然完全忽略了我的 Parameter 值。我需要一杯啤酒……
  • 有趣的是,它创建的 URL 包含“sType=wid”,这是 BO 4 的折旧参数之一(根据 SAP 的 OpenDocument 文档)。它还使用 lsS 而不是 lsM 设置我的参数值,所以我尝试将代码更改为使用 lsS,但同样的问题。是的,直接在浏览器中打开 BO 生成的 URL 仍然会打开一个包含不同参数值的报表。 ;-(
  • &lsS 如果目标报表中的提示是单选(等于);如果提示是多选(在列表中),则使用 &lsM。如果使用错误,您将看到一个提示面板。
  • 是的,我知道这一点。而且,具有讽刺意味的是,我的提示值是多选,但生成的 URL 表明它是单选。但是,无论哪种方式,它仍然没有工作!
  • 您是否尝试在 URL 中将 &amp;lsMBU=BU+Cat 替换为 &amp;lsIBU=BU%20Cat&amp;lsSBU=BU%20Cat? (我支持@Joe 关于将+ 符号替换为%20 以转义空格的评论)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-11-06
  • 2011-12-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多