Application Development Discussions
Join the discussions or start your own on all things application development, including tools and APIs, programming models, and keeping your skills sharp.
cancel
Showing results for 
Search instead for 
Did you mean: 

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

Former Member
0 Kudos

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

  • SAP Managed Tags:
1 REPLY 1

former_member583013
Active Contributor
0 Kudos

shinkichi ehara 様、

「[ 【BOXI3.0】既存webアプリケーションのカスタマイズ方法(InfoView)|; 」への回答をご参照願います。

SCN フォーラムモデレーター

  • SAP Managed Tags: