2009-04-14 39 views

回答

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來做到這一點。它不包含所需的apis。

1

我不得不使用管理查詢工具(構建查詢 - 非常基本)從CMS中提取數據。我在輸出中看到的一件事是數據連接和SQL語句。這在技術上並不使用SDK(呃,你正在使用他們內置的InfoStores訪問權限),但是你可能需要SDK文檔來弄清楚你甚至在尋找什麼。他們的實現非常粗糙,如果你的查詢錯誤,它不會告訴你它有什麼問題。如果你得到的查詢有些不對,它可能會返回一個'找不到記錄'的語句。

返回的記錄是多級的......如果查詢中的某個字段可以引用另一個表,則可能會得到一個帶有子查詢結果的字段。其中一些字段可能有子查詢結果。找出問題是一件痛苦的事情,但是一旦你能夠確定這些字段,就可以從中提取數據(手動)。

+0

是的,我認爲他們不提供報告對象在他們的SDK中,使自動遷移到其他產品更難。 :p – 2009-06-19 01:13:28

1

使用查詢生成器,下面的查詢將返回SI_ID值與宇宙相關的每個報告:

SELECT * FROM CI_APPOBJECTS WHERE SI_KIND = '宇宙'

使用查詢生成器,下面的查詢將返回基於ID WebI報告名稱:

SELECT SI_NAME,SI_DESCRIPTION,SI_ID,SI_AUTHOR,SI_PARENT_FOLDER,SI_UNIVERSE,SI_HAS_PROMPTS FROM CI_INFOOBJECTS WHERE SI_ID IN(XXX,X xx,xxx)

我沒有看到將兩者結合在一起以顯示報告的Universe的方法。另外,我沒有辦法將這些數據作爲WebI報告提供給Business Objects本身。

3

BusinessObjects資源庫(數據庫)包含複雜數據,在複合表列中出現斑點。

倉庫數據通過CMS查詢解密;意思是說,它不能直接連接到/查詢,即有一個覆蓋的宇宙,因此查詢直接離開它。

BusinessObjects資源庫可以但是受到質疑方法是通過「查詢生成器」 GUI提交簡單的查詢(通過管理啓動訪問< = XIR2.x或通過安裝服務器程序菜單XI 3.x中+ - 都有網址)或通過企業SDK/Web服務。

返回的數據是InfoObject的形式。 InfoObjects是保存在存儲庫中的數據的程序化,面向對象的表示形式。 InfoObjects可能有一個或多個相關對象插入,這些對象在查詢結果中作爲表格投影,但數據輸出可以在MS Excel等工具中操作並轉換爲表格格式。

查詢存儲庫InfoObject的訪問方法由SAP開發人員在相關論壇&博客中討論,我推薦閱讀:http://weblogs.sdn.sap.com/pub/wlg/13214瞭解更多信息。

相關問題