Quantcast
Channel: SCN : Popular Discussions - SAP Crystal Reports & BI Dashboards (日本語) [Read-only]
Viewing all articles
Browse latest Browse all 2234

【BOXI3.0】JavaAPIによるWebIntelligenceレポートクエリー内SQLの取得、設定方法

$
0
0

WebIntelligenceレポートのクエリーの生成したSQLの取得、設定の際に使用するAPIの使用方法についてご教示いただけませんでしょうか。

 

SQLの取得に「SQLSelectStatement」インタフェースの「getSQL」メソッド、設定に「setSQL」メソッドを使用したいと考えております。

BOXIR2のWebサイト「Developer Library」と下記のスレッドを参考にソースを作成しましたが正しく動作しません。

 

スレッド:How to purge report data before deployment on target server 

 

-


作成したソースです----


package test;

 

import="com.crystaldecisions.sdk.framework.*;

import="com.crystaldecisions.sdk.exception.SDKException;

import="com.crystaldecisions.sdk.occa.infostore.*;

import="com.businessobjects.rebean.wi.*;

 

class test {

 

     public static void main(String[] args) {

          test t = new test();

          t.execute();

 

     }

 

     public void execute() {

 

          try {

               //logon

               ISessionMgr mySessionMgr = CrystalEnterprise.getSessionMgr().logon( XXXX, XXXX, XXXX, XXXX);

               System.out.println("Logon");

 

               //ReportEngineの取得

               ReportEngines repEngines = (ReportEngines)enterpriseSession.getService("ReportEngines");

               ReportEngine widocRepEngine = (ReportEngine)repEngines.getService(ReportEngines.ReportEngineType.WI_REPORT_ENGINE);

 

               //DocIDよりドキュメントオープン

               DocumentInstance doc = widocRepEngine.openDocument(XXXX);

 

               //DataProvider取得

               DataProviders dataps = doc.getDataProviders();

               DataProvider datap = dataps.getItem(0);

 

               SQLdataProvider sqldatap = (SQLDataProvider)datap;

 

               SQLContainer sqlcont = sqldatap.getSQLContainer();

               SQLNode sqlnod = (SQLNode)sqlcont.getChildAt(0);

 

               SQLSelectStatement sqlSelects = (SQLSelectStatement)sqlnod;

 

               //SQLの取得                                   

               String strsql = sqlSelects.getSQL();

 

               System.out.println(strsql);

 

               doc.closeDocument();

          }

          catch(SDKException e)

          {

 

               System.out.println("エラー発生");

 

          }

     }

-


※上記ソース中のログインアカウント情報、DocID情報は「X」でマスクしています。

 

上記では任意のWebIntelligenceドキュメントを開き、クエリーの作成したSQLを取得しようとしています。

しかし「SQLDataProvider」インタフェースの「getSQLContainer」メソッドにより「SQLContainer」インスタンスを取得する際に「ERR_WIS_30270」(参照情報が無効であるときに発生するエラーメッセージです)が発生してしまいます。

「DataProvider」インスタンスを「SQLDataProvider」にキャストし、サブインタフェースである「SQLDataProvider」クラスの「getSQLContainer()」メソッドを呼んでいるので、上記エラーメッセージの示唆するところは当然な気がしますが、正しく動作させる方法に至りませんでした。

 

【環境】

サーバOS:Windows Server 2003 Enterprise Edition

BOVer: BOXI3.0

インタフェース:Java

Webアプリケーションサーバ:WebLogic Server version10.0

 

SAPノートに関してはアカウントを所持していないので確認できていません。

SAPのサイトより提供されるPDFファイル(日本語、英語)、BOXIR2のWebサイト「Developer Library」内より情報を探していたところ、BOXIR2以降で非推奨APIに挙げられている「Query」インタフェースの「getSQL()」メソッドでの実装資料はいくつか見つかりましたが、上記APIによる実装手順を見つけるに至りませんでした。

 

どうぞ宜しくお願い致します。

 

Edited by: shinkichi ehara on Oct 22, 2008 8:17 AM


Viewing all articles
Browse latest Browse all 2234

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>