0

Business Objects SDK for XIR2 を使用して Webi レポートからユニバース オブジェクトを一覧表示する方法は?
SDKなしで自動化する方法はありますか?

SDK を使用して、webi レポートとユニバース コレクションを反復処理できましたが、クエリ オブジェクトまたはレポート クエリを取得するネイティブな方法がわかりません。

4

4 に答える 4

3

BusinessObjects リポジトリ (データベース) には、複合テーブル列にブロブ化された複雑なデータが含まれています。

CMS を介したクエリによって復号化されたリポジトリ データ。つまり、直接接続/クエリすることはできません。つまり、ユニバースがオーバーレイされているため、クエリが直接実行されます。

ただし、BusinessObjects リポジトリは、「Query Builder」GUI (admin Launchpad <= XIR2.x またはインストール サーバー プログラム メニュー XI 3.x+ を介してアクセス - どちらにも URL があります) を介して簡単なクエリを送信するか、Enterprise SDK の /ウェブサービス。

返されるデータは InfoObject の形式です。InfoObject は、リポジトリに保持されているデータのプログラムによるオブジェクト指向表現です。InfoObjects には、クエリ結果のテーブル内のテーブルとして投影される 1 つ以上の関連オブジェクトが挿入されている場合がありますが、データ出力は MS Excel などのツールで操作して表形式に変換できます。

リポジトリ InfoObject をクエリするためのアクセス方法については、関連するフォーラムやブログで SAP 開発者が議論しています。詳細については、 http ://weblogs.sdn.sap.com/pub/wlg/13214 を参照することをお勧めします。

于 2010-07-29T01:16:25.600 に答える
1

クエリ ビルダを使用すると、次のクエリは、ユニバースに関連付けられた各レポートの SI_ID 値を返します。

SELECT * FROM CI_APPOBJECTS WHERE SI_KIND='ユニバース'

クエリ ビルダーを使用すると、次のクエリは ID に基づいて WebI レポート名を返します。

SI_NAME,SI_DESCRIPTION, SI_ID,SI_AUTHOR,SI_PARENT_FOLDER,SI_UNIVERSE,SI_HAS_PROMPTS FROM CI_INFOOBJECTS WHERE SI_ID IN (xxx,xxx,xxx)

この 2 つを組み合わせてユニバースとレポートを表示する方法がわかりません。また、このデータを Business Objects 自体に WebI レポートとして取り込む方法もわかりません。

于 2009-08-12T22:59:12.857 に答える
1

CMS からデータを取得するには、管理クエリ ツール (クエリの作成 -- 非常に初歩的) を使用する必要がありました。出力に表示されるものの 1 つは、データ接続と SQL ステートメントです。これは技術的にSDKを使用していません(つまり、InfoStoreへの組み込みアクセスを使用しています)が、探しているものを理解するためにSDKドキュメントが必要になるでしょう。それらの実装は非常に粗雑で、クエリが間違っていても、何が問題なのかわかりません。クエリが少し間違っていると、「レコードが見つかりません」というステートメントが返される場合があります。

返されるレコードはマルチレベルです...クエリのフィールドが別のテーブルを参照できる場合、サブクエリの結果を含む1つのフィールドを取得できます。これらのフィールドの一部には、サブクエリの結果が含まれる場合があります。理解するのは大変ですが、フィールドを理解できれば、そこから (手動で) データを抽出できます。

于 2009-06-19T00:51:38.217 に答える
0

BO 4.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();
}

しかし、BO XI R2 SDK を使用してこれを行う方法を探しています。必要な API が含まれていません。

于 2013-10-29T10:51:11.870 に答える