代码之家  ›  专栏  ›  技术社区  ›  jason saldo

如何列出webi报告中使用的bo xir2 Universe对象?

  •  0
  • jason saldo  · 技术社区  · 16 年前

    如何使用Business Objects SDK for XIR2从WebI报告中列出Universe对象?
    有没有一种没有SDK的自动化方法?

    使用SDK,我可以迭代WebI报表和Universe集合,但看不到检索查询对象或报表查询的本机方法。

    4 回复  |  直到 10 年前
        1
  •  0
  •   Quentin Renard    11 年前

    有一种方法可以使用BO4.0 SDK实现这一点:

    // Get the list of webi documents
    IInfoStore infoStore = (IInfoStore) enterpriseSession.getService("InfoStore");
    String query = "select SI_NAME, SI_ID from CI_INFOOBJECTS "
          + "where SI_KIND = 'Webi' and SI_INSTANCE=0";
    IInfoObjects infoObjects = (IInfoObjects) infoStore.query(query);
    
    for (Object object : infoObjects) {
        IInfoObject infoObject = (IInfoObject) object;
        if (getInfoObjectPathAndTitle(infoObject).startsWith("/")) {
          System.out.println("REPORT: " + infoObject.getTitle());
    
          IDocumentInstance doc = documentInstanceManagementService
              .openDocument(context, infoObject.getID());
    
          List list = ReportDictionaryHelper
              .getDictionaryObjectsFlatList(context, doc);
          if (list.size() > 0) {
            System.out.println("OBJECTS:");
            for (DictionaryExpression expr:list) {
              System.out.println(expr.getName());
            }
          }
    
          List vars = ReportDictionaryHelper.getDocumentVariables(context,doc);
          if (vars.size() > 0) {
            System.out.println("VARIABLES:");
            for (Variable var:vars) {
              System.out.println(var.getName());
            }
          }
    
          documentInstanceManagementService.closeDocument(context, doc);
          System.out.println();
    }
    

    但我正在寻找一种使用BiXi R2 SDK的方法。它不包含所需的API。

        2
  •  3
  •   Leanne Nansen    14 年前

    BusinessObjects存储库(数据库)包含复杂数据,在复合表列中膨胀。

    通过CMS查询解密的存储库数据;也就是说,它不能直接连接/查询,即覆盖一个Universe,从而直接从中运行查询。

    然而,通过“查询生成器”GUI(通过Admin RunpPad和lt;=XIr2.x访问或通过安装服务器程序菜单XI 3 .x+——既有URL Ay s s),也可以通过企业SDK Eys/S/Web服务来访问业务对象库可能会受到质疑。

    返回的数据以信息对象的形式存在。信息对象是存储库中数据的程序化、面向对象的表示。信息对象可以有一个或多个相关对象inset,这些对象作为查询结果中表中的表进行投影,但是数据输出可以在MS Excel等工具中操作,并转换为表格格式。

    SAP开发人员在相关论坛和博客中讨论了查询存储库信息对象的访问方法,我建议阅读: http://weblogs.sdn.sap.com/pub/wlg/13214 更多信息。

        3
  •  1
  •   Marc    16 年前

    我不得不使用管理查询工具(构建一个查询——非常简单)从CMS中提取数据。我在输出中看到的内容之一是数据连接和SQL语句。从技术上讲,这不是使用SDK(ER,您使用的是它们对信息存储的内置访问),但您可能需要使用SDK文档来了解您甚至在寻找什么。它们的实现相当粗糙,如果查询出错,它不会告诉您它出了什么问题。如果查询稍有错误,它可能会返回“未找到记录”语句。

    返回的记录是多级别的…如果查询中的某个字段可以引用另一个表,则可以获取其中包含子查询结果的一个字段。其中一些字段可能有子查询结果。弄清楚这是一件痛苦的事情,但是一旦你能弄清楚这些字段,你就可以(手动)从中提取数据。

        4
  •  1
  •   Registered User    15 年前

    使用查询生成器,以下查询将返回与Universe关联的每个报表的si_id值:

    选择* 从CI-AppObjects 在这里,si kind='universe'

    使用查询生成器,以下查询将基于ID返回WebI报告名称:

    选择si_name,si_description,si_id,si_author,si_parent_folder,si_universe,si_has_提示 来自Ci_InfoObjects 其中si_id in(xxx,xxx,xxx)

    我看不出一种方法可以将这两种方法结合在一起,仅仅用报告来显示宇宙。此外,我不认为有什么方法可以将这些数据作为WebI报告本身引入到业务对象中。