hyperion sqr production reporting 開発者ガイド ボリューム …sqr production reporting...

204
HYPERION® SQR® PRODUCTION REPORTING リリース 11.1.1 開発者ガイド ボリューム3SQR PRODUCTION REPORTING DDO を使用した データアクセス

Upload: others

Post on 22-Sep-2020

1 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Hyperion SQR Production Reporting 開発者ガイド ボリューム …SQR Production Reporting Studio によるBAPI のレポート作成 ..... 129 SAP R/3 のProduction Reporting

H Y P E R I O N ® S Q R ® P R O D U C T I O N R E P O R T I N G

リリース 1 1 . 1 . 1

開発者ガイド

ボリューム3:SQR PRODUCTION REPORTING DDO を使用した

データアクセス

Page 2: Hyperion SQR Production Reporting 開発者ガイド ボリューム …SQR Production Reporting Studio によるBAPI のレポート作成 ..... 129 SAP R/3 のProduction Reporting

Production Reporting 開発者ガイド, 11.1.1

Copyright © 1996, 2008, Oracle and/or its affiliates.All rights reserved.

著者: EPM 情報開発チーム

本ソフトウェアおよび関連マニュアルは使用許諾契約の下に提供されるものであり、その使用および開示に制限があり、国際著作権法により保護されています。使用許諾契約書に明示されているまたは法律により認められている場合を除き、いかなる形式またはいかなる手段によっても、そのいかなる部分も使用、コピー、複製、翻訳、放送、変更、ライセンス、転送、配布、展示、実行、出版、または表示することを禁じます。相互運用性のために法律で認められている場合を除き、本ソフトウェアのリバースエンジニアリング、逆アセンブリ、または逆コンパイルを禁じます。

ここに記載の情報は予告なく変更されることがあり、誤りのないことを保証するものではありません。間違いを見つけた場合は、書面にて弊社までご連絡ください。

本ソフトウェアまたは関連マニュアルが米国政府のために米国政府またはライセンス供与者に提供される場合は、次の注意が適用されます。米国政府の権利: 米国政府顧客に提供されたプログラム、ソフト

ウェア、データベース、および関連マニュアルと技術データは、適用される連邦調達規則および省庁ごとの補則に準拠する「商用コンピュータソフトウェア」または「商用技術データ」です。従って、その使用、複製、開示、変更、適応は、適用される政府契約に示された制限と使用許諾契約条項、および、政府契約の条項、FAR 52.227-19 商用コンピュータソフトウェア使用契約(2007 年 12 月)に示された追

加権利によって適用される範囲に従うものとします。Oracle USA, Inc., 500 Oracle Parkway, Redwood City,

CA 94065.

本ソフトウェアは、さまざまな情報管理アプリケーションでの一般的な使用のために開発されたものであり、人的傷害の危険性をもたらす可能性のあるアプリケーションなど本質的に危険なアプリケーションでの使用のために開発またはそのような意図で開発されたものではありません。本ソフトウェアを危険なアプリケーション内で使用した場合は、お客様がすべての適切なフェイルセーフ、バックアップ、冗長、およびその他の手段を講じて、本ソフトウェアの安全な使用を確保する責任があります。オラクルおよびその関連会社は、危険なアプリケーション内で本ソフトウェアを使用したことによるいかなる破損に対してもその責任を負いません。

本ソフトウェアおよび関連マニュアルは、サードパーティからのコンテンツ、製品、およびサービスへのアクセスまたはそれらに関する情報を提供している場合があります。オラクルおよびその関連会社は、サードパーティのコンテンツ、製品、およびサービスに関するあらゆる種類の保証に対して責任を負うことはなくそれを明示的に否認します。オラクルおよびその関連会社は、サードパーティのコンテンツ、製品、およびサービスにアクセスまたは使用したことに起因するいかなる損失、費用、損害に対して責任を負いません。

Page 3: Hyperion SQR Production Reporting 開発者ガイド ボリューム …SQR Production Reporting Studio によるBAPI のレポート作成 ..... 129 SAP R/3 のProduction Reporting

目次

第 I 部 Production Reporting について . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9

第 1 章 Production Reporting 基礎 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11

Production Reporting DDO について . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11

Production Reporting DDO ソフトウェア開発キット . . . . . . . . . . . . . . . . . . . . . . 11

Production Reporting DDO インターフェイスの利点 . . . . . . . . . . . . . . . . . . . . . . 12

Production Reporting DDO アーキテクチャ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13

データソース接続の確立 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13

トランザクションのサポート . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14

メタデータの取得 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14

データの取得 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15

結果の処理 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16

ドライバを使った Production Reporting DDO インターフェイスの実装 . . . . 16

データアクセスの戦略 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17

第 2 章 Production Reporting DDO アプリケーションの作成 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21

Production Reporting DDO API について . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21

簡単なコード例 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21

データソースの管理 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22

レジストリファイル . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23

DataSourceManagerAdmin クラス . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23

新規データソースの定義 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24

接続の確立 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27

ログオンプロパティの処理 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28

機能の検出 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30

機能のチェック . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31

メタデータの取得 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32

スキーマ情報の取得 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33

スキーマでのデータオブジェクトの一覧表示 . . . . . . . . . . . . . . . . . . . . . . . 35

データオブジェクト情報の取得 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36

列メタデータの取得 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37

プロシージャに関するメタデータの取得 . . . . . . . . . . . . . . . . . . . . . . . . . . . 37

戻り値の指定 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39

目次 iii

Page 4: Hyperion SQR Production Reporting 開発者ガイド ボリューム …SQR Production Reporting Studio によるBAPI のレポート作成 ..... 129 SAP R/3 のProduction Reporting

データの要求 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41

getData を使ったデータの取得 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41

コマンドの実行 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45

プロシージャの呼び出しと呼び出し結果の処理 . . . . . . . . . . . . . . . . . . . . . . 47

トランザクションの実行 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49

階層および多次元データの取得 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50

汎用セレクタを使った多次元データの取得 . . . . . . . . . . . . . . . . . . . . . . . . . 52

MDSelector を使った多次元データの取得 . . . . . . . . . . . . . . . . . . . . . . . . . . . 54

第 3 章 Production Reporting DDO ドライバの作成 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57

ドライバの作成 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57

手順のまとめ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57

手順 1:プロパティ、機能、メッセージファイルの作成 . . . . . . . . . . . . . . . . . . 58

プロパティファイルの作成 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 58

機能ファイルの作成 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 58

メッセージファイルの作成 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59

CSV インターフェイス . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60

手順 2:DataSource インターフェイスの実装 . . . . . . . . . . . . . . . . . . . . . . . . . . . 61

手順 3:接続インターフェイスの実装 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62

列メタデータの提供 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 64

getData の実装 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 68

セレクタを使った getData の実装 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 69

CSVFile クラス . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 69

手順 4:Rowset の実装 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 71

第 4 章 プログラミングの考慮事項 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75

Production Reporting DDO アダプタ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75

ドライバの編成に関するヒント . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75

レジストリエディタ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 76

メッセージと例外 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 77

CSV の例 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 77

メッセージフォーム . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 78

プロパティと特性 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 79

説明 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 80

ローカライズ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 80

階層構造 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 80

各国語対応 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 82

メッセージエディタ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 82

メッセージの読み込み . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 83

メッセージの追加 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 84

iv 目次

Page 5: Hyperion SQR Production Reporting 開発者ガイド ボリューム …SQR Production Reporting Studio によるBAPI のレポート作成 ..... 129 SAP R/3 のProduction Reporting

メッセージの内容の編集 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 84

プロパティエディタ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 84

プロパティの読み込み . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 85

ドライバのテストとデバッグ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 86

クエリエディタを使ったドライバのテストとデバッグ . . . . . . . . . . . . . . . . 86

第 5 章 データソースの管理 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 89

データソースの仕様 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 89

レジストリエディタへのデータソース設定の追加 . . . . . . . . . . . . . . . . . . . . . . . 90

データソースの説明とテンプレート . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 91

Hyperion Essbase . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 91

SAP R/3 および SAP BW . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 92

Microsoft OLEDB for OLAP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 96

Microsoft OLEDB . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 96

JDBC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 97

XML . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 104

区切り文字で区切られた値 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 105

OMG Corba のサンプル . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 105

Microsoft DCOM のサンプル . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 106

CSV のサンプル . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 106

第 6 章 ユーティリティパッケージと共通ファシリティ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 109

ユーティリティパッケージについて . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 109

ユーティリティパッケージの共通コンポーネント . . . . . . . . . . . . . . . . . . . . . . 109

名前スキーム . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 109

プロパティリソースバンドル . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 110

メカニズム . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 111

メッセージファシリティ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 112

メッセージテキスト . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 112

メッセージプロパティファイル . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 113

ローカライズの例 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 114

サービス . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 114

プロパティファシリティ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 115

DataSource クラス . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 115

プロパティの説明 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 116

プロパティシート . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 118

プロパティおよび特性の取得 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 120

保護されたプロパティと特性 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 121

プロパティの補助的なサービス . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 121

プロパティの検証 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 122

目次 v

Page 6: Hyperion SQR Production Reporting 開発者ガイド ボリューム …SQR Production Reporting Studio によるBAPI のレポート作成 ..... 129 SAP R/3 のProduction Reporting

第 II 部 Production Reporting DDO によるデータへのアクセス . . . . . . . . . . . . . . . . . . . . . . . . . . . 125

第 7 章 Production Reporting DDO による SAP R/3 データへのアクセス . . . . . . . . . . . . . . . . . . . . 127

データアクセスの要素 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 127

レジストリエディタによる SAP R/3 の接続 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 127

クエリエディタによる SAP ツリー構造の表示 . . . . . . . . . . . . . . . . . . . . . . . . . 128

SQR Production Reporting Studio による BAPI のレポート作成 . . . . . . . . . . . . . 129

SAP R/3 の Production Reporting コードについて . . . . . . . . . . . . . . . . . . . . . . . . 130

第 8 章 Production Reporting DDO による SAP BW データソースへのアクセス . . . . . . . . . . . . . . . 133

SAP BW OLAP サーバへのアクセス . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 133

対応プラットフォーム . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 133

/lib ディレクトリへのファイルのコピー . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 134

SAP BW データソースの Registry.properties ファイルへの追加 . . . . . . . . . . . . . 134

SAP BW データソースのオブジェクトの階層構造 . . . . . . . . . . . . . . . . . . . . . . 135

SAP BW と Production Reporting 言語 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 137

次元のプロパティへのアクセス . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 138

次元のメンバの指定 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 139

次元のメンバを返す順序の指定 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 140

結果セットの制限 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 141

次元に使用される値セットの制限 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 143

SAP BW 変数の使用 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 144

子孫セットの戻り値 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 145

次元の祖先の検索 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 146

計算されたキー数値の使用、制限されたキー数値の使用、計算されたメンバの定義 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 147

SQR Production Reporting Studio から SAP BW データへのアクセス . . . . . . . . . 150

第 9 章 Production Reporting DDO による Essbase キューブへのアクセス . . . . . . . . . . . . . . . . . . . 153

キューブの概要 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 153

キューブの表示 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 154

Production Reporting でのキューブコマンドの使用 . . . . . . . . . . . . . . . . . . . . . . 155

SET-MEMBERS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 156

SET-GENERATIONS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 157

SET-LEVELS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 159

レポートデータの表示 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 160

測定値 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 160

別名 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 161

列順 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 161

キューブへのアクセス:例 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 163

キューブ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 164

vi 目次

Page 7: Hyperion SQR Production Reporting 開発者ガイド ボリューム …SQR Production Reporting Studio によるBAPI のレポート作成 ..... 129 SAP R/3 のProduction Reporting

Production Reporting キューブへのアクセスに必要なコード . . . . . . . . . . . 165

コードの説明 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 166

第 10 章 Production Reporting DDO による MSOLAP キューブへのアクセス . . . . . . . . . . . . . . . . . 169

キューブの概要 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 169

キューブの表示 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 170

Production Reporting でのキューブコマンドの使用 . . . . . . . . . . . . . . . . . . . . . . 171

SET-MEMBERS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 172

SET-GENERATIONS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 173

SET-LEVELS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 175

レポートデータの表示 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 177

測定値 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 177

別名 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 177

列順 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 178

キューブへのアクセス:例 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 180

キューブ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 180

Production Reporting キューブへのアクセスに必要なコード . . . . . . . . . . . 181

コードの説明 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 182

第 III 部 付録 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 185

付録 A. リソースファイルのサンプル . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 187

SAP データソースのプロパティに関する説明 . . . . . . . . . . . . . . . . . . . . . . . . . . 187

SAP データソースのメッセージ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 192

付録 B. HTTP 対応の XML DDO ドライバの使用 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 197

使用法 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 197

レジストリのエントリの定義 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 197

接続の宣言 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 198

Begin-Execute セクションでの Getdata=の使用 . . . . . . . . . . . . . . . . . . . . . . 198

別の方法 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 198

実行時の URL の指定 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 199

Production Reporting DDO クエリエディタを使用し、HTTP を介して XML ファ

イルへアクセス . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 199

制約事項 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 199

索引 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 201

目次 vii

Page 8: Hyperion SQR Production Reporting 開発者ガイド ボリューム …SQR Production Reporting Studio によるBAPI のレポート作成 ..... 129 SAP R/3 のProduction Reporting

viii 目次

Page 9: Hyperion SQR Production Reporting 開発者ガイド ボリューム …SQR Production Reporting Studio によるBAPI のレポート作成 ..... 129 SAP R/3 のProduction Reporting

第 I 部

Production Reportingについて

Production Reporting についての内容:

l Production Reporting 基礎

l Production Reporting DDO アプリケーションの作成

l Production Reporting DDO ドライバの作成

l プログラミングの考慮事項

l データソースの管理

l ユーティリティパッケージと共通ファシリティ

Production Reporting について 9

Page 10: Hyperion SQR Production Reporting 開発者ガイド ボリューム …SQR Production Reporting Studio によるBAPI のレポート作成 ..... 129 SAP R/3 のProduction Reporting

10 Production Reporting について

Page 11: Hyperion SQR Production Reporting 開発者ガイド ボリューム …SQR Production Reporting Studio によるBAPI のレポート作成 ..... 129 SAP R/3 のProduction Reporting

1Production Reporting 基礎

この章の内容

Production Reporting DDO について. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11

Production Reporting DDO ソフトウェア開発キット . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11

Production Reporting DDO インターフェイスの利点 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12

Production Reporting DDO アーキテクチャ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13

データアクセスの戦略 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17

Production Reporting DDO についてOracle's Hyperion® SQR® Production Reporting DDO は、データにアクセスするため

のオープンインターフェイスを定義し、アプリケーションでさまざまなデータソー

スのデータを抽出できるようにします。Production Reporting DDO ソフトウェア開

発キットには、JDBC を使ってリレーショナルデータベースなどのデータベース、

コンマ区切りの値ファイル(CSV)、Web 入力ストリームから XML を直接読み取

る XML データソースにアクセスするために、特殊なインターフェイスの知識を

使って、ドライバを構築する技術リソースが含まれています。

Production Reporting DDO ソフトウェア開発キットProduction Reporting DDO ソフトウェア開発キットには、COM または CORBA イ

ンターフェイスを使用するアプリケーションビジネスオブジェクトのドライバを

簡単に作成するためのクラスが含まれています。各ドライバには、特定のデータ

ソースに関する Production Reporting DDO インターフェイスの実装が含まれてい

ます。開発者は、特定のデータソースに特有の機能を実行するだけです。

Production Reporting DDO ドライバを通してデータソースにアクセスしながら、ア

プリケーションの開発者は、Production Reporting DDO ソフトウェア開発キットを

使って、そのオブジェクトへのアクセスをすばやく実装する基礎 Production

Reporting DDO クラスを拡張できます。基礎クラスには、プロパティや機能を説

明し、翻訳メッセージやデフォルトの動作を提供するのに必要なインフラストラ

クチャが含まれています。

Production Reporting DDO ソフトウェア開発キットを使用するには、次のものが必

要です。

l 基礎的な Java プログラミングのスキル

l Windows プラットフォームを備えたワークステーション

Production Reporting DDO について 11

Page 12: Hyperion SQR Production Reporting 開発者ガイド ボリューム …SQR Production Reporting Studio によるBAPI のレポート作成 ..... 129 SAP R/3 のProduction Reporting

l Symantec Visual Café、Visual J++、Visual Age for Java、JBuilder などの Java プロ

グラミングツール

Production Reporting DDO インターフェイスの利点Production Reporting DDO インターフェイスとその関係は、JDBA や ADO でのも

のに似ています。Production Reporting DDO は、混合データソースに対する使いや

すいアプリケーションレイヤインターフェイスです。Production Reporting DDO ド

ライバには、リレーショナルおよびリレーショナルでないデータベースシステム、

カスタムのビジネスオブジェクトなどを含む、任意のデータソースへの高パフォー

マンスなアクセスを可能にします。

さらに重要なのは、JDBC や ADO とは異なり、Production Reporting DDO は、ア

プリケーションとドライバ間の透過性を可能にするため、多様な双方向機能とプ

ロパティモデルを使用します。これにより、データソースの機能やプロパティに

関する事前の知識がなくても、単一のアプリケーションから混合データソースに

アクセスできます。

Production Reporting DDO には次の 3 つの利点があります。

l アプリケーションのセキュリティ: Enterprise Resource Planning(ERP)とその

他の多層アプリケーションが組み込まれています。ここでは、社員や注文請

求など、ビジネス界での実際のオブジェクトが、ビジネスオブジェクトおよ

びこれらのビジネスオブジェクトから抽出されたデータとしてモデル化され

ます。ビジネスオブジェクトを通した情報アクセスにより、アプリケーショ

ンのセキュリティが確保でき、ビジネスのルールがカプセル化されます。

l オープンシステム: アプリケーションやデータソースに関する仮定を行いま

せん。リレーショナルおよびリレーショナルではないデータソースにアクセ

スするために、クエリやレポートツールのオープンなインターフェイスが可

能になります。ビジネスオブジェクト、多次元および階層データ、XML デー

タ、任意の複雑なデータへのアクセスを可能にします。

l メタデータアクセス: には、メタデータへの豊富なアクセスが含まれており、

アプリケーションで情報オブジェクトやデータソースの機能をインタラクティ

ブに検出できます。レポートアプリケーションでは、データソースの詳しい

知識がなくても、データを選択し、クエリを構築できます。各データソース

を個別にサポートする必要がなくなるよう、一般的な方法で選択やクエリの

構築を行います。

l SDK: ドライバの実装により新しいデータソースを簡単に追加できます。ド

ライバでは、データソースの機能やプロパティが宣言されます。ほとんどの

Production Reporting DDO の機能はオプションで、ドライバでは、どの機能が

サポートされているかを指定するだけです。

l リモートデータアクセス: Production Reporting DDO サーバへのデータアクセ

スリクエストを管理し、クライアントに結果を戻すことでリモートデータア

クセスを提供します。これにより、Production Reporting DDO ドライバとクラ

イアントの配布が可能になります。

12 Production Reporting 基礎

Page 13: Hyperion SQR Production Reporting 開発者ガイド ボリューム …SQR Production Reporting Studio によるBAPI のレポート作成 ..... 129 SAP R/3 のProduction Reporting

Production Reporting DDO アーキテクチャProduction Reporting DDO には、再利用可能なソフトウェアコンポーネントの

JavaBeans 仕様に適合した Java インターフェイスが備わっています。他のプログラ

ミング言語から Production Reporting DDOへのアクセスは、Component Object Model

(COM)および Common Object Request Broker Architecture(CORBA)オブジェク

トアクセスメソッドを使って行います。インターフェイスは、利用可能なデータ

ソースを追跡し、メタデータとデータを取得するためにデータソースに接続し、

結果を返すアクセスを提供します。Production Reporting DDO には、データベース

だけでなく、データを保持するオブジェクトへのアクセスも含まれています。

図 1 Production Reporting DDO アーキテクチャ

データソース接続の確立Production Reporting DDO には、データソース接続を確立するのに必要なリソース

が含まれています。これらのリソース(「インターフェイス」とも呼ばれる)は、

以下に説明するように、Production Reporting DDO インターフェイスのコンポーネ

ントです。

l DataSourceManager: アプリケーションを見つけ、データソースを読み込む永

続的なレジスタに利用可能なデータソースを保持します。

新しいデータソースの登録には、データソースの名前、実装クラス(ドライ

バ)の名前、接続文字列の保存が含まれます。同じドライバで、同じ種類の

複数のデータソースを使用することができます。

l DataSource: データソースの機能とプロパティが示され、これによりアプリ

ケーションでデータソースの接続を作成できるようになります。データソー

スへの接続を開くのに必要なプロパティなど、特定のプロパティとこのデー

タソースの機能を説明するプロパティシート(PropertySheet)が維持されま

す。

Production Reporting DDO アーキテクチャ 13

Page 14: Hyperion SQR Production Reporting 開発者ガイド ボリューム …SQR Production Reporting Studio によるBAPI のレポート作成 ..... 129 SAP R/3 のProduction Reporting

データソースは、異なるクエリ言語を実装できます。クエリ言語のデータソー

スサポートはオプションです。クエリ言語をサポートしないデータソースで

も、簡単なセレクタインターフェイスを通してデータのフィルタリングをサ

ポートし、取得されるデータの量を軽減することができます。

l 接続: Production Reporting DDO のメインインターフェイスです。メタデータ

とデータを取得するメソッドが含まれています(メタデータは、オブジェク

トの階層、オブジェクトが提供するフィールド、パラメータを説明します)。

データは、コマンドの実行、プロシージャの呼び出し、またはオブジェクト

に名前を付けてそのデータをリクエストすることで、データソースから取得

できます。

図 2 データソース接続の確立

トランザクションのサポートトランザクションインターフェイスには、トランザクション、コミット、ロール

バックを開始するメソッドが含まれています。トランザクションのサポートには

データソースは必要ありませんが、データソースは、トランザクションがサポー

トされているかどうかを示します。トランザクションのスコープは、1 つのデー

タソースです。Production Reporting DDO は、複数のデータソース間のトランザク

ションの調整は行いません。

メタデータの取得データソースには、データオブジェクトとプロシージャを含むスキーマが維持さ

れます。データソースの必要条件により、アプリケーションでは、メタデータの

取得に、Production Reporting DDO 接続インターフェイスの適切なメソッドが使用

されます。

l データオブジェクト: 要求された時点でデータを提供できる任意のオブジェ

クト用の一般抽象化です。これには、テーブル、ビュー、ファイル、ビジネ

14 Production Reporting 基礎

Page 15: Hyperion SQR Production Reporting 開発者ガイド ボリューム …SQR Production Reporting Studio によるBAPI のレポート作成 ..... 129 SAP R/3 のProduction Reporting

スオブジェクトが含まれます。このメタデータは、確立されたデータソース

接続を通して利用できるすべてのデータオブジェクトを説明します。

l プロシージャ: データソースで実行される呼び出し可能なプロシージャまた

はメソッド用の一般抽象化です。これには、保存されたプロシージャ、メソッ

ド、ビジネスオブジェクトが含まれます。プロシージャには、パラメータ、

戻り値を含めることができ、結果セットを加えることも可能です。

図 3 メタデータの取得

データの取得Production Reporting DDO では、次の 3 つの方法を使って、データを取得できま

す。

l コマンドの実行: レポートアプリケーションでは、コマンドテキストと関連

パラメータを渡すことで、コマンドが実行されます。コマンドには、データ

ソースが認識できる文とすべてのパラメータが含まれます。結果は、Rowset

インターフェイスを介して戻されます。

結果は Rowset です。コマンドは、データソースが認識できるものなら何でも

構いません。例えば、SQL を受け入れることが可能であることや認識できる

SQL のレベルを示す場合があります。これにより、レポートアプリケーショ

ンで SQL を認識する任意のデータソースに標準の SQL を送信できるほか、

データソース特定のコマンドを渡すことができます。

l getData の使用: 通常、コマンド言語をサポートしないデータソースは、情報

オブジェクトからデータを返すことができます。アプリケーションが必要な

のはオブジェクトの名前だけです。アプリケーションにより、データが要求

された情報オブジェクトの名前が付けられ、オプションで複数の選択条件が

指定されます。データソースにより、Rowset インターフェイスとしてデータ

が返されます。

l プロシージャの呼び出し: プロシージャインターフェイスにより、パラメー

タ化されたオブジェクト、リモートプロシージャの呼び出し、保存されたデー

Production Reporting DDO アーキテクチャ 15

Page 16: Hyperion SQR Production Reporting 開発者ガイド ボリューム …SQR Production Reporting Studio によるBAPI のレポート作成 ..... 129 SAP R/3 のProduction Reporting

タベースプロシージャ、プロシージャのように動作する任意のオブジェクト

が抽出されます。アプリケーションでは、実行するプロシージャが指定され、

IN および IN/OUT パラメータが供給されます。結果オブジェクトには、ステー

タスや複数の結果セットを示す任意の数の Rowsetオブジェクトを含めること

ができます。このインターフェイスにより、アプリケーションが出力パラメー

タ、戻り値、任意の数、Rowset インターフェイスを介した rowset を取得でき

ます。

結果の処理CallResults インターフェイスを使用すると、プロシージャ呼び出しの結果にアク

セスできます。これには、戻り値、出力パラメータ、プロシージャによって返さ

れる Rowset オブジェクトが含まれます。

Rowset インターフェイスは、Production Reporting DDO で結果を処理するメイン

インターフェイスです。一度に 1 行の結果を取得するメソッドが提供されます。

各行には Field オブジェクトが含まれます。これらは、抽象 Field クラスから派生

された型の決まったオブジェクトです。Rowset、Row、Field オブジェクトはすべ

て自己記述型です。数、型、サイズ、保持するデータ項目の名前などが含まれま

す。

Rowset は、転送のみ、読み取り専用の行セットを示します。メモリにセット全体

をキャッシュすることはありません。次の行が取得されると、前の行は破棄され

る可能性があります。行は、取得される時だけ、データベースから取得すること

ができます。これにより、Rowset 実装を使用すると、ある時点でメモリに少数の

行だけを保持できるので、サイズの大きな結果を処理することができるようにな

ります。

Field オブジェクトには、ランタイムメタデータが含まれます。このメタデータ

は、オブジェクトメタデータを参照せずに、フィールド値を処理するのに十分で

す。

ドライバを使った Production Reporting DDO インターフェイスの実装アプリケーションのインターフェイスを定義するのに加え、Production Reporting

DDO には、Production Reporting DDO ドライバ用のプラグアンドプレイアーキテ

クチャが備わっています。各ドライバには、データソースに関する Production

Reporting DDO インターフェイスの実装が含まれています。

Production Reporting DDO を設計する場合の主な目的は、できる限り簡単な

Production Reporting DDO ドライバを記述するタスクを作ることです。

l Production Reporting DDO には、 小のインターフェイスセットを実装するド

ライバのみが必要です。多くのインターフェイスはオプションです。特に、

Production Reporting DDO データソースでは、クエリ言語やプロシージャ呼び

出しをサポートする必要はなく、トランザクションのサポートも必要ありま

せん。

16 Production Reporting 基礎

Page 17: Hyperion SQR Production Reporting 開発者ガイド ボリューム …SQR Production Reporting Studio によるBAPI のレポート作成 ..... 129 SAP R/3 のProduction Reporting

l Production Reporting DDO ドライバにより、Capabilities リソースファイルでそ

の機能が宣言されます。コードは必要ありません。

l Production Reporting DDO には、すべてのインターフェイスを実装する基礎ク

ラスが含まれています。これらのクラスには、デフォルト動作以外の動作も

備わっており、Production Reporting DDO メタデータを管理する全機能があり

ます。また、共通コードも多数含まれています。この共通コードがないと、

すべてのドライバで機能を実装する必要が生じます。

l Production Reporting DDO には、例外と翻訳エラーメッセージのフレームワー

クも備わっています。メッセージをリソースファイルで簡単に整理し、

Production Reporting DDO SDK に付属しているツールを使って管理できます。

l Production Reporting DDO には、メッセージを記録したり、情報のタイミング

を取ったりするツールも含まれています。ドライバにより、デバッグ情報を

簡単に取得できます。

ドライバの開発者は、Production Reporting DDO API を通して利用するデータソー

スに特有のコードと機能のみを記述するだけです。

ドライバマネージャ

Production Reporting DDO インターフェイスには、アプリケーションで利用可能な

データソースを一覧表示し、ダイナミックに選択するためのドライバマネージャ

が備わっています。Production Reporting DDO は、JDBC を使ったリレーショナル

データベースのドライバやコンマ区切りの値ファイル(CSV)のドライバを含め

ることで、詳細な設定を必要としないサポートを提供します。さらに、Production

Reporting DDO には、XML を通してインテリジェントなデータアクセスと交換を

可能にする XML ドライバも含まれています。このドライバを使用すると、任意の

Web リソースや入力ストリームから XML を直接読み取ることができます。

Production Reporting DDO ドライバの開発者は、データソースに特有の機能を実装

するだけです。SDK には、COM または CORBA インターフェイスを使用するアプ

リケーションビジネスオブジェクトのドライバを簡単に作成するためのクラスが

含まれています。

データアクセスの戦略多くの異なるデータソースで統一されたデータアクセスを提供するため、Production

Reporting DDO インターフェイスは、アプリケーションが各データソースについ

て知る必要がないという戦略を採用しています。

l 高レベルの抽象化: Production Reporting DDO インターフェイスは、データア

クセスの一定のパターンを反映します。アプリケーションにより、ログオン

プロパティを指定して、データソースへの接続が確立されます。接続により、

アプリケーションでのメタデータの取得、データの取得、トランザクション

の実行が可能になります。

メタデータは、情報オブジェクトを説明します。これらのオブジェクトは、

スキーマでグループ化され、階層として整理されます。これらのオブジェク

トからのデータは、次の 3 つの方法のいずれかで取得できます。まず、アプ

リケーションにより、データソースにコマンドとパラメータを送信できます。

データアクセスの戦略 17

Page 18: Hyperion SQR Production Reporting 開発者ガイド ボリューム …SQR Production Reporting Studio によるBAPI のレポート作成 ..... 129 SAP R/3 のProduction Reporting

コマンドでは、クエリ言語を使って、1 つまたは複数の情報オブジェクトから

データを選択できます。次に、アプリケーションでは、リモートプロシージャ

を実行できます。さらに、アプリケーションでは、情報オブジェクトを選択

し、提供されるフィールドの一部またはすべてを選択し、選択条件や順番を指

定できます。

Production Reporting DDO インターフェイスでは、実装の詳細は隠されます。

接続やコマンドのプーリング、先読み取り、キャッシュなどのパフォーマン

スの 適化は、バックグラウンドで行われ、アプリケーションからは透過的

になります。

l 記述的なプロパティと機能: 共通の基準を再ソートすることなく、多くの異

なるデータソースで統一されたデータアクセスを提供するため、Production

Reporting DDO では、ドライバがどの機能がデータソースに関連し、どの機能

が実装されるかを選択することができます。例えば、ドライバにより、SQL

コマンドのサポートが宣言され、サポートする SQL のバージョンが指定され

ます。ドライバにより、リソースファイルでその機能が宣言されます。機能

の説明にコードを記述する必要はありません。ドライバの記述プロセスが簡

略化されます。アプリケーションでは、Production Reporting DDO データソー

スインターフェイスを通して機能を問い合わせることができます。

機能に加え、ドライバではプロパティも宣言されます。例えば、ドライバで

は、ログオンで使用されるプロパティ、必要であるかどうかを指定するプロ

パティ、セキュリティ保護されているかどうかを指定するプロパティが宣言

されます。レポートアプリケーションでは、データソースの機能をダイナミッ

クに採用できます。

l 豊富なメタデータ: Production Reporting DDO では、アプリケーションによ

り、データソースへの接続を通してアクセス可能な情報オブジェクトをすべ

て検出できます。オブジェクトに関する情報、その型、整理される方法など

が含まれます。プロシージャ、入出力パラメータ、実行された場合に提供さ

れる結果が説明されます。

l データ型のマッピング: Production Reporting DDO では、データベースのデー

タ型が Production Reporting Field オブジェクトにマッピングされます。Field オ

ブジェクトは抽象オブジェクトで、これから特定の型の Field オブジェクトが

生成されます。Field オブジェクトは、名前、サイズ、値を持ちます。フィー

ルドの値はヌルでも構いません。Production Reporting DDO には、Text、Date、

Number、Integer、Decimal、Long Binary、Object、Row、Rowset という型の決

まったフィールドが含まれています。

Production Reporting DDO には、自動型変換機能が備わっています。例えば、

基本の型のほとんどでは、値をテキストに、またはテキストを値に変換する

機能がサポートされています。すべての数値フィールドは、Number フィール

ドの特別な型です。これにより、アプリケーションで、すべての数値データ

を均等に扱い、値を小数に変換することなどが可能になります。アプリケー

ションでは、どの Production Reporting DDO 型が認識されるかを選択できま

す。データソースのネイティブなデータ型を知る必要はありません。

l 階層の使用: Production Reporting DDO には、階層構造のサポートにより、優

れた柔軟性が備わっています。これは、メタデータとデータの両方に適用さ

れます。Production Reporting DDO では、任意の階層レベルでビジネスインテ

リジェンス(BI)オブジェクトを整理するデータソースがサポートされます。

18 Production Reporting 基礎

Page 19: Hyperion SQR Production Reporting 開発者ガイド ボリューム …SQR Production Reporting Studio によるBAPI のレポート作成 ..... 129 SAP R/3 のProduction Reporting

BI オブジェクトのフィールドは、階層の次元を示すことができます。これは、

多次元データベースでは普通です。次元をトラバースし、レベルやメンバに

関する情報を取得できます。また、メンバを使って、オブジェクトからデー

タを選択できます。

Production Reporting DDO では、データがフラットであるか、標準化されてい

るかは想定されていません。Rowset は、複雑なオブジェクトを保持できます。

特に、Rowset には、さらに追加の Rowset オブジェクトを保持できます。

l プロシージャの使用: Production Reporting DDO では、プロシージャの概念が

サポートされています。これにより、データソースでそれらのオブジェクト

をテーブルではなくプロシージャとして公開し、クエリ言語なしでパラメー

タのインターフェイスを定義し、複数 Rowset の取得を可能にします。

l 自己記述型の結果オブジェクト: Production Reporting DDO の結果オブジェク

トは自己記述型です。アプリケーションでは、コマンドやプロシージャの実

行結果として返された Rowset オブジェクトの数を決定できます。Rowset オブ

ジェクトはそのフィールドを説明します。フィールドは、その名前、型、サ

イズ、精度を示します。

l クエリとレポートの機能: クエリやレポートの機能を重視することで、Data

Access インターフェイスが簡素化され、簡単な実装を可能にしました。Rowset

オブジェクトは読み取り専用です。Rowset のキャッシュでは複雑な操作が可

能であるため、双方向のスクローリングや更新を可能にする必要性やデータ

ベースとの同期が必要なくなります。データベースの更新はコマンドやプロ

シージャの実行によりサポートされています。

データアクセスの戦略 19

Page 20: Hyperion SQR Production Reporting 開発者ガイド ボリューム …SQR Production Reporting Studio によるBAPI のレポート作成 ..... 129 SAP R/3 のProduction Reporting

20 Production Reporting 基礎

Page 21: Hyperion SQR Production Reporting 開発者ガイド ボリューム …SQR Production Reporting Studio によるBAPI のレポート作成 ..... 129 SAP R/3 のProduction Reporting

2Production Reporting DDOア

プリケーションの作成

この章の内容

Production Reporting DDO API について . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21

簡単なコード例 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21

データソースの管理 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22

接続の確立 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27

機能の検出. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30

メタデータの取得 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32

データの要求. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41

Production Reporting DDO API についてProduction Reporting DDO API は、データソース、接続、情報オブジェクト、結果

セット、メタデータを表す Java インターフェイスを定義します。アプリケーショ

ンは、利用できるデータソースを列挙し、これらへの接続を作成します。また、

Production Reporting DDO API は、アプリケーションを使ったデータの要求や結果

の処理を可能にし、データソースに接続する複数のドライバをサポートできるド

ライバマネージャを含んでいます。

この章では、データソースの検索、接続、アクセス、さらに取得したデータの処

理を通じた手順を示すコード例を説明します。また、Production Reporting DDO が

これらの処理をサポートし、維持する方法についても説明します。

簡単なコード例プログラム ex1.sqr は、データソース検索の簡素化、接続の確立、データの取得と

処理を示します(コードでは、エラーチェックの一部が省略されています。)返さ

れるフィールドは、暗黙的にテキストに変換されます。このプログラムは、返さ

れる列の名前を取得するために、Rowset が自己記述的になっている利点を活かす

方法を示します。

Java パッケージ com.sqribe.accessは、Production Reporting DDO API を実装し

ます。

プログラム ex1.sqrimport com.sqribe.access.*;...try { DataSource ds = DataSourceManager.getDataSource("accounting");

Production Reporting DDO API について 21

Page 22: Hyperion SQR Production Reporting 開発者ガイド ボリューム …SQR Production Reporting Studio によるBAPI のレポート作成 ..... 129 SAP R/3 のProduction Reporting

ds.getPropertySheet().setProperty("user", "scott"); ds.getPropertySheet().setProperty("password", "tiger"); Connection c = ds.open(); Rowset rs = c.getData(c.getSchemaObject("Employee")); System.out.println("<table><tr>"); // print headings for (int i = 0; i < rs.getFieldCount(); i++) System.out.println("<td>" + rs.getField(i).getName() + "</td>"); while (rs.next()) { // print data System.out.println("</tr><tr>"); for (int i = 0; i < rs.getFieldCount(); i++) System.out.println("<td>" + rs.getField(i) + "</td>"); } System.out.println("</tr></table>"); c.close(); // close the connection to the data source

データソースの管理DataSourceManager は、Registry と呼ばれる利用可能なデータソースのキャッシュ

を管理します。リストには、データソースが名前で示されます。Registry を使用す

ると、DataSourceManager がデータソースを見つけてインスタンスを作成し、アプ

リケーションに DataSource インターフェイスが返されます。

名前を使ってデータソースを見つけ、DataSource インターフェイスを取得するた

め、DataSourceManager.getDataSource()メソッドというアプリケーションが呼

び出されます。次に例を示します。

DataSource ds;ds = DataSourceManager.getDataSource("accounting");if (ds == null) { System.out.println("The accounting data source is unavailable.");

このコード例では、DataSourceManager により、Registry で「accounting」という

データソースが検索されます。ドライバが見つかると、DataSourceManager によっ

てこのデータソースのドライバが読み込まれ、DataSource インターフェイスが返

されます。Registry でデータソースが見つからない場合、または Registry のデータ

ソースエントリが正しく設定されていない場合は、ヌル参照が返されます。

注:

同じ名前で getDataSource()を複数呼び出すと、同じオブジェクトが返されま

す。

現在のレジストリで利用可能なデータソースのリストを取得するには、

DataSourceManage.getDataSources()メソッドを使用できます。

import com.sqribe.access.*;import java.util.Enumeration;...Enumeration enum;enum = DataSourceManager.getDataSources();while (enum.hasMoreElements()) { DataSource ds = (DataSource)enum.nextElement(); System.out.println(ds.getName());

22 Production Reporting DDO アプリケーションの作成

Page 23: Hyperion SQR Production Reporting 開発者ガイド ボリューム …SQR Production Reporting Studio によるBAPI のレポート作成 ..... 129 SAP R/3 のProduction Reporting

デフォルトで、レジストリには、ファイル Registry.propertiesに保存されるエ

ントリが含まれます。このファイルは、propertiesフォルダにあります。

レジストリファイルこの項は、複数のレジストリを管理する方法について説明します。常にデフォル

トのレジストリ(ファイル Registry.properties)を使用する場合は、この項を

スキップして、24 ページの「新規データソースの定義」へ進んでください。

Registry は、DataSourceManager によって管理されるデータソースのキャッシュで

す。DataSourceManager を 初に使用する時には、ファイルから Registry が読み込

まれます。デフォルトの Registry ファイルは、Registry.propertiesです。この

ファイルは、Production Reporting DDO propertiesフォルダにあります。

DataSourceAdmin クラスを使用して、別のソースから Registry を読み込むこともで

きます。このクラスにより、ファイルまたは InputStream から DataSource 定義を

読み込むための静的なメソッドを利用できます。

レジストリファイルには、登録されたデータソースとその短い説明、実装クラス

の名前、接続文字列のリストが含まれます。

同じ DataSource 実装クラスを使用して、複数のデータソースを実装できます。そ

れぞれのデータソースは、別々に登録されます。

次のコード例は、MyDataSources.propertiesというファイルから Registry を読

み込みます。このファイルは、propertiesフォルダにあります。

try {DataSourceManager.getDataSourcesAdmin().load("MyDataSources");} catch (DataAccessException e) { e.printStackTrace();

レジストリファイルの.properties拡張子が使用されるので、load()呼び出しで

は指定しないことに注意してください。また、ほとんどの Production Reporting

DDO 呼び出しと同じく、DataAccessException により失敗することがあります。

propertiesフォルダにあるプロパティファイルからのレジストリエントリを読み

込むのに加え、DataSourcesAdmin クラスを使用すると、任意のファイルや

InputStream からレジストリエントリを読み込むこともできます。複数の読み込み

を行うことができ、この場合、読み込まれたレジストリエントリは累積されます。

DataSourcesAdmin クラスを使用して、ファイルや OutputStream に現在のレジスト

リを保存することもできます。

DataSourceManagerAdmin クラス

DataSourceManager は、DataSourceManagerAdmin を使って、次のファイル名にあ

るプロパティを管理します。

com_sqribe_access_DataSourceManager_Properties

このファイルは、Production Reporting DDO propertiesフォルダにあります。

このプロパティファイルにあるプロパティは、DataSources.files:

DataSources.files = <list of data sources property files>

データソースの管理 23

Page 24: Hyperion SQR Production Reporting 開発者ガイド ボリューム …SQR Production Reporting Studio によるBAPI のレポート作成 ..... 129 SAP R/3 のProduction Reporting

次に例を示します。

DataSources.files = Registry MyDataSources

DataSourceManagerAdmin を使用してこれらの名前を列挙し、さらに

DataSourcesAdmin.load()呼び出しでそれらを使用することができます。これで

アプリケーションが複数のレジストリを扱えるようになります。例えば、制限さ

れたレジストリには少数のデータソースのみが含まれ、パワーユーザのレジスト

リには利用できるすべてのデータソースが含まれているとします。クラスを使用

すると、管理ツールで利用可能なレジストリのリストを取得できるようになりま

す。

新規データソースの定義レジストリファイルでデータソースを定義します。Production Reporting DDO SDK

に付属のツールを使用するか、レジストリファイルを直接編集できます。

レジストリファイルの編集による新規データソースの作成

レジストリファイルに新しいデータソースを追加する方法については、次の例を

見てください。この例では、HelpDesk というデータソースがデフォルトのレジス

トリファイル Registry.propertiesに追加されています。HelpDesk データソー

スは、Oracle データベースです。このデータベースには、Oracle の JDBC ドライバ

を使用する Production Reporting DDO JDBC Access ドライバを通してアクセスしま

す。

次の手順に従います。

l CLASSPATH に追加するパッケージの指定

l registry.propertiesファイルの編集

l データソースの名前の指定

l Production Reporting DDO ドライバの指定

l JDBC ドライバの読み込みの指定

l JDBC URL の指定

ä 新規データソースをレジストリファイルに追加するには、次の手順に従います。

1 CLASSPATH に追加するパッケージを指定します。

DBC Access Production Reporting DDO ドライバを使用する JDBC を介してデータ

ベースにアクセスします。このドライバは、パッケージ com.sqribe.jdbcaccに

実装されており、ファイル ddo11.zipで配布されています。このファイルが

CLASSPATH 環境変数の一部でない場合は、CLASSPATH にここで追加します。

この例では、Oracle に接続するために JDBC ドライバを使用しています。本書の

記述時点では、Oracle は、「classes111.zip」というファイルで JDBC ドライバを配

布しています。このファイルには、JDBC ドライバを実装するパッケージ

oracle.jdbc.driverが含まれています。CLASSPATH の一部としてこの ZIP ファ

イルを含めます。

2 registry.propertiesファイルを編集します。

24 Production Reporting DDO アプリケーションの作成

Page 25: Hyperion SQR Production Reporting 開発者ガイド ボリューム …SQR Production Reporting Studio によるBAPI のレポート作成 ..... 129 SAP R/3 のProduction Reporting

メモ帳などのテキストエディタを使用して、Registry.propertiesファイルを編

集します。次の行は、ファイルの終わりに追加できる HelpDesk データソース用の

エントリです。

HelpDesk.desc=Technical Support HelpDeskHelpDesk.class=com.sqribe.jdbcacc.JDBCDataSourceHelpDesk.lib=oracle.jdbc.driver.OracleDriverHelpDesk.load=HelpDesk.conn=jdbc:oracle:oci7:@TechSupport.World

3 データソースの名前を指定します。

上の例では、データソースの名前「HelpDesk」がプロパティ名の一部になってい

ます。

表 1 HelpDesk データソースのプロパティ

プロパティ 目的

HelpDesk.desc このデータソースの説明。

HelpDesk.class Production Reporting DDO ドライバのクラス名。これは、DataSource インターフェ

イスを実装する Java クラスの名前です。

HelpDesk.lib このデータソースの初期化の一部として読み込む Java クラスのリスト。

HelpDesk.load このデータソースの初期化の一部として読み込むネイティブライブラリのリスト。

HelpDesk.conn Production Reporting DDO ドライバによりサポートされている接続文字列。JDBCAccess ドライバの場合は、JDBC URL となります。

4 Production Reporting DDO ドライバを指定します。

Production Reporting DDO は、DataSource インターフェイスを実装する Java クラス

です。JDBC Access では、このクラスは com.sqribe.jdbcacc.JDBCDataSourceで

す。このクラスは、ddo11.zip ファイルにパッケージ化されています。

HelpDesk.classプロパティの値としてクラスの名前を指定すると、DriverManager

でこの Production Reporting DDO ドライバを開始することができます。

5 JDBC ドライバの読み込みを指定します。

Production Reporting DDO JDBC Access は、任意の JDBC ドライバでリレーショナ

ルデータソースにアクセスする場合にも使用できます。リレーショナルデータソー

スの URL を指定します。Java JDBC ドライバマネージャは、この URL を使って、

JVM クラスローダーによってメモリに読み込まれたドライバから適切な JDBC ド

ライバを見つけます。

メモリに正しい JDBC ドライバを読み込むには、適切なドライバを使用している

ことを確認しなければならない場合があります。Production Reporting DDO を使用

すると、Java クラスのリストを指定して、HelpDesk.libプロパティに読み込むこ

とができます。ここで説明する例では、Oracle JDBC ドライバのクラスの名前

oracle.jdbc.driver.OracleDriverを指定しています。このドライバだけを読み

込むことで、JDBC ドライバマネージャが HelpDesk データソースの JDBC URL を

正しく変換できるようになります。

6 JDBC URL を指定します。

データソースの管理 25

Page 26: Hyperion SQR Production Reporting 開発者ガイド ボリューム …SQR Production Reporting Studio によるBAPI のレポート作成 ..... 129 SAP R/3 のProduction Reporting

HelpDesk.connにより、データソース特有の接続文字列を指定します。Production

Reporting DDO JDBC Access ドライバの場合は、JDBC URL となります。URL は常

に jdbc:で始まります。その後の URL では、Oracle の選択、特定の Oracle データ

ベースと接続方法の識別が指定されています。URL の作成について詳しくは、

JDBC ドライバのマニュアルを参照してください。

次に、Sun JDBC-ODBC ブリッジを使った別の例を示します。この例の Registry に

より、Sun JDBC-ODBC ブリッジを使用するための HelpDesk データソースが設定

されます。この例では、ODBC データソースが名前 HelpDeskで設定されている

と想定しています。

HelpDesk.desc=Technical Support HelpDeskHelpDesk.class=com.sqribe.jdbcacc.JDBCDataSourceHelpDesk.lib=sun.jdbc.odbc.JdbcOdbcDriverHelpDesk.load=HelpDesk.conn=jdbc:odbc:HelpDesk

HelpDesk.classプロパティは変更されませんので注意してください。Production

Reporting DDO JDBC Access ドライバのままです。HelpDesk.conn URL は、

HelpDeskの DNS(データソース名)を使って odbcを指定するために変更されて

います(名前は HelpDeskである必要はありません。この ODBC データソースに

付けた任意の名前で構いません)。HelpDesk.libにより、Sun JDBC-ODBC ブリッ

ジドライバが読み込まれます。

ランタイムでの新規データソースの作成

Data Source Manager は、add()メソッドを使ってアプリケーションが新しいデータ

を追加するデータソースのレジストリを管理します。DataSourceManager クラスの

getRegistry()メソッドを使って、このオブジェクトへの参照を取得できます。

下のコードは、HelpDesk データソースを定義する例です。

// Create a data source DataSourceManager.getRegistry().add( "HelpDesk", // name " Technical Support HelpDesk ", // desc "com.sqribe.jdbcacc.JDBCDataSource", // class "oracle.jdbc.driver.OracleDriver", // lib "", // load " jdbc:oracle:oci7:@TechSupport.World "); // conn

HelpDeskデータソースが完全に登録されたら、次の呼び出しにより DataSource

インターフェイスが取得されます。

DataSourceManager.getDataSource(HelpDesk)

ヒント:

Registry クラスの add()メソッドを使ってデータソースを読み込むと

Registry.propertiesの自動読み込みが妨害されることがあります。これは、レ

ジストリが空の場合にのみ Registry.propertiesが読み込むためです。

Registry.propertiesを読み込むには、次のオプションのいずれかを使用しま

す。

26 Production Reporting DDO アプリケーションの作成

Page 27: Hyperion SQR Production Reporting 開発者ガイド ボリューム …SQR Production Reporting Studio によるBAPI のレポート作成 ..... 129 SAP R/3 のProduction Reporting

l 特定のデータソースを読み込むには、

DataSourceManager.getDataSourcesAdmin().load(Registry)を使用しま

す。

l DataSourceManager クラスの getDataSource()または getDataSources()メ

ソッドを呼び出すことで、新しいデータソースを追加する前に、自動的に読

み込ませます。新しいデータソースを追加する前に(レジストリが空の間に)

これらのメソッドを呼び出すと、Registry.propertiesが読み込まれます。

接続の確立 データソースが読み込まれ、DataSource インターフェイスを取得したら、open()

呼び出しを使ってデータソースへの接続を確立できます。この呼び出しにより、

接続インターフェイスが返されます。

まず、このデータソースに接続するのに必要なログインプロパティの設定をしま

す。通常、これらは userおよび passwordプロパティです。ただし、Production

Reporting DDO では、これを絶対的なケースとしては想定していません。Production

Reporting DDO を使用すると、データソースでログオンプロパティを指定し、ア

プリケーションで実行時にこれらのプロパティを検出することができます。

下のコードは、Production Reporting DDO により、userおよび passwordプロパ

ティが設定され、open()呼び出しによって接続が確立される方法を示す例です。

import com.sqribe.access.*;

try { DataSource ds = DataSourceManager.getDataSource("accounting"); if (ds == null) ... ds.getPropertySheet().setProperty("user", "scott"); ds.getPropertySheet().setProperty("password", "tiger"); Connection c = ds.open();} catch (Exception e) { e.printStackTrace();

データソースを見つけて DataSource インターフェイスを取得した後で、userおよ

び passwordプロパティを設定しています。この例では、DataSource PropertySheet

を取得し、PropertySheet クラスの setProperty()メソッドを使って、userおよび

passwordプロパティを設定しています。これらの呼び出しは、データソースが

userまたは passwordプロパティを認識できない場合は、PropertyException によ

りエラーとなることに注意してください。アプリケーションでは、この例外を扱

える準備をしておくことが必要です。PropertySheet および PropertyException クラ

スは、一般的なユーティリティパッケージで定義されます

(com.sqribe.comutil)。このパッケージには、Production Reporting DDO で使用

される汎用クラスが含まれています。

必要なログオンプロパティを設定した後で、open()呼び出しを使って、接続を確

立しています。open()呼び出しには、引数は含まれません。この呼び出しによ

り、接続インターフェイスが返されます。アプリケーションでは、このインター

フェイスを使って、データソースにアクセスします。

open()呼び出しがエラーになると、DataAccessException が発生します。

アプリケーションでは、userおよび passwordが、任意のデータソースのログオ

ンプロパティであるとは想定できません。

接続の確立 27

Page 28: Hyperion SQR Production Reporting 開発者ガイド ボリューム …SQR Production Reporting Studio によるBAPI のレポート作成 ..... 129 SAP R/3 のProduction Reporting

ログオンプロパティの処理この項では、特定のデータソースのログオンプロパティをチェックする場合につ

いて説明します。

Production Reporting DDO データソースとは、従来の DBMS に限らないデータを

保持するアプリケーションオブジェクトです。このため、ログオンにユーザ名と

パスワードのみが必要であると限定することはできません。データソースには、

接続を確立にするために、任意の項目を必要とするものがあります。これらの項

目は、アクセスされるデータとデータにアクセスするユーザを識別するものであ

れば何でも構いません。これらの項目には、例を指定するための、アカウント番

号、フォルダ名、識別コード、証明書とデジタル署名が含まれます。

インタラクティブなアプリケーションでは、実行時にデータソースからログオン

プロパティのリストが取得され、これらのプロパティ情報を入力するよう促すメッ

セージが表示されます。それぞれのプロパティでは、プロパティの説明、種類、

有効な値、プロパティが必要であるかどうか、セキュリティ保護されているかど

うかなどの情報が取得されます。プロパティはグループ化することもできます。

例えば、logonプロパティは、すべてのログオンプロパティをグループ化します。

特定のデータソースの既存情報を基に、データソースにプロパティを渡すために

バッチアプリケーションを記述することができます。前の例では、userおよび

passwordプロパティが使用されていました。

PropertySheet クラスには、有効なプロパティで説明される PropertyDescription オ

ブジェクトへのアクセスが含まれています。PropertyDescription オブジェクトは、

グループ化されたプロパティまたはネストされたプロパティを示すためにネスト

することができます。

まず、プログラム ex2.sqr を検討してみましょう。

プログラム ex2.sqrimport com.sqribe.access.*;import com.sqribe.comutil.*;public class Example { public static void main(String[] args) { try { DataSource ds = DataSourceManager.getDataSource("accntng"); PropertySheet prop = ds.getPropertySheet(); list(prop.getPropertyDescription("logon")); } catch (Exception e) { e.printStackTrace(); } } static void list(PropertyDescription pd) { PropertyDescription l[] = pd.getIndexes(); if (l != null) for (int x = 0; x < l.length; x++) list(l[x]); else System.out.println(pd.getName());}

コード

DataSource ds = DataSourceManager.getDataSource("accntng");

28 Production Reporting DDO アプリケーションの作成

Page 29: Hyperion SQR Production Reporting 開発者ガイド ボリューム …SQR Production Reporting Studio によるBAPI のレポート作成 ..... 129 SAP R/3 のProduction Reporting

説明

アカウンティングデータソースを見つけ、そのデータソースへの DataSource イン

ターフェイスを取得します。

コード

PropertySheet prop = ds.getPropertySheet();

説明

DataSource PropertySheet オブジェクトを取得します。

コード

list(prop.getPropertyDescription("logon"));

説明

PropertySheet の getPropertyDescription()メソッドを呼び出し、logon用の

PropertyDescription オブジェクトを取得します。これは、ログオンプロパティをグ

ループ化したものです。次に、Example クラスの list()メソッドを呼び出し、

PropertyDescription を一覧表示します。PropertyDescription は、追加

PropertyDescription オブジェクトをグループ化するためにネストすることができま

す。

コード

PropertyDescription l[] = pd.getIndexes(); if (l != null) for (int x = 0; x < l.length; x++) list(l[x]); else System.out.println(pd.getName());

説明

list()メソッドでは、getIndexes()を呼び出し、ヌルであるかどうかをチェック

することで、ネストされている PropertyDescription オブジェクトがあるかどうか

がチェックされます。ヌル値であると、この PropertyDescription のネストされた

PropertyDescription オブジェクトはないことを意味します。

ネストされたオブジェクトがある場合は、ネストされているオブジェクトごとに

list()が再帰的に呼び出されます。

再帰的でない場合は、例のコードによりプロパティ名が出力されます。再帰トラ

バーサルにより、logonにネストされているすべてのプロパティが検出されます。

アプリケーションでは、各プロパティの値を入力するように促すメッセージを表

示できます。これには、アプリケーションで、PropertyDescription オブジェクトか

らの追加属性が取得されます。これらの属性により、ユーザからログオン属性を

取得し、それを Production Reporting DDO に渡すためにアプリケーションが必要

とする情報が取得されます。このような属性については、表 2 を参照してくださ

い。

接続の確立 29

Page 30: Hyperion SQR Production Reporting 開発者ガイド ボリューム …SQR Production Reporting Studio によるBAPI のレポート作成 ..... 129 SAP R/3 のProduction Reporting

表 2 PropertyDescription オブジェクトから派生する属性

属性 目的

Label このプロパティの情報を入力するよう促すメッセージを表示します。

Description ヘルプメッセージとしてユーザに表示されるプロパティの説明。

Required このプロパティの値をユーザが入力する必要があるかどうか。

Secured このプロパティのセキュリティが保護されているかどうか。これは、画面にエコーしない、暗号化される必要のあるプロパティ用です(例えば、パスワードなどに使用します)。Production Reporting DDO により、自動的に暗号

化が行われます。

Validator PropertyValidator インターフェイスを実装するクラスの名前です。通常、

Validator は、Production Reporting DDO または DataSource ドライバによって供給

されるので、アプリケーションではこのプロパティは考慮されません。

ValidationType プロパティ値の検証タイプ。この数値が 0 の場合は検証なし、1 の場合は

値が範囲内でなければならない(その数字を含む)、2 の場合は値がリスト

から選択されることを意味します。検証は、Validator 属性で指定されている

Validator クラスによって行われます。

ValidationValues これはリストです。ValidationType が範囲である場合は、リストの 初の項目

が 小値、2 つ目の項目が 大値になります。範囲でない場合は、項目は、

このプロパティの値として有効な選択肢を表します。アプリケーションでは、リストボックスに情報を入力するのに、これらの値が使用されます。

機能の検出機能は、データソースの機能と属性を表す読み取り専用のプロパティです。他の

プロパティと同じく、グループ化したり、ネストしたりできます。また、機能に

は PropertySheet クラスを介してアクセスされ、PropertyDescription クラスを使っ

て説明されます。主に、データソースがサポートするデータアクセスインターフェ

イスを説明するのに使用されます。

アプリケーションでデータソースがよく利用されている場合は、その機能につい

ても知られているはずです。ただし、多様なデータソースに接続できる特別なア

プリケーションを構築している場合は、実行時にデータソースの機能を検出でき

ることが重要です。多様なデータソースをサポートし、Production Reporting DDO

ドライバの記述を簡素化するには、Production Reporting DDO 仕様により、必須イ

ンターフェイスを定義します。必須以外では、機能が宣言されている限り、ドラ

イバによってサポートするインターフェイスが決定されます。

表 3 に、データソースの機能例を示します。Production Reporting DDO を使用する

と、データソースが機能のそれぞれをサポートしているかをアプリケーションで

チェックできます。

表 3 データソースの機能

機能 説明

command.supported データソースがコマンドの実行をサポートしていることを示します。コマンド言語をサポートするのにデータソースは必要ありません。

30 Production Reporting DDO アプリケーションの作成

Page 31: Hyperion SQR Production Reporting 開発者ガイド ボリューム …SQR Production Reporting Studio によるBAPI のレポート作成 ..... 129 SAP R/3 のProduction Reporting

機能 説明

call.supported データソースがプロシージャの実行をサポートしていることを示します。プロシージャをサポートするのにデータソースは必要ありません。

selector.supported アプリケーションで Selector オブジェクトを getData()メソッ

ドに送って、データの取得を承認するオプションを可能にする getData(Selector)メソッドをサポートするオプションがデー

タソースにあります。

transaction.supported データソースが Transaction インターフェイスをサポートして

いることを示します。Transaction インターフェイスがサポー

トされない場合は、コミットおよびロールバックの呼び出しが自動的に無視されます。

md.supported データソースが多次元であることを示します。getData(Selector)呼び出しで MDSelector オブジェクトを渡すことができます。

MDSelector は、多次元データソースの特殊セレクタです。

SchemaObjectColumn の getChildren()メソッドを使用して、子メ

ンバを取得することで、階層次元メタデータを取得することもできます。これは、多次元データベースで役立ちます。データソースがこの機能をサポートしていない場合は、SchemaObjectColumn の getChildren()への呼び出しにより、ヌル

が返されます。データソースは、MDSchemaObject インター

フェイスもサポートします。

concurrent.connection.supported データソースで現在使用されている接続がサポートされているかどうかを示します。サポートされている場合は、同じ接続で複数の呼び出しをアクティブにできます。サポートされる同時接続は、呼び出し、実行、セレクタ、トランザクション同時設定の仕様によって表されます。

返される Rowset オブジェクトがアクティブである場合は、

呼び出しがアクティブであると考えられます(結果保留を維持)。

JDBC.Database.get-IdentifierQuoteString

ドライバ特有機能の例。アプリケーションで JDBC Access ドライバを使用する場合は、JDBC 特有の機能を取得できます。

JDBC.Database.getIdentifierQuoteString 機能により、スペースを含

む列名など、SQL での識別子に使用する文字を指定します。

通常、これは一重引用符または二重引用符です。

機能のチェックプログラム ex3.sqr は、データソースが Transaction インターフェイスをサポート

しているかどうかをチェックします。

プログラム ex3.sqrboolean checkTransactionSupport(DataSource ds) { PropertySheet prop = ds.getPropertySheet(); Boolean supported = (Boolean)prop.getCapability("transaction.supported"); if (supported == null) return false; // capability is not defined return supported.booleanValue();}The following example checks for the "JDBC.Database.getIdentifierQuoteString" capability and uses it to compose an SQL statement.

機能の検出 31

Page 32: Hyperion SQR Production Reporting 開発者ガイド ボリューム …SQR Production Reporting Studio によるBAPI のレポート作成 ..... 129 SAP R/3 のProduction Reporting

try { // connect to the HelpDesk database DataSource ds = DataSourceManager.getDataSource("HelpDesk"); PropertySheet prop = ds.getPropertySheet(); prop.setProperty("user", "scott"); prop.setProperty("password", "tiger"); Connection c = ds.open(); // check for the JDBC.Database.getIdentifierQuoteString prop = c.getPropertySheet(); String quote = (String)prop.getCapability( "JDBC.Database.getIdentifierQuoteString"); // use the quote string to construct the SQL String sql = "select " + quote + "Employee Name" + quote + " from " + quote + "Employees" + quote; // Based on the data source, the following should display either // select 'Employee Name' from 'Employees' // or // select "Employee Name" from "Employees" System.out.println(sql); c.close();} catch ...

メタデータの取得 Production Reporting DDO API を使用すると、データオブジェクトの知識がなくて

も、データソースでのデータオブジェクトに関する豊富なメタデータをアプリケー

ションで取得できます。メタデータには、オブジェクト、パラメータ、供給され

るデータにアクセスする方法に関する詳細な説明が含まれています。

まったく異なるデータソースに統一されたメタデータを供給するため、Production

Reporting DDO では、次の抽象が使用されます。

l データが 1 つまたは複数のスキーマを持つ。スキーマは、データオブジェク

ト、プロシージャ、追加スキーマのグループである。

一部のデータベースでは、カタログ内にスキーマが整理されます。この場合

は、Production Reporting DDO では、スキーマ内のスキーマとして反映されま

す。また、多数のレベルを持つ階層にデータオブジェクトやプロシージャを

整理するデータソースもあります。Production Reporting DDO では、再帰型ス

キーマを持つ階層レベルがサポートされています。

l Production Reporting DDO では、スキーマ内のスキーマに関するネストのレベ

ルに制限はありません。

l データオブジェクトは、要求された時点でデータを提供できる任意のオブジェ

クト用の一般抽象化です。これには、テーブル、ビュー、ファイル、ビジネ

スオブジェクトが含まれます。

l データオブジェクトには、列のセットがあります。

l プロシージャは、データソースで実行される呼び出し可能なプロシージャま

たはメソッド用の一般抽象化です。これは、ビジネスオブジェクトに保存さ

れたプロシージャ、メソッドが含まれます。

l プロシージャには、パラメータ、戻り値を含めることができ、結果セットを

加えることも可能です。

l プロシージャの結果セットには、列のセットが含まれます。

32 Production Reporting DDO アプリケーションの作成

Page 33: Hyperion SQR Production Reporting 開発者ガイド ボリューム …SQR Production Reporting Studio によるBAPI のレポート作成 ..... 129 SAP R/3 のProduction Reporting

l データオブジェクトまたはプロシージャ結果セットの列は、データフィール

ドなどのスカラー項目または構造などの複雑な項目を表すことができます。

また、プロシージャパラメータや戻り値についても同じです。

l 列、パラメータ、戻り値には、自身の列を持つ子を含めることができます。

これは、階層を表します。

l 列階層は、多次元(OLAP)用語での「次元」を表します。これは、列がメン

バの階層を表すことを意味します(例えば、階層組織の部署など)。列の子を

再帰的に列挙することで、次元のアウトラインをトラバースすることができ

ます。

l 列階層は、構造やテーブルも表します。この場合は、この列の子を列挙する

ことで、構造やテーブルのフィールドを一覧表示できます。ほとんどの場合

は、再帰プロセスにもなります(ネストされた構造およびテーブル)。

これは抽象的ですが、API について説明し、その使い方の例を示す段階で明確に

なります。

スキーマ情報の取得Connection インターフェイスを使用すると、データソースで利用できるオブジェ

クトを一覧表示できます。Production Reporting DDO により、これらのオブジェク

トがスキーマにグループ化されます。データソースは、必ず少なくとも 1 つのス

キーマを持ち、このスキーマに供給されるデータオブジェクトとプロシージャが

グループ化されます。ほとんどの場合は、Production Reporting DDO により複数の

スキーマが階層として整理されます。階層の各スキーマには、追加スキーマの他、

データオブジェクトやプロシージャも含めることができます。

Connection インターフェイスの getSchemas()メソッドを使用すると、階層の上位

にアクセスできます。このメソッドは、現在のスキーマないに含まれるオブジェ

クトのリストを格納する Schemasオブジェクトを返します。このリストには、

データオブジェクト、プロシージャ、追加スキーマを含めることができます。

プログラム ex4.sqr は、Connection インターフェイスをパラメータとして取得し、

階層の上部で開始され、かつスキーマを再帰的に一覧表示するすべてのオブジェ

クトを一覧表示する関数です。プログラム ex4.sqr により、データソースに関して

何の情報もないアプリケーションを使い、すべてのオブジェクトを検出するため

にスキーマをトラバースする必要がある も一般的な場合を示しています。

プログラム ex4.sqrstatic void listConnection(Connection c) throws DataAccessException{ list(c.getSchemas(), 0);}static void list(Schemas schemas, int level){ Enumeration enum; enum = schemas.elements(); while (enum.hasMoreElements()) { Schema schema = (Schema)enum.nextElement(); if (level > 0) indent(level); if (schema instanceof SchemaObject) System.out.println("data object: " + schema.getName());

メタデータの取得 33

Page 34: Hyperion SQR Production Reporting 開発者ガイド ボリューム …SQR Production Reporting Studio によるBAPI のレポート作成 ..... 129 SAP R/3 のProduction Reporting

else if (schema instanceof SchemaProcedure) System.out.println("procedure: " + schema.getName()); else { Schemas children = schema.getChildren(); if (children != null) list(children, level + 1); } }}static void indent(int level){ while (level-- > 0) System.out.print(" ");}

コード

list(c.getSchemas(), 0);} static void list(Schemas schemas, int level) { Enumeration enum; enum = schemas.elements(); while (enum.hasMoreElements())

説明

スキーマ階層を再帰します。list()関数により、引数としてオブジェクト型

Schemasが取得されます。Schemasクラスは、オブジェクト型 Schema、データオ

ブジェクト、プロシージャ、スキーマというスキーマ要素の集まりです。list()

関数のその他の引数は、再帰のレベルで、オブジェクトの一覧表示時のインデン

トで使用されます。

list()は、Connection インターフェイスの getSchemas()を呼び出すことで、階

層の 上位から開始されます。getSchemas()により、このデータソースの上位レ

ベルスキーマとオブジェクトをすべて格納する Schemasオブジェクトが返されま

す。それから、list()を呼び出して、スキーマを再帰的に一覧表示します。

list()関数により、Schema オブジェクトでアイテムが列挙されます。これらのア

イテムは、型 Schema で、SchemaObject および SchemaProcedure クラスからそれぞ

れ抽出されたデータオブジェクトとプロシージャを含みます。SchemaObjectおよ

び SchemaProcedureクラスは、Schema クラスのサブクラスです。

コード

if (schema instanceof SchemaObject)

System.out.println("data object: " + schema.getName());

説明

SchemaObjectクラスのインスタンスであるかどうかを確認することで、Schema

オブジェクトがデータオブジェクトであるかどうかを確認します。オブジェクト

が SchemaObject 型である場合は、データオブジェクトとして一覧表示されます。

コード

else if (schema instanceof SchemaProcedure) System.out.println("procedure: " + schema.getName());

34 Production Reporting DDO アプリケーションの作成

Page 35: Hyperion SQR Production Reporting 開発者ガイド ボリューム …SQR Production Reporting Studio によるBAPI のレポート作成 ..... 129 SAP R/3 のProduction Reporting

説明

SchemaProcedure クラスのインスタンスであるかどうかを確認することで、Schema

オブジェクトがプロシージャであるかどうかを確認します。オブジェクトが

SchemaProcedure 型である場合は、プロシージャとして一覧表示されます。

コード

else { System.out.println("schema: " + schema.getName()); Schemas children = schema.getChildren(); if (children != null) list(children, level + 1);

説明

データオブジェクトかプロシージャかを判断した後で、list()への再帰的な呼び

出しを作成することで、SchemaObject をスキーマとして、さらにそのコンテンツ

を一覧表示します。

スキーマでのデータオブジェクトの一覧表示プログラム ex5.sqr は、Oracle データベースに接続し、ユーザ SCOTT がアクセス

できるテーブルとビューを一覧表示します。

プログラム ex5.sqrtry { DataSource ds = DataSourceManager.getDataSource("HelpDesk"); PropertySheet prop = ds.getPropertySheet(); prop.setProperty("user", "scott"); prop.setProperty("password", "tiger"); Connection c = ds.open(); Schemas schemas = c.getSchemaObjects(c.getSchema("SCOTT")); Enumeration enum; enum = schemas.elements(); while (enum.hasMoreElements()) { SchemaObject obj = (SchemaObject)enum.nextElement(); System.out.println(obj.getType() + ": " + obj.getName()); }} catch (Exception e) { e.printStackTrace();}

この例では、HelpDesk データベースへの Connection が作成されます。次に、

Connection インターフェイスの getSchemaObjects()メソッドが作成され、SCOTT

という名前のスキーマにオブジェクトのリストを取得し、スキーマに要素を列挙

します。各要素は、SchemaObject です。また、型とその名前が印刷されます。型

は、TABLE や VIEW など、オブジェクトの型を表すデータベース特有の名前で

す。

同じように、次の呼び出しを行うことで、SCOTTというスキーマに保存されたプ

ロシージャを一覧表示します。

Schemas schemas = c.getSchemaProcedures(c.getSchema("SCOTT"));

メタデータの取得 35

Page 36: Hyperion SQR Production Reporting 開発者ガイド ボリューム …SQR Production Reporting Studio によるBAPI のレポート作成 ..... 129 SAP R/3 のProduction Reporting

データオブジェクト情報の取得Production Reporting DDO では、非常に多様なデータソースが扱われるので、デー

タソースに格納される標準化した抽象を指定する必要があります。前の項で説明

したように、データソースには、データオブジェクトやプロシージャを含むスキー

マが格納されます。

この項では、これらのデータオブジェクトについて詳しく説明します。次にデー

タオブジェクトの例をいくつか示します。

l リレーショナルデータベースのテーブルおよびビュー。基本的に、「選択」で

きるデータからのすべてのオブジェクトです。

l 多次元データベースの「キューブ」。

l ファイルへのアクセスを提供するデータソースのデータファイル。

l XML ドキュメント。

l オブジェクトデータベースまたはアプリケーションでオブジェクトの集合を

示すオブジェクト。例えば、社員オブジェクトのリストなど。

Production Reporting DDO には、SchemaObject参照を使って、データオブジェク

トを一覧表示し、各オブジェクトのメタデータを取得するメソッドが含まれてい

ます。

クエリ言語サポートのないデータソース

データソースで SQL またはその他のクエリ言語がサポートされていない場合は、

Connection インターフェイスのgetData()メソッドを使って、アプリケーション

でデータを取得できます。

クエリ言語をサポートするデータソース

データソースでクエリ言語がサポートされている場合は、このオブジェクトの名

前を付けるクエリを送信し、アプリケーションでデータを取得できます。また、

DML(データ操作)コマンドも利用できます。例えば、アプリケーションで、SQL

をサポートするデータソースに UPDATE ステートメントを送信できます。

表 4 には、SchemaObject の属性が示されています。

表 4 SchemaObject の属性

属性 説明

Name オブジェクト名。

Description このオブジェクトに関連付けられた説明またはコメント。

Type オブジェクトの型。これは、TABLE または VIEW など、データソース特有の文字列

です。

Parent このオブジェクトを保持するスキーマ(可能な場合)。

36 Production Reporting DDO アプリケーションの作成

Page 37: Hyperion SQR Production Reporting 開発者ガイド ボリューム …SQR Production Reporting Studio によるBAPI のレポート作成 ..... 129 SAP R/3 のProduction Reporting

列メタデータの取得 アプリケーションでは、このデータオブジェクトの列に関する情報も取得できま

す。これを行うには、Connection インターフェイスの

getSchemaObjectColumns()メソッドを呼び出します。このメソッドは、

SchemaObject への参照を取得し、SchemaObjectColumns 参照を返します。また、

SchemaObject の getMetaData()メソッドを呼び出して、列メタデータを取得する

こともできます。

次に例を示します。

void listColumns(SchemaObject obj) throws DataAccessException { SchemaObjectColumns cols = obj.getMetaData().getSchemaObjectColumns(); for (int i = 0; i < cols.size(); i++) { SchemaObjectColumn col = (SchemaObjectColumn)cols.elementAt(i); System.out.println(" " + col.getName() + ", " + col.getDBTypeName());

この例の関数 listColumnsは、SchemaObject を引数として取得し、その列を一覧

表示します。obj.getMetaData().getSchemaObjectColumns()呼び出しを使って

このオブジェクトの SchemaObjectColumns 参照を取得します。ここで、

SchemaObjectColumns オブジェクトは、SchemaObjectColumn オブジェクトのベク

トルです。count()メソッドにより、このオブジェクトの列数、elementAt()メ

ソッドにより各列が返されます。elementAt()呼び出しの結果は、

SchemaObjectColumn にキャストされます。各列(SchemaObjectColumn)では、

列名とデータベースのデータ型名が印刷されます。

プロシージャに関するメタデータの取得プロシージャは、Production Reporting DDO における非常にパワフルなオブジェク

トです。プロシージャにより、パラメータ化される情報オブジェクトの抽象が提

供されます。

プロシージャの例は次のとおりです。

l リレーショナルデータベースに保管されたデータベースプロシージャと関数。

l リモートプロシージャの呼び出し(RPC)。

l オブジェクトデータベースやアプリケーションのおけるオブジェクト上のメ

ソッド呼び出し。

l ビジネスオブジェクトへの COM または CORBA インターフェイスのメソッド

呼び出し。

入力パラメータを渡して、出力パラメータで値を受け取ることができます。同じ

パラメータを入力と出力に適用できます(INOUT パラメータ)。プロシージャに

より、値を返すことができます。これは関数の呼び出しに似ています。とりわけ、

プロシージャを使用すると、複数のセットでデータを返すことができます。

Production Reporting DDO では、結果セットの列説明を取得できます。

Production Reporting DDO には、複雑な構造を形成するパラメータを許可すること

で、プロシージャの呼び出しに関する強力なサポートが備わっています。同様に、

結果セットは、フラットテーブルに制限されず、複雑な構造を保持できます。

表 5 には、SchemaProcedure の属性が示されています。

メタデータの取得 37

Page 38: Hyperion SQR Production Reporting 開発者ガイド ボリューム …SQR Production Reporting Studio によるBAPI のレポート作成 ..... 129 SAP R/3 のProduction Reporting

表 5 SchemaProcedure の属性

属性 説明

Name プロシージャの名前。

Description このオブジェクトに関連付けられた説明またはコメント。

Type オブジェクトの型。これは、「Procedure」や「Function」など、データソース特有

の文字列です。

Parent このオブジェクトを保持するスキーマ(可能な場合)。

パラデータ、戻り値、列を説明するメタメータを取得するために、Connection イ

ンターフェイスの getProcedureMetaData()メソッドを呼び出すことができます。

このメソッドは、SchemaProcedure への参照を取得し、ProcedureMetaData 参照を

返します。また、SchemaProcedure で getMetaData().getProcedureMetaData()

を呼び出して、メタデータを取得することもできます。

プロシージャパラメータの一覧表示

プログラム ex6.sqr に、プロシージャのパラメータの一覧表示、各パラメータと入

力か出力、またはその両方かを表示する例を示します。

プログラム ex6.sqrvoid listParameters(ProcedureMetaData meta) { SchemaProcedureColumns params = meta.getParameters(); if (params == null) System.out.println(" No parameters for this procedure."); else for (int i = 0; i < params.size(); i++) { SchemaProcedureColumn col = meta.getParameter(i); String kind = null; switch (col.getUse()) { case SchemaProcedureColumn.PARMIN: kind = "IN"; break; case SchemaProcedureColumn.PARMOUT: kind = "OUT"; break; case SchemaProcedureColumn.PARMINOUT: kind = "INOUT"; break; } System.out.println(" parameter: " + col.getName() + " - " + kind); }}

listParameters()メソッドは、引数として ProcedureMetaData オブジェクトを取

得します。このオブジェクトで getParameters()メソッドを呼び出し、このプロ

シージャのパラメータリストを表す SchemaProcedureColumns オブジェクトを取得

します。プロシージャにパラメータがない場合は、getParameters()によりヌル

が返されます。パラメータがある場合は、各パラメータが一覧表示されます。

SchemaProcedureColumn の getUse()メソッドにより、入力、出力、または両方と

いうパラメータの種類が返されます。

38 Production Reporting DDO アプリケーションの作成

Page 39: Hyperion SQR Production Reporting 開発者ガイド ボリューム …SQR Production Reporting Studio によるBAPI のレポート作成 ..... 129 SAP R/3 のProduction Reporting

戻り値の指定下のコードは、プロシージャの戻り値を確認する方法を示す例です。

void listReturnValue(ProcedureMetaData meta) { SchemaProcedureColumn retValue = meta.getReturnValue(); if (retValue == null) System.out.println(" No return value for this procedure."); else System.out.println(" return Value: " + retValue.getName() + " - " + retValue.getDBTypeName());}

listReturnValue()メソッドは、引数として ProcedureMetaData オブジェクトを取

得します。このオブジェクトで getReturnValue()メソッドを呼び出し、このプ

ロシージャの戻り値を表す SchemaProcedureColumn オブジェクトを取得します。

この呼び出しにより、プロシージャに戻り値がない場合はヌルが返されます。戻

り値がある場合は、データソース特有の型名とともに戻り値が表示されます。

プロシージャの結果セットの一覧表示

プログラム ex7.sqr に、プロシージャの結果セットと、各結果セットの列を一覧表

示する例を示します。

プログラム ex7.sqrvoid listResultSets(ProcedureMetaData meta) { Vector resultSets = meta.getResultSets(); if (resultSets == null) System.out.println(" No result sets for this procedure."); else for (int i = 0; i < resultSets.size(); i++) { System.out.println(" Result set " + i + ":"); listResultSet(meta, i); }}void listResultSet(ProcedureMetaData meta, int i) { int columnCount = meta.getResultSet(i).size(); for (int j = 0; j < columnCount; j++) { SchemaProcedureColumn col = meta.getResultSetColumn(i,j); System.out.println(" column: " + col.getName() + " - " + col.getDBTypeName()); }}

listResultSets()メソッドは、引数として ProcedureMetaData オブジェクトを取

得します。このオブジェクトで getResultSets()メソッドを呼び出し、1 つまた

は複数の結果をセットの配列を示す Vector(java.util.Vector)オブジェクトを取得

します。プロシージャに結果セットがない場合は、ヌルが返されます。結果セッ

トがある場合は、listResultSet()を呼び出して、各結果セットの列を一覧表示

します。

listResultSet()メソッドは、引数として ProcedureMetaData オブジェクトと結果

セット番号を取得します。getResultSet(i).size()を呼び出してこの結果セット

の列数を取得し、getResultSetColumn(i, j)呼び出しを使って各列のメタデー

メタデータの取得 39

Page 40: Hyperion SQR Production Reporting 開発者ガイド ボリューム …SQR Production Reporting Studio によるBAPI のレポート作成 ..... 129 SAP R/3 のProduction Reporting

タを表示します。この呼び出しでは、「i」は結果セット番号、「j」は結果セット

内の列を表します。

列は、データオブジェクトやプロシージャの結果セットでデータのアイテムを説

明します。列は、プロシージャパラメータや戻り値も示します。前の項では、デー

タオブジェクトやプロシージャの列を取得する方法について説明しました。これ

らの列は、SchemaObjectColumn および ProcedureObjectColumn クラスで抽象化さ

れます。SchemaProcedureColumn は、SchemaObjectColumns のサブクラスです。

SchemaObjectColumns の属性をすべて共有します。また、追加属性も提供します。

表 6 に、全列に共通の属性を示します。

表 6 全列に共通な属性

列 説明

Name 列の名前。

Size フィールドの幅。

Precision 数値列の精度。

Scale 数値列のスケール。

DBType データソース特有のデータ型を表すデータソース特有の数。

DBTypeName データソース特有のデータ型名。

FieldType この列の Production Reporting DDO データ型。データがデータソースから取得さ

れる場合は、この列には、この型のフィールドが返されます。FieldType は、

Field クラスで定義される定数のいずれかである整数です。

Field.Text テキスト文字列フィールド。

Field.Number 数値フィールド。整数、ダブル、小数点のいずれかとなります。

Field.Date 日付または日付と時刻フィールド。

Field.Boolean true または false 値。

Field.Binary バイナリの未処理データ(バイトのストリーム)。

Field.Row 構造。

Field.Rowset テーブル。

Field.Object 任意のオブジェクト。

拡張性属性を持つ SchemaProcedureColumn は、表 7 で示されているようにプロシー

ジャのパラメータと戻り値を説明します。

40 Production Reporting DDO アプリケーションの作成

Page 41: Hyperion SQR Production Reporting 開発者ガイド ボリューム …SQR Production Reporting Studio によるBAPI のレポート作成 ..... 129 SAP R/3 のProduction Reporting

表 7 SchemaProcedure 列の追加属性

属性 説明

Use この列を使用します。これは、SchemaProcedureColumn クラスで定義される定数のいず

れかである整数です。

定数 説明

PARMIN 入力パラメータ。

PARMINOUT 入出力に使用されるパラメータ。

PARMOUT 出力パラメータ。

RESULTCOLUMN 結果セットの列。

RETURNVALUE プロシージャの戻り値。

UNDEFINED 定義なし。

データの要求Production Reporting DDO でデータのリクエストを行うには、以下の 3 つの方法が

あります。

l getData: オブジェクトに名前を指定し、データをリクエストします。クエリ

言語やプロシージャの呼び出しメカニズムをサポートしていないデータソー

スでは、このメソッドを使用できます。

l execute: SQL SELECT ステートメントなどのコマンドを実行します。コマンド

は、データソースドライバを通して渡されるテキスト文字列です。コマンド

は、コマンドテキストの「?」を使って、パラメータを取得します。

l call: プロシージャを呼び出します。プロシージャを直接呼び出し、その時に

パラメータを渡し、出力パラメータ、戻り値、複数の結果データセットを取

得できます。

次の項では、getData()メソッドと関連付けられた Selector クラスについて説明し

ます。Selector クラスを使用すると、戻り値が必要な列を指定できます。

getData を使ったデータの取得

Production Reporting DDO でデータの取得に使用する も基本的な方法は、

getData()メソッドです。このメソッドを使用すると、引数としてデータオブジェ

クトの名前を取得できます。これは、文字列または SchemaObject 参照のいずれか

になります。getData()メソッドにより、プログラム ex8.sqr で示されているよう

に、名前の付いたオブジェクトの全データを取得し、Rowset を返します。

プログラム ex8.sqrtry { DataSource ds = DataSourceManager.getDataSource("HelpDesk"); PropertySheet prop = ds.getPropertySheet();

データの要求 41

Page 42: Hyperion SQR Production Reporting 開発者ガイド ボリューム …SQR Production Reporting Studio によるBAPI のレポート作成 ..... 129 SAP R/3 のProduction Reporting

prop.setProperty("user", "scott"); prop.setProperty("password", "tiger"); Connection c = ds.open(); Rowset rowset = c.getData(c.getSchemaObject(new String[] { "SCOTT", "EMP"})); // print headings for (int i = 0; i < rowset.getFieldCount(); i++) System.out.print(rowset.getField(i).getName()+ ","); System.out.println(""); while (rowset.next()) { // print data for (int i = 0; i < rowset.getFieldCount(); i++) System.out.print(rowset.getField(i) + ","); System.out.println(""); } c.close(); // close the connection to the data source} catch (Exception e) { e.printStackTrace();}

この例では、オブジェクトへの参照を持つ getData()メソッドが使用されていま

す。接続 SCOTTの getSchemaObject()、続いて EMPにより、オブジェクトへのパ

スが定義されます。このパスの実装は、データソースに特有です。データソース

にテーブルを含むスキーマのフラットセットがあるとすると、パスは、テーブル

EMPを持つスキーマ SCOTTになります。getData()メソッドにより、EMP テーブ

ルの全データを持つ Rowset インターフェイスが返されます。これは、コマンド

SELECT * FROM SCOTT.EMPを実行するのと同じです。

Rowset インターフェイスを使った結果の処理

Production Reporting DDO では、Rowset の実装を事前に規定していません。これ

により、アプリケーションで一定のインターフェイスを提供する一方で、データ

ソースドライバにデータの処理に高い柔軟性をもたらします。

特に、ジャストインタイム取得を実装するためにドライバを解放できます。これ

は、Rowset が実際にすべてのデータを保持しないことを意味します。ドライバ

は、アプリケーションにより next()メソッドが呼び出された場合にレコードを取

得できます。この動作の利点は、ドライバがメモリに結果セット全体を保持して

おく必要がなく、非常に大規模な結果セットでも処理できる点です。

Rowset は自己記述です。getFieldCount()メソッドを使用すると、Rowset の

フィールド数を指定できます。各フィールドは、抽象フィールドクラスのインス

タンスです。フィールドオブジェクトは、その型、サイズ、構造を示します。特

に、フィールドは、Row または Rowset などの、複雑な構造にすることができま

す。

自己記述型の Rowset の利点は、アプリケーションで、各フィールドの期待される

型とサイズをハードコード化しなくてもいい点です。これらの属性は、実行時に

検出できます。プログラム ex9.sqr に、Rowset の処理中にフィールドのデータ型を

指定する方法を示します。

プログラム ex9.sqrstatic void printRowset(Rowset rs) throws DataAccessException { // write results in an HTML table System.out.println("<table><tr>");

42 Production Reporting DDO アプリケーションの作成

Page 43: Hyperion SQR Production Reporting 開発者ガイド ボリューム …SQR Production Reporting Studio によるBAPI のレポート作成 ..... 129 SAP R/3 のProduction Reporting

int fieldCount = rs.getFieldCount(); // DateFormat object for printing dates DateFormat df = DateFormat.getDateInstance(DateFormat.LONG); // print headings for (int i = 0; i < fieldCount; i++) System.out.println("<td>" + rs.getField(i).getName() + "</td>"); // print the data row by row while (rs.next()) { System.out.println("</tr><tr>"); for (int i = 0; i < fieldCount; i++) { Field f = rs.getField(i); if (f.isNull()) { System.out.println("<td>&nbsp;</td>"); continue; } switch (f.getType()) { case Field.Boolean: case Field.Text: System.out.println("<td align=left>" + f + "</td>"); break; case Field.Number: if (f instanceof DecimalField && ((DecimalField)f).isCurrency()) System.out.println("<td align=right>$" + f + "</td>"); else System.out.println("<td align=right>" + f + "</td>"); break; case Field.Date: System.out.println("<td align=left>" + df.format(((DateField)f).dateValue()) + "</td>"); break; case Field.Row: case Field.Rowset: case Field.Object: case Field.Binary: System.out.println("<td align=center>n/a</td>"); break; } } } System.out.println("</tr></table>"); rs.close(); // close the result set}

この例の関数 printRowset()は、Rowset を引数として取得します。Rowset がどの

ように取得されるかは関係ありません。Rowset は、getData()の結果、SQL ステー

トメントなどのコマンド実行の結果、保管されているプロシージャ実行からの結

果セットのいずれかになります。いずれの場合でも、Rowset は、同じ方法で処理

されます。

Rowset は、固定数のフィールドを持つ現在の行を維持します。Rowset の next()

メソッドへの呼び出しにより、次の行のデータが現在の行に入力されます。

next()により、レコードが利用できる限り、true のブール値が返されます。 後

の行で falseが返されると、next()が呼び出されます。

各行で各フィールドが処理されます。isNull()を使って、ヌル値を確認して開始

します。フィールドがヌルの場合は、空のセルが印刷され、次のフィールドに進

みます。

次のステートメントを使って、フィールドの種類を確認します。

データの要求 43

Page 44: Hyperion SQR Production Reporting 開発者ガイド ボリューム …SQR Production Reporting Studio によるBAPI のレポート作成 ..... 129 SAP R/3 のProduction Reporting

switch (f.getType()) {

getType()メソッドにより、Field クラスで定義される定数のいずれかに一致する

整数が返されます。Field クラスの toString()メソッドを使って、全フィールド

を文字列として印刷できますが、この例では、フィールドの型によって異なるア

クションが実行されます。

表 8 に、フィールドの型を一覧にまとめています。

表 8 フィールドの型

種類 説明

Boolean true または false 値。このフィールドは、BooleanField のインスタンスです。

Binary バイトの配列/ストリーム。このフィールドは、BinaryField のインスタンスです。ま

た、LongBinaryField のインスタンスでも構いません。

Date java.util.Date 値。このフィールドは、DateField のインスタンスです。

Number 数値。このフィールドは、抽象 NumberField クラスのサブクラスのインスタンスで

す。これは、このフィールドが、IntegerField、DoubleField、DecimalField のインスタン

スであることを意味します。

Object 任意の Java オブジェクト。このフィールドは、ObjectField のインスタンスです。

Row RowField のインスタンス。

Rowset RowsetField のインスタンス。

Text String:TextField のインスタンスです。

選択とフィルタ

getData()を使ってオブジェクトからデータを取得する操作はとても簡単です。

簡単すぎる場合も多々あります。データソースで複雑なコマンド言語をサポート

する必要をなくし、取得する対象を選択できるように、Production Reporting DDO

にはセレクタの概念が備わっています。

セレクタでは、アプリケーションが取得する列(全列を無条件に取得するのでは

なく)と簡単な選択条件を指定します。Production Reporting DDO のバージョン 1

では、フィルタ機能のみが制限されています。50 ページの「階層および多次元

データの取得 」に、これらのボタンとコントロールを示します。

ここでは、使用する列を指定するために Selector を使用する方法について説明し

ます。

DataSource ds = DataSourceManager.getDataSource("CSVFiles"); Connection c = ds.open(); Selector selector = new Selector(); selector.setObject(c.getSchemaObject("Employee.csv")); selector.includeColumn("Name"); selector.includeColumn("Salary"); selector.includeColumn("HireDate"); Rowset rs = c.getData(selector); printRowset(rs);

44 Production Reporting DDO アプリケーションの作成

Page 45: Hyperion SQR Production Reporting 開発者ガイド ボリューム …SQR Production Reporting Studio によるBAPI のレポート作成 ..... 129 SAP R/3 のProduction Reporting

この例では、Production Reporting DDO CSV Access ドライバが使用されています。

このドライバを使用すると、CSV(コンマ区切りの値)ファイルにアクセスでき

ます。このドライバでは SQL はサポートされていませんが、セレクタのインター

フェイスがサポートされています。

上のコードは、Selector クラスを使って、使用するデータを指定する方法を示す例

です。空のセレクタを開始することで始めます。次に、使用する CSV ファイルに

Object 属性を設定します。SchemaObject を setObject()に渡します。Connection

インターフェイスの getSchemaObject()メソッドを使って、このオブジェクトを

取得します。レジストリには、このデータソースの情報がすでに含まれているこ

とに注意してください。情報には、開始ディスクフォルダが含まれています。こ

れは、このオブジェクトのデフォルトスキーマを定義します。つまり、コードは、

デフォルトスキーマにある Employee.csvというオブジェクトからデータをリク

エストします。

また、この例では、getData()呼び出しに含める列がリクエストされ、このセレ

クタが渡されます。セレクタが列を参照できるように、列を指定する前にオブジェ

クトを指定します。結果は、リクエストされた 3 つのフィールドを含む Rowset で

す。

Selector クラスには、同じリクエストを作成する SQL のような構文が備わってい

ます。これを次の例で示します。Selector コンストラクタで select ステートメント

を渡すことで、使用するオブジェクト名と列を両方定義します。また、Selector が

オブジェクトを参照できるように、Connection インターフェイスを渡します。ス

ペースやドットを含む列やオブジェクト名は、二重引用符で囲みます。

Selector selector = new Selector(c, "select Name, Salary, HireDate from ¥"Employee.csv¥"");

コマンドの実行データソースでコマンドインターフェイスがサポートされている場合は、アプリ

ケーションからデータソースに実行するコマンド文を送信できます。これは、SQL

など、高度なコマンド言語をサポートするデータソース用の も強力な機能です。

言語を使用すると、データ選択、集約、作成を含む複雑なクエリを指定できます。

例えば、データベースで SQL がサポートされている場合は、結合を行い、結果を

グループ化したり、並べ替えたりすることができます。

その機能を確認して、データソースがコマンドインターフェイスをサポートして

いるかどうかを確認できます。特定の機能を確認する方法については、30 ページ

の「機能の検出」を参照してください。

コマンドをパラメータ化し、実行時にこれらのパラメータの値をアプリケーショ

ンで指定できます。これを次の例で示します。

Connection c = ds.open(); Command command = new Command("select empno, ename, hiredate from " + "emp where deptno = ?"); command.setParameter(0, new IntegerField(20)); Rowset rs = c.execute(command);

この例では、SQL ステートメントを使って Command オブジェクトを構築します。

このステートメントでは、パラメータのマーカーとして?記号が使用されているこ

データの要求 45

Page 46: Hyperion SQR Production Reporting 開発者ガイド ボリューム …SQR Production Reporting Studio によるBAPI のレポート作成 ..... 129 SAP R/3 のProduction Reporting

とに注目してください。Field オブジェクトを Command クラスの

setParameter()メソッドに渡し、パラメータに値を供給します。

setParameter()メソッドは、実際に Command が派生された ParameterList クラス

に属しています。

setParameter()メソッドは 2 つの引数を取ります。 初の引数は、パラメータ番

号で、ゼロが 1 つ目になります。2 つ目の引数は、このパラメータの値を持つ Field

です。この例では、部署 20 の 20 という値を持つ IntegerField を作成します。Field

オブジェクトを使って値を供給する方法は、別のコマンドにパラメータとして 1

つのコマンドの結果をバインドする場合に、 も便利な方法です。

Connection インターフェイスの execute()メソッドを使用すると、コマンドを実

行できます。そのメソッドにより、Rowset オブジェクトが返されます。42 ページ

の「Rowset インターフェイスを使った結果の処理」の説明に従って、Rowset が処

理されます。

コマンドにより、1 つの行または単一の値を返すことができます。Production

Reporting DDO は Rowset を返しますが、Rowset には 1 行や単一のフィールドを持

たせることができます。例えば、SQL Update ステートメントを考えてみましょ

う。Update から返される情報は、更新によって影響を受けるデータベースの行数

のみです。次にそのコードを示します。

Connection c = ds.open(); Command command = new Command("update emp set sal = sal * 1.1"); Rowset rs = c.execute(command); rs.next(); System.out.println(rs.getField("COUNT") + " records were updated."); c.close(); // close the connection to the data source

この例では、Update SQG ステートメントが実行されます。このステートメントは

データを返すことはありませんが、処理された行数の行カウントを返します。

Production Reporting DDO JDBC Access ドライバにより、1 行および単一のフィール

ドを持つ Rowset の行カウントが返されます。このフィールドの名前は COUNTで

す。getField(COUNT)の呼び出しにより、そのフィールドが取得され、印刷され

ます。getField()の変化形により、名前でフィールドが検出されます。フィール

ドの取得を素早く行うには、 初のフィールドをゼロとする位置番号を使います。

または、次の印刷ステートメントを記述することもできます。

System.out.println(rs.getField(0) + " records were updated.");

データベースカーソルについて

Production Reporting DDO JDBC Access ドライバでは、アプリケーションには完全

に透過的なデータベースカーソルが使用されます。ドライバは、カーソルのプー

ルを保持します(JDBC PreparedStatement オブジェクト)。コマンドを実行すると、

ドライバにより、カーソルがこのコマンドですでに存在するかどうかが確認され

ます。カーソルのプールを使用すると、同じ SQL ステートメントで繰り返し準備

<<?>>演算子を使わずに済むので、パフォーマンスが向上します。

Production Reporting DDO では、アプリケーションに透過的なこのようなパフォー

マンスの 適化がドライバによって実装されることを想定しています。これは、

カーソル管理メソッドなど、データソースに特有のメソッドで API を消費しない

ことで、優れたパフォーマンスを達成するのに重要です。

46 Production Reporting DDO アプリケーションの作成

Page 47: Hyperion SQR Production Reporting 開発者ガイド ボリューム …SQR Production Reporting Studio によるBAPI のレポート作成 ..... 129 SAP R/3 のProduction Reporting

プロシージャの呼び出しと呼び出し結果の処理Connection インターフェイスの call()メソッドを使用すると、プロシージャを実

行できます。アプリケーションにより、プロシージャを識別する引数が渡され、

オプションでパラメータリストを渡すこともできます。パラメータリストは、プ

ロシージャの入力パラメータの値を保持します。リストの各パラメータは、Field

型のオブジェクトです。これは、データソースから入力パラメータとして取得し

たフィールドをプロシージャの呼び出しに渡す場合に便利です。

パラメータとして渡される値が Field でない場合は、値を保持する Field を作成す

る必要はありません。Production Reporting DDO には、フィールドを作成する複数

の方法が備わっています。

l アプリケーションは、「new」演算子を使って、BooleanField、BinaryField、

DateField などのフィールドを作成します。これらのメソッドの多くは、フィー

ルドを作成し、値を一度設定します。

l アプリケーションは、ParameterFactory クラスの静的なメソッドを使用して、

Field を作成し、実際の値を提供します。

パラメータリストを作成したら、call()メソッドを実行し、プログラム ex10.sqr の

ように結果を取得できます。

プログラム ex10.sqr public static void main(String[] args) { try { DataSource ds = DataSourceManager.getDataSource("Sales"); Connection c = ds.open(); // prepare the parameter list ParameterList params = new ParameterList(new Field[] { new DateField("1/1/98"), new DateField("12/31/98") }); // call the procedure SchemaProcedure proc = c.getSchemaProcedure("Sales by Year"); CallResults results = c.call(proc, params); // process all rowsets Rowset rs; while ((rs = results.getOutputRowset()) != null) printRowset(rs); // check for return value Row retval = results.getReturnValue(); if (retval != null) printRow(retval); // check for output parameters Row outparams = results.getOutputParams(); if (outparams != null) printRow(outparams); // close the call results results.close(); c.close(); // close the connection to the data source } catch (Exception e) { e.printStackTrace(); } } static void printRow(Row row) throws DataAccessException { for (int i = 0; i < row.getFieldCount(); i++) { Field f = row.getField(i); System.out.println(" " + f.getName() + ": " + f); } }

データの要求 47

Page 48: Hyperion SQR Production Reporting 開発者ガイド ボリューム …SQR Production Reporting Studio によるBAPI のレポート作成 ..... 129 SAP R/3 のProduction Reporting

コード

ParameterList params = new ParameterList(new Field[] { new DateField("1/1/98"), new DateField("12/31/98") }); // call the procedure

説明

Sales データソースに接続した後で、パラメータリストを作成します。呼び出され

るプロシージャは、2 つの日付入力パラメータを取ると想定します。コンストラ

クタにフィールドの配列を渡すことによって、ParameterList オブジェクトを作成

します。フィールドは、このプロシージャ呼び出しの実際のパラメータ値を保持

します。

コード

SchemaProcedure proc = c.getSchemaProcedure("Sales by Year");

説明

プロシージャを見つけ、その SchemaProcedure オブジェクトを取得します。

Connection の getSchemaProcedure()メソッドを使用します。この名前のプロシー

ジャが存在しない場合は、メソッドにより、DataAccessExceptionが発生しま

す。

コード

CallResults results = c.call(proc, params);// process all rowsetsRowset rs;

説明

呼び出しを行い、CallResultsオブジェクトを取得します。CallResultsにより、

アプリケーションで、プロシージャから返されたすべてのデータを取得できます。

これには、複数の結果セット、出力パラメータ、戻り値が含まれます。出力パラ

メータと戻り値の値を取得する前に、結果セットが処理されていることに注目し

てください。

コード

while ((rs = results.getOutputRowset()) != null)printRowset(rs);// check for return value

説明

結果セットを処理します。一般に、プロシージャが返すことのできる結果セット

の数に制限はありません。結果セットを返さないこともできます。単一または複

数の結果セットを返すことができます。この例では、結果セットがなくなるまで、

CallResultsクラスの getOutputRowset()メソッドに繰り返し呼び出しが行われ

ます。

コード

Row retval = results.getReturnValue();

48 Production Reporting DDO アプリケーションの作成

Page 49: Hyperion SQR Production Reporting 開発者ガイド ボリューム …SQR Production Reporting Studio によるBAPI のレポート作成 ..... 129 SAP R/3 のProduction Reporting

if (retval != null) printRow(retval);// check for output parameters

説明

戻り値を処理します。CallResultsは、この値を Row として返します。これは、

返される値が構造である場合に便利です。プロシージャがスカラー値(単一の

フィールド)を返すことが分かっている場合は、代わりに次のコードを使用でき

ます。

Row retval = results.getReturnValue();if (retval != null)System.out.println("return value: " + retval.getField(0));

コード

Row outparams = results.getOutputParams();

説明

出力パラメータを処理します。CallResultsは、各フィールドが単一の出力パラ

メータを表す行として出力パラメータを返します。フィールドの順番は、プロシー

ジャの出力パラメータの順番に該当します。

コード

results.close();

説明

CallResultsオブジェクトを閉じます。これは、このプロシージャ呼び出しの実

行コンテキストが解放されたことをドライバに通知します。

トランザクションの実行ビジネスインテリジェンスアプリケーションでは、データの読み取り以外の操作

も行われます。リクエストテーブル、ログテーブル、ステータスフィールドなど

を更新します。さらに、アプリケーションでは、複数のパスを実行して、複数の

レポートを生成できるように、データが仲介ストレージに保管される場合があり

ます。

Production Reporting DDO では、次のような方法でデータベースの操作を更新しま

す。

l Connection の execute()メソッドを介してコマンドを実行すると、データソー

スで任意の操作を行えます。特に、新しいオブジェクトを作成したり、デー

タを入力したりする操作が可能です。

l Connection の call()メソッドを介してプロシージャを呼び出すと、プロシー

ジャによる操作に制限がなくなります。ユーザがデータソースを使って、デー

タの更新やオブジェクトの操作を行うプロシージャを呼び出すことができる

ようになります。

l トランザクションにデータの変更をグループ化するために、Production Reporting

DDO には、トランザクションインターフェイスが備わっています。データソー

スでトランザクションがサポートされている場合は、Connection インターフェ

データの要求 49

Page 50: Hyperion SQR Production Reporting 開発者ガイド ボリューム …SQR Production Reporting Studio によるBAPI のレポート作成 ..... 129 SAP R/3 のProduction Reporting

イスの getTransaction()メソッドにより、Transaction インターフェイスが返

されます。このインターフェイスを使用すると、アプリケーションでトラン

ザクションを開始し、コミットまたはロールバックのトランザクションを完

了できます。

プログラム ex11.sqr は簡単なコード例です。この例では、「c」は、HelpDesk Oracle

データベースへの有効な接続を可能にする Connection 参照です。

プログラム ex11.sqrtry { c.getTransaction().beginTransaction(); c.execute( new Command("update emp set sal = sal * 1.1 where job = 'CLERK'")); c.execute( new Command("update emp set sal = sal * 1.1 where job = 'MANAGER'")); c.getTransaction().commit(); c.close(); } catch (DataAccessException e) { try { if (c != null) c.getTransaction().rollback(); } catch (Exception e2) { e2.printStackTrace(); } e.printStackTrace();}

この例は、Transaction インターフェイスで beginTransaction()を呼び出すこと

から始まります。この呼び出しは常に必須です。次に、2 つの更新ステートメン

トが実行されます。更新中にエラーが発生すると、例外が発生し、Transaction イ

ンターフェイスの rollback()メソッドを呼び出すことで、すべての変更がロール

バックされます。エラーが発生せず、2 つの更新が完了すると、commit()メソッ

ドが呼び出されます。この例では、Connection の close()メソッドが保留中のト

ランザクションもコミットするので、commit()を呼び出す必要はありません。

階層および多次元データの取得 Production Reporting DDO では、多次元データベース(OLAP サーバとも呼ぶ)が

直接サポートされています。これらのデータベースでは、複数レベルの集約と分

析をサポートするように、データが整理されます。複数の次元を持つハイパー

キューブとも呼ばれるデータセットが定義されます。各次元は、データの主な特

徴を表します。例えば、セールスでは、データ次元には、製品、領域、組織単位、

時間などが含まれます。これらは、販売している商品、場所、対象、時期を表し

ます。つまり、セールスデータは、これらの次元で分析できます。

各次元は、通常、階層構造を定義します。これはデータ集約で重要なコンセプト

となります。例えば、領域は、階層または地理的な場所を定義できます。階層の

上位では、データが全領域で要約されます。その 1 つ下のレベルでは、北米、ヨー

ロッパなど、世界を地域に分けることができます。さらに、北米は、地域や州に

分割できます。

表 9 に、Production Reporting DDO オブジェクトへの多次元コンセプトの

Production Reporting DDO マッピングを示します。

50 Production Reporting DDO アプリケーションの作成

Page 51: Hyperion SQR Production Reporting 開発者ガイド ボリューム …SQR Production Reporting Studio によるBAPI のレポート作成 ..... 129 SAP R/3 のProduction Reporting

表 9 多次元コンセプトの Production Reporting DDO オブジェクトへのマッピング

概念 Production Reporting DDO オブジェクト

ハイパーキューブ

データオブジェクト(SchemaObject)。

次元 列(SchemaObjectColumn)。

次元階層 SchemaObjectColumn オブジェクトの階層。階層の上位には、各次元の SchemaObjectColumn オブ

ジェクトがあります。この列の getChildren()呼び出しにより、次元階層の第一世代メンバが返

されます。第一世代メンバの getChildren()呼び出しにより、第ニ世代メンバが返されます。

getChildren()によりヌルが返されるまで、階層を下がることができます。

MDSchemaObject インターフェイスを使って、レベルと世代に関する情報を取得することもで

きます。

測定値 数値列(SchemaObjectColumn)。

Production Reporting DDO を使用すると、次元を巡回し、プログラム ex12.sqr で示

されているように、すべてのメンバ、世代、レベルを検出することができます。

プログラム ex12.sqrimport com.sqribe.access.*;import com.sqribe.comutil.*;import java.util.Enumeration;public class test19 { public static void main(String[] args) { try { DataSource ds = DataSourceManager.getDataSource("Essbase"); PropertySheet prop = ds.getPropertySheet(); prop.setProperty("user", args[0]); prop.setProperty("password", args[1]); Connection c = ds.open(); Enumeration enum = c.getAllSchemasObjects().elements(); while (enum.hasMoreElements()) { SchemaObject cube = (SchemaObject)enum.nextElement(); listCube(cube); } c.close(); } catch (Exception e) { e.printStackTrace(); } } static void listCube(SchemaObject cube) throws DataAccessException { System.out.println("-----------------------"); System.out.println(cube.getName()); System.out.println("-----------------------"); SchemaObjectColumns cols = cube.getMetaData().getSchemaObjectColumns(); listColumns(cols, 1); } static void listColumns(SchemaObjectColumns cols, int level) { for (int i = 0; i < cols.size(); i++) { SchemaObjectColumn col = (SchemaObjectColumn)cols.elementAt(i); indent(level); printCol(col); SchemaObjectColumns children = (SchemaObjectColumns)col.getChildren(); if (children != null) listColumns(children, level + 1);

データの要求 51

Page 52: Hyperion SQR Production Reporting 開発者ガイド ボリューム …SQR Production Reporting Studio によるBAPI のレポート作成 ..... 129 SAP R/3 のProduction Reporting

} } static void printCol(SchemaObjectColumn col) { String name = col.getName(); String desc = col.getDesc(); if (desc != null && desc.length() > 0) System.out.println(name + " (" + desc + ")"); else System.out.println(name); } static void indent(int level) { while (level-- > 0) System.out.print(" "); }}

プログラム ex12.sqr は、Connect インターフェイスの getAllSchemasObjects()メ

ソッドを使って、このデータベースの全データオブジェクトのリストを取得する

ことから始まります。次に、リストを確認し、各データオブジェクトで

listCube()を呼び出します。多次元データベースの各データオブジェクトは、ハ

イパーキューブを表します。

listCube()メソッドにより、ハイパーキューブの名前が印刷されてから、

listColumns()が呼び出され、ハイパーキューブの列が一覧表示されます。各列は、

数値データを表す 後の列を除いて、次元を表します。

listColumns()メソッドは、次元内のメンバ階層を巡回する再帰メソッドです。

次元またはメンバの子メンバは、getChildren()呼び出しで取得されます。

SchemaObjectColumn の場合は、getChildren()により、常に

SchemaObjectColumns が返されます。

printCol()メソッドにより、各列の名前が印刷されます。これは、次元の名前ま

たは次元のメンバです。一部の多次元データベースでは、メンバの名前が固有の

識別子として使用されることに注意してください。メンバには、レポートで表示

しやすいようにエイリアスを指定したり、英語以外の言語を使用することもでき

ます。エイリアスが利用可能な場合は、列の説明属性に示されます

(col.getDesc()を参照)。説明が利用可能な場合は、printCol()により、列名と

ともに説明が表示されます。

ここまでは、多次元データベースのメタデータを取得する方法について説明して

きました。次に、データの取得方法について説明します。

Production Reporting DDO アプリケーションでは、多次元コンセプトが指定される

必要がありません。また、データソースが多次元であることを検出できなくても

構いません。つまり、Production Reporting DDO には、次の 2 つのデータ取得方法

が備わっています。

l 「多次元」であることを検出しないアプリケーション用の汎用セレクタ。

l 「多次元」であることを検出するアプリケーション用の多次元セレクタ

(MDSelector)。

汎用セレクタを使った多次元データの取得前の項では、多次元データのオブジェクトの一覧表示が、任意のデータソースの

オブジェクト一覧表示とまったく同じであることを説明しました。さらに、ハイ

52 Production Reporting DDO アプリケーションの作成

Page 53: Hyperion SQR Production Reporting 開発者ガイド ボリューム …SQR Production Reporting Studio によるBAPI のレポート作成 ..... 129 SAP R/3 のProduction Reporting

パーキューブの次元と測定値の一覧表示は、テーブルオブジェクトの列の一覧表

示と同じです。

つまり、アプリケーションは、getData()呼び出しでオブジェクトに名前を付け

るだけで多次元データソースからデータを取得できます。または、ハイパーキュー

ブオブジェクトの名前を付け、Selector の includeColumn()メソッドを使って選択

した次元を含める Selector オブジェクトを作成して、データを取得することもで

きます。

いずれの場合も、Production Reporting DDO により、各次元と測定値をフィールド

とする rowset としてデータが取得されます。データは、 小レベル(レベル 0)

まで下がり、特定の次元の全交差に行があります(ハイパーキューブのすべての

セル)。セレクタを使用して特定の次元を選択する場合は、プログラム ex13.sqr に

示されているように、他の次元全体でデータが要約されます。

プログラム ex13.sqrimport com.sqribe.access.*;import com.sqribe.comutil.*;import java.util.Enumeration;public class test21 { public static void main(String[] args) { try { DataSource ds = DataSourceManager.getDataSource("Essbase"); PropertySheet prop = ds.getPropertySheet(); prop.setProperty("user", args[0]); prop.setProperty("password", args[1]); Connection c = ds.open(); SchemaObject cube = c.getSchemaObject(new String [] { "Sample", "Basic" } ); Selector selector = new Selector(); selector.setObject(cube); selector.includeColumn("Year"); Rowset rs = c.getData(selector); printRowset(rs); c.close(); } catch (Exception e) { e.printStackTrace(); } } static void printRowset(Rowset rs) throws DataAccessException { int fieldCount = rs.getFieldCount(); // print the data row by row for (int rowCount = 0; rs.next(); rowCount++) { StringBuffer line = new StringBuffer(); for (int i = 0; i < fieldCount; i++) { line.append(rs.getField(i).toString()); line.append('¥t'); } System.out.println(line); } rs.close(); // close the rowset }

コード

Selector selector = new Selector();

データの要求 53

Page 54: Hyperion SQR Production Reporting 開発者ガイド ボリューム …SQR Production Reporting Studio によるBAPI のレポート作成 ..... 129 SAP R/3 のProduction Reporting

説明

Selector オブジェクトを作成し、ハイパーキューブにそのオブジェクトを設定し、

「Year」と呼ばれる次元を選択します。

次にその出力を示します。

Jan 8024.0Feb 8346.0Mar 8333.0Apr 8644.0May 8929.0Jun 9534.0Jul 9878.0Aug 9545.0Sep 8489.0Oct 8653.0Nov 8367.0Dec 8780.0

この例では、「Year」のレベル 0 は月です。これは唯一選択された時限であるた

め、データは、この次元で要約されます。

MDSelector を使った多次元データの取得

多次元データベースからデータを取得する場合は、次の項目を指定します。

l 含める次元と測定値。

l 含めるメンバ。これは、データをサブセットに制限する多次元的な方法です。

例えば、単一の月からデータを取得する場合は、時間次元の「March, 1999」

メンバを選択できます。

l 集約のレベル。例えば、週、月、四半期の数字にデータを要約する場合は、

次元の階層は、週、月、四半期のレベルになります。

Production Reporting DDO では、MDSelector という特殊な Selector オブジェクトを

使って、この種の選択をサポートしています。MDSelector クラスは、Selector のサ

ブクラスです。Selector クラスの機能上に作成され、オブジェクトと列を選択しま

す。機能を追加して、メンバと集約レベルを選択します。

次に例を示します。

SchemaObject cube = c.getSchemaObject(new String [] { "Sample", "Basic" } ); MDSelector selector = new MDSelector(); selector.setObject(cube); selector.includeColumn("Year"); selector.includeColumn("Product"); selector.setColumnLevel(0, 1); selector.setColumnGeneration(1, 2); Rowset rs = c.getData(selector); printRowset(rs);

この例では、Selector の代わりに MDSelector のインスタンスが作成されます。

setObject()をハイパーキューブ(スキーマ Sampleの Basic)に設定し、Year

および Product次元を選択します。ここまでは、Selector の例と同じです。ここ

で、集約のレベルを選択します。setColumnLevel(0, 1)ステートメントにより、

54 Production Reporting DDO アプリケーションの作成

Page 55: Hyperion SQR Production Reporting 開発者ガイド ボリューム …SQR Production Reporting Studio によるBAPI のレポート作成 ..... 129 SAP R/3 のProduction Reporting

初の列(列 0 - Year)レベルがレベル 1 に設定されます。これは、 も詳細なレ

ベルより 1 つ上のレベルであることを意味します。ツリーとして次元階層を考え

る場合は、レベル 0 はツリーのリーフ、レベル 1 はそのすぐ上の親になります。

setColumnGeneration(1, 2)ステートメントにより、2 つ目の列(列 1 - 製品)の

レベルが世代 1 に設定されます。

世代に関する集約を指定すると、一部のリーフが他のリーフより階層レベルが多

いといった不均衡な階層ツリーで特に役立ちます。世代 1 は 上位、世代 2 はツ

リールートの直下にある子となります。

次にその出力を示します。

Qtr1 100 7048.0 Qtr1 200 6721.0 Qtr1 300 5929.0 Qtr1 400 5005.0 Qtr1 Diet 7017.0 Qtr2 100 7872.0 Qtr2 200 7030.0 Qtr2 300 6769.0 Qtr2 400 5436.0 Qtr2 Diet 7336.0 Qtr3 100 8511.0 Qtr3 200 7005.0 Qtr3 300 6698.0 Qtr3 400 5698.0 Qtr3 Diet 7532.0 Qtr4 100 7037.0 Qtr4 200 7198.0 Qtr4 300 6403.0 Qtr4 400 5162.0 Qtr4 Diet 6941.0

初の 2 四半期のみのデータを必要とする場合や、製品グループ 100、200、300、

400(「Diet」は、100、200、300、400 ですでにカウントされている製品のグルー

プです)のみのデータを必要とする場合があります。特定のメンバのみを選択す

るため、Production Reporting DDO では、MDSelector setColumnMembers()メソッ

ドを使用できます。

次に例を示します。

SchemaObject cube = c.getSchemaObject(new String [] { "Sample", "Basic" } );MDSelector selector = new MDSelector();selector.setObject(cube);selector.includeColumn("Year");selector.includeColumn("Product");selector.setColumnLevel(0, 1);selector.setColumnGeneration(1, 2);selector.setColumnMembers(0, new String[] { "Qtr1", "Qtr2" });selector.setColumnMembers(1, new String[] { "100", "200", "300", "400" });Rowset rs = c.getData(selector);printRowset(rs);c.close();

メンバ名を文字列として取得する setColumnMembers()メソッドのバージョンを

使用しています。これは、メンバ名が固有であると想定します。固有でない場合

データの要求 55

Page 56: Hyperion SQR Production Reporting 開発者ガイド ボリューム …SQR Production Reporting Studio によるBAPI のレポート作成 ..... 129 SAP R/3 のProduction Reporting

は、アプリケーションで次元のアウトラインメタデータを取得し、

SchemaObjectColumn オブジェクトとして setColumnMembers()メソッドにメンバ

を渡す必要があります。

次にその出力を示します。

Qtr1 100 7048.0 Qtr1 200 6721.0 Qtr1 300 5929.0 Qtr1 400 5005.0 Qtr2 100 7872.0 Qtr2 200 7030.0 Qtr2 300 6769.0 Qtr2 400 5436.0

56 Production Reporting DDO アプリケーションの作成

Page 57: Hyperion SQR Production Reporting 開発者ガイド ボリューム …SQR Production Reporting Studio によるBAPI のレポート作成 ..... 129 SAP R/3 のProduction Reporting

3Production Reporting DDOド

ライバの作成

この章の内容

ドライバの作成 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57

手順のまとめ. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57

手順 1:プロパティ、機能、メッセージファイルの作成 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 58

手順 2:DataSource インターフェイスの実装 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61

手順 3:接続インターフェイスの実装 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62

手順 4:Rowset の実装 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 71

ドライバの作成この章では、フォルダに保存されたフラットファイルのデータにアクセスするた

めのドライバの作成について説明します。一般に CSV ファイルと呼ばれるファイ

ルのデータは、コンマで区切られており、値が引用符で囲まれている場合ありま

す。ファイルの 初の行は、フィールドの名前です。

どのような Production Reporting DDO アプリケーションでも、Production Reporting

DDO 開発対象のCSV ドライバを使用できます。アプリケーションにとって CSV

データソースは、その他のデータソースと同じように扱われます。

手順のまとめ

ä Production Reporting DDO ドライバを作成するには以下の手順に従います。

1 必要なプロパティ、機能、メッセージファイルを作成します。

2 DataSource インターフェイスを実装します。

3 Connection インターフェイスを実装します。

4 ドライバから返されるデータ用の Rowset インターフェイスを実装するコードを記述し

ます。

5 データソースでプロシージャの呼び出しがサポートされている場合は、呼び出し結果

インターフェイスを実装します。

6 データソースでトランザクションがサポートされている場合は、トランザクションイ

ンターフェイスを実装します。

この章の例は、 初の 4 つの手順を示しています。この CSV ドライバは、プロ

シージャ呼び出しまたはトランザクションの実装は行いません。

ドライバの作成 57

Page 58: Hyperion SQR Production Reporting 開発者ガイド ボリューム …SQR Production Reporting Studio によるBAPI のレポート作成 ..... 129 SAP R/3 のProduction Reporting

手順 1:プロパティ、機能、メッセージファイルの作成

初に、ドライバ実装のパッケージ名を決定します。これは、Production Reporting

DDO では、そのプロパティファイルを見つけるためにクラス名が使用されるた

め、重要です。サンプルパッケージの名前は demo.csvです。DataSource 実装クラ

スは CSVDataSourceです。

プロパティファイルの作成パッケージ名と DataSource クラス名を基にして、プロパティファイルは、表 10 に

示されている名前を取得します。

表 10 プロパティの名前

ファイルの種類 ファイル名

プロパティの値 demo_csv_CSVDataSource_Properties.properties

プロパティの説明 demo_csv_CSVDataSource_PropertyDescriptions.properties

Production Reporting DDO を使用すると、クラスおよびインターフェイス階層を

使って継承を実装し、Production Reporting DDO からプロパティとプロパティの説

明を継承させることができます。特に、継承されたプロパティは、

com_sqribe_access_DataAccess_Properties.properties ファイルからと

com_sqribe_access_DataAccess_PropertyDescriptions.properties ファイルからのもので

す。これらのファイルにより、ログオンプロパティとそのユーザーおよびパスワー

ドプロパティが定義されます。これらのファイルは、Java CLASSPATH の properties

というフォルダにあります。

ドライバには特別なプロパティはないので、プロパティ値には空のファイルが作

成されます。

プロパティの説明では、ログオンプロパティが修正されます。デフォルトのログ

オンプロパティには、userと passwordという関連付けられた 2 つのプロパティ

があります。例のログオンでは、ローカルドライブにある CSV ファイルにアクセ

スするので、これらのプロパティはありません。次にプロパティ説明ファイル

(demo_csv_CSVDataSource_PropertyDescriptions.properties)を示します。

# override the default logon propertylogon.Name=Logonlogon.Description=Logon properties.logon.Indices=logon.Required=false

logon.Indicesをなしに設定することで、ログオン属性が排除されています。

機能ファイルの作成パッケージ名と DataSource クラス名を基にして、機能ファイルは、表 11 に示され

ている名前を取得します。

58 Production Reporting DDO ドライバの作成

Page 59: Hyperion SQR Production Reporting 開発者ガイド ボリューム …SQR Production Reporting Studio によるBAPI のレポート作成 ..... 129 SAP R/3 のProduction Reporting

表 11 機能ファイルの名前

ファイルの種類 ファイル名

機能の値 demo_csv_CSVDataSource_Capabilities.properties

機能の説明 demo_csv_CSVDataSource_CapabilityDescriptions プロパティ

ドライバは、Production Reporting DDO の対応するファイルの内容を継承します。

com_sqribe_access_DataSourceAccess_Capabilities.propertiescom_sqribe_access_DataSourceAccess_CapabilityDescriptions.properties

これらのファイルで、インターフェイス、コマンド、呼び出し、セレクタ、トラ

ンザクションなどの一般的な機能が定義されます。

ドライバは、これらの機能説明を継承するので、機能の説明ファイルは空になり

ます。ドライバは、これらの機能のデフォルト値も継承します。ここでは、機能

ファイルも空にしておきます。

メッセージファイルの作成ドライバは、特定のエラーメッセージで DataAccessExceptions を発生させ、他の言

語のテキストも扱うことができます。Production Reporting DDO に備わる機能を利

用し、Production Reporting DDO にメッセージを探させることもできます。

Production Reporting DDO メッセージファイルに保存されているメッセージを再利

用できます。さらに、メッセージファイルの管理には、Production Reporting DDO

SDK に付属のインタラクティブツールを利用できます。

Production Reporting DDO メッセージファイルでは、メッセージを見つけるクラス

階層が使用されます。これは、呼び出すクラスのメッセージファイルを探すこと

で動作します。メッセージファイルが見つからないか、特定のメッセージがその

ファイルで見つからない場合は、特定のクラスのスーパークラスに該当するメッ

セージファイルの中を探します。また、クラスが実装するインターフェイスを探

し、その階層にも従います。

すべてのクラスで同じインターフェイスが実装される場合は、1 つのドライバに

全クラスのメッセージをすべて保存できます。この共通インターフェイスは、

Production Reporting DDO Access および Util インターフェイスに拡張できます。こ

れで、メッセージがドライバのファイルで見つからない場合に、Production

Reporting DDO が独自のファイルでメッセージを探します。次の 60 ページの

「CSV インターフェイス」の項では、この共通インターフェイスを作成します。

メッセージファイルは demo_csv_CSV.propertiesで、Java CLASSPATH の msgs

フォルダにあります。メッセージファイルには、CSV ドライバに特有のメッセー

ジエントリが含まれます。ファイルの例をプログラム ex14.sqr に示します。

プログラム ex14.sqr# The number of column headings doesn't match the number of data columns# 0 class name# 1 method name# 2 heading count# 3 data count

手順 1:プロパティ、機能、メッセージファイルの作成 59

Page 60: Hyperion SQR Production Reporting 開発者ガイド ボリューム …SQR Production Reporting Studio によるBAPI のレポート作成 ..... 129 SAP R/3 のProduction Reporting

HeadingCountMismatch.text={0}.{1}(): The number of heading columns, ¥{2}, does not match the number of data columns, {3}.# End of file encountered while looking for end quote# 0 class name# 1 method name# 2 "file" name# 3 line where quoted string startedMissingQuote.text={0}.{1}(): End of file encountered while ¥searching for ending quote; file= {2}, line={3}.# Unknown column name# 0 class name# 1 method name# 2 column nameInvalidColumnName.text={0}.{1}(): Unknown column name, ¥{2}, in selector specification.

このファイルは、プロパティファイルと同じ形式です。「#」で始まる行はコメン

トです。エントリは、<message id>.textの形式になります。Message ID は、メッ

セージを識別するためにコードで使用される固有のキーです。Message ID は、表

示されないため、翻訳する必要はありません。メッセージテキストには、変数の

特殊マーカーが含まれる場合があります。これらのマーカーは、{0}、{1}などで

示されます。表記規則では、すべてのメッセージには、少なくとも 初の 2 つの

マーカーが含まれます。マーカーは、クラス名の値とメッセージが生成されるメ

ソッド名を保持します。複数行にわたる長いメッセージでは、改行位置にバック

スラッシュを入れます。

この章で示す例の実装コードでは、ファイルのメッセージが使用されます。

CSV インターフェイス

Production Reporting DDO では、メッセージやプロパティを見つけるために、クラ

ス階層が使用されます。クラス階層を巡回し、各クラスに該当するメッセージや

プロパティファイルを探し、ファイルやエントリが見つからなければ検索を継続

することで動作します。また、クラスで実装されるインターフェイスのインター

フェイス階層も巡回します。

このドライバの 初の Java ファイルは CSV インターフェイスで、コードプログラ

ム ex15.sqr に示されています。このインターフェイスは空で、メッセージやプロ

パティを追跡し続けるためにインターフェイスを実装するクラスを指定します。

CSV インターフェイスは、Production Reporting DDO Access インターフェイスを実

装します。この実装により、ドライバのファイルにメッセージやプロパティが見

つからない場合に、メッセージおよびプロパティ機能が Production Reporting DDO

ファイルを探すようになります。

プログラム ex15.sqrpackage demo.csv;import com.sqribe.access.*;/** * CSV is a holder interface, allowing properties, messages, etc, * common to the csvacc package to be specified once, e.g., * demo_csv_CSV.properties. * @see com.sqribe.comutil.PropertySheet * @see com.sqribe.comutil.PropertyDescription * @see com.sqribe.comutil.Msg

60 Production Reporting DDO ドライバの作成

Page 61: Hyperion SQR Production Reporting 開発者ガイド ボリューム …SQR Production Reporting Studio によるBAPI のレポート作成 ..... 129 SAP R/3 のProduction Reporting

*/public interface CSV extends Access {}

手順 2:DataSource インターフェイスの実装「データソースの管理」の項では、データソースを定義する名前、説明、クラス、

必要な Java およびネイティブライブラリ、接続文字列などの属性について説明し

ました。CSV では、クラス属性は、demo.csv.CSVDataSourceとなります。これ

は、この例での DataSource インターフェイス実装名です。CSV ドライバの Java ま

たはネイティブライブラリを読み込む必要はないので、lib および load 属性は空で

す。また、CSV ファイルがあるディスクのフォルダを示す接続文字列属性が定義

されます。次に、例で使用するデータソース「DataFiles」のレジストリエントリ

例を示します。

DataFiles.desc=Current and historical sales dataDataFiles.class=demo.csv.CSVDataSourceDataFiles.lib=DataFiles.load=DataFiles.conn=c:¥¥data

プログラム ex16.sqr は実装コードの先頭です。

プログラム ex16.sqrpackage demo.csv;import com.sqribe.access.*;import com.sqribe.comutil.*;public class CSVDataSource extends DataSourceAdapter implements CSV { private static final String classname = CSVDataSource.class.getName(); public CSVDataSource(String pName, String pDesc, String pConn) { super(pName, pDesc, pConn, classname); } public Connection open() throws DataAccessException { String folder = getConnectString(); AccessIO io = AccessIO.createAccessIO("File", folder); return new CSVConnection(io, getPropertySheet()); }}

CSVDataSource クラスにより、DataSourceAdapter クラスが拡張され、DataSource

インターフェイスが実装されます。DataSourceAdapter クラスは、DataSource イン

ターフェイスのほとんどの実装を提供する抽象クラスです。コンストラクタおよ

び open()メソッドの実装のみが必要です。DataSourceAdapter により、DataSource

インターフェイスの他の全メソッドに関する実装が提供されます。

このクラスにより、classnameという静的なデータメンバが定義されます。ドラ

イバのすべてのクラスでは、classname が使用されます。例えば、メッセージ機能

では、メッセージを生成したクラス名を表示するために使用されます。コンスト

ラクタは特別な操作は行わず、スーパークラスのコンストラクタに引数を渡すだ

けです。

open()メソッドにより、データソースへの新しい接続が作成されます。

getConnectionString()メソッドを呼び出すことにより、レジストリから(Data

手順 2:DataSource インターフェイスの実装 61

Page 62: Hyperion SQR Production Reporting 開発者ガイド ボリューム …SQR Production Reporting Studio によるBAPI のレポート作成 ..... 129 SAP R/3 のProduction Reporting

Source Manager から)フォルダ名(例えば、c:¥data)を取得します。このメソッ

ドは、DataSource インターフェイスの一部で、DataSourceAdapter にすでに実装さ

れています。

ディスクのファイルにアクセスするため、ここでは AccessIO クラスを使用してい

ます。このクラスは、Production Reporting DDO の一部です。これにより、ファイ

ルシステムやその他のストレージシステムにIO アクセスが提供されます。

Production Reporting DDO のバージョン 1 では、ファイル IO のみがサポートされ

ていましたが、同じメカニズムが拡張され、HTTP やその他のトランスポートメ

カニズムを介してリモートファイルへのアクセスが可能になりました。

接続を開くため、Fileプロトコルとフォルダ名を使って、AccessIO オブジェクト

のインスタンスが作成されます。AccessIO.createAccessIO()メソッドにより、

ファイル AccessIO オブジェクトが作成され、フォルダにアクセスできるかどうか

が検証されます。コンストラクタのこのオブジェクトが接続オブジェクトに渡さ

れます。

手順 3:接続インターフェイスの実装接続インターフェイスは、Production Reporting DDO で結果を処理するメインイン

ターフェイスです。いくつかのメソッドを実装する必要があります。まずは、プ

ログラム ex17.sqr 内のメソッドから始めます。

プログラム ex17.sqrpackage demo.csv;import com.sqribe.access.*;import com.sqribe.comutil.*;import java.util.*;public class CSVConnection extends ConnectionAdapter implements CSV { private static final String classname = CSVConnection.class.getName(); private AccessIO dir; // folder with CSV files private static final String fileTerm = "Table"; public CSVConnection(AccessIO pDir, PropertySheet pSheet) throws DataAccessException { super(pSheet); dir = pDir; if (dir.isLeaf()) DataAccessException.rethrow("NotDirectory", new Object[] { classname, "CSVConnection", pDir.getName() }); } private void createSchemas() throws DataAccessException { Schemas schemas = new Schemas(); Vector names = dir.listDir(); for (int idx=0; idx < names.size(); idx++) { String name = (String)names.elementAt(idx); if (dir.isLeaf(name)) schemas.add(new SchemaObject(null, name, "", fileTerm, this)); } setSchemas(schemas); } public Schemas getSchemas() throws DataAccessException { createSchemas(); // refresh the list of objects return getSchemasRoot(); }

62 Production Reporting DDO ドライバの作成

Page 63: Hyperion SQR Production Reporting 開発者ガイド ボリューム …SQR Production Reporting Studio によるBAPI のレポート作成 ..... 129 SAP R/3 のProduction Reporting

public void close() { dir.close(); }}

CSVConnection クラスにより、ConnectionAdapter クラスが拡張され、Connection

インターフェイスが実装されます。この抽象クラスにより、Connection の多くの

メソッドにデフォルト実装が提供されます。また、CSVConnection クラスの実装

で役立つ便利な関数も提供されます。

CSVConnection には、CSV ファイルを含むディスクのフォルダを表す AccessIO オ

ブジェクトへの参照を保持する dirというプライベートデータメンバがあります。

CSVConnection コンストラクタにより、ConnectionAdapter のコンストラクタが呼

び出されます。そのコンストラクタにより、DataSource プロパティシートが取得

され、そのエントリが接続プロパティシートにコピーされます。次に、CSV ファ

イルが存在するフォルダ名が検証されます。標準のファイルでないことが確認さ

れ、フォルダとなります。

次に、その静的な rethrow() メソッドを使用して、DataAccessException を発生さ

せる例を示します。このメソッドでは、データベース、IO、ネットワーク例外な

どの例外がドライバで発生し、これらが DataAccessException になります。

rethrow()メソッドも新しい例外を発生させます。この例もここに示されていま

す。rethrow()メソッドは、 初の引数としてメッセージ ID を取得します。

NotDirectoryメッセージは、Production Reporting DDO ですでに定義されていま

す。このため、ここでは、メッセージファイルで定義せずに使用できます。

DataAccessException の rethrow()メソッドに対する次の引数は、メッセージの一

部となるオブジェクトの配列(通常、文字列オブジェクト)です。この例には、

CSVConnection クラスの名前、CSVConnectionコンストラクタ、さらにフォルダ

の名前が含まれます。

createSchemas()メソッドにより、 上位(ルート)メタデータ(Schemas)が生

成されます。ドライバでは、フォルダにある CSV ファイルのリストになります。

ここでは、CSV ファイルに.csvファイル拡張子が付いていると想定していませ

ん。その代わりに、フォルダに含まれているファイルがすべて CSV ファイルであ

ると想定しています。次に、createSchemas()例のコードを示します。

private void createSchemas() throws DataAccessException { Schemas schemas = new Schemas(); Vector names = dir.listDir(); for (int idx=0; idx < names.size(); idx++) { String name = (String)names.elementAt(idx); if (dir.isLeaf(name)) schemas.add(new SchemaObject(null, name, "", fileTerm, this)); } setSchemas(schemas); }

例では、空の Schemas オブジェクトが割り当てられています。次に、AccessIO の

listDir()メソッドを使用して、フォルダにある CSV ファイルリストが取得され

ます。リストの各ファイル名では、フォルダではなくファイルかどうかがチェッ

クされてから、その SchemaObject のインスタンスが作成され、Schemas オブジェ

クトに追加されます。この後で、setSchemas(schemas)が呼び出されます。

setSchemas()メソッドは、ConnectionAdapter クラスのメソッドです。 上位の

手順 3:接続インターフェイスの実装 63

Page 64: Hyperion SQR Production Reporting 開発者ガイド ボリューム …SQR Production Reporting Studio によるBAPI のレポート作成 ..... 129 SAP R/3 のProduction Reporting

Schemas オブジェクトを登録します。これは、Connection で getSchemas()を呼び

出した時に、アプリケーションに返されるオブジェクトです。

コードで getSchemas()を上書きし、ルートの Schemas を生成します。実装される

と、アプリケーションで getSchemas()が呼び出されるたびに、ディレクトリが再

度一覧表示されます。これで、データソースのオブジェクトリストが更新されま

す。CSV ファイルがフォルダに追加された場合は、getSchemas()の呼び出しによ

り、メタデータに追加されます。

アプリケーションにより、close()メソッドが呼び出されます。close()の実装は

何も行いません。フォルダの場合は、閉じるファイルがないので、close()は実

際には何も行いません。しかし、例では、close()のよい実践として、このクリー

ンアップが示されています。ここでは上書きして、AccessIO オブジェクトを閉じ

ています。

列メタデータの提供列、名前、種類に関する情報は、CSV ファイルから取得されます。このため、

CSVFile というクラスが記述されます。このクラスは、CSV ファイルを読み取る実

装をカプセル化します。これにより、行の読み取り、区切り文字の取り扱い、

初の行からの列名の取得が行われ、データのサンプリングにより次の 5 行から列

の種類を予測し、データを読み取ります。CSVFile のソースの一覧は、この章の後

半にあります。ここでは、Production Reporting DDO の次の項目について説明しま

す。SchemaObjectColumn を作成し、Connection のgetSchemaObjectColumns()メ

ソッドを実装する方法です。

説明を続ける前に、表 12 で示されているように、使用される CSVFile クラスのメ

ソッドについて説明します。

表 12 CSVFile クラスメソッド

方法 説明

コンストラクタ この AccessIO の新しい CSVFile オブジェクトを作成します。

getLineTokens 区切り文字を削除し、行のアイテムを返します。

getSampleData ファイルの 初の数行にあるトークン化されたデータを返します。

シンプルに保つため、このドライバでは、日付、数字、テキストの 3 つのデータ

型がサポートされています。プログラム ex18.sqr により

getSchemaObjectColumns()メソッドの実装が CSVConnection クラスに追加され

ます。

プログラム ex18.sqr public SchemaObjectColumns getSchemaObjectColumns( SchemaObject pSchema) throws DataAccessException { CSVFile csvfile = new CSVFile(dir.createAccessIO(pSchema.getName())); Vector headingsLine = csvfile.getLineTokens(); // Get the headings Vector dataLine[] = csvfile.getSampleData(); // Sample data csvfile.close(); int headingsCount = headingsLine.size();

64 Production Reporting DDO ドライバの作成

Page 65: Hyperion SQR Production Reporting 開発者ガイド ボリューム …SQR Production Reporting Studio によるBAPI のレポート作成 ..... 129 SAP R/3 のProduction Reporting

int dataCount = dataLine[0].size(); if (headingsCount != dataCount) { // Must be the same number DataAccessException.rethrow("HeadingCountMismatch", new Object[] { classname, "createMetaData", new Integer(headingsCount), new Integer(dataCount) } ); } SchemaObjectColumns columnMetaData = new SchemaObjectColumns(); for (int idx = 0; idx < headingsCount; idx++) { String name = (String) headingsLine.elementAt(idx); int prev = 0, curr = 0; // type of previous and current value int size = 0; // size of this coulum int scale = 0, prec = 0; // precision and scale (numeric) for (int i = 0; i < dataLine.length; i++) { if (dataLine[i] != null) { String sample = (String) dataLine[i].elementAt(idx); Field field = getField(sample); curr = field.getType(); if (prev != 0 && prev != curr) curr = Field.Text; prev = curr; size = Math.max(size, sample.length()); if (curr == Field.Decimal) { scale = Math.max(scale, ((DecimalField)field).decimalValue().scale()); prec = size; } } } SchemaObjectColumn soc = new SchemaObjectColumn( pSchema, name, curr, curr, getDBTypeName(curr), size, prec, scale, ""); columnMetaData.add(soc); } return columnMetaData; }

Connection インターフェイスとベース実装クラスにより、

getSchemaObjectColumns()の ConnectionAdaptermethod 署名が定義されます。

CSV ファイルの適切な実装を提供するため、メソッドが上書きされます。

getSchemaObjectColumns()メソッドの目的は、データオブジェクトの列(CSV

ファイル)を説明することです。これには、列の数、その名前、種類、サイズが

含まれます。

コード

CSVFile csvfile = new CSVFile(dir.createAccessIO(pSchema.getName()));

説明

pSchema引数によって示されるオブジェクトの AccessIO オブジェクトを作成しま

す。AccessIO オブジェクトにより、ファイルの読み取りが可能になります。次に、

このファイルの CSVFile オブジェクトを作成します。CSVFile オブジェクトによ

り、CSV ファイルの解析が可能になります。CSVFile クラスの実装ソースコード

は、この章の 69 ページの「CSVFile クラス」の項で示します。

手順 3:接続インターフェイスの実装 65

Page 66: Hyperion SQR Production Reporting 開発者ガイド ボリューム …SQR Production Reporting Studio によるBAPI のレポート作成 ..... 129 SAP R/3 のProduction Reporting

ここでは、CSV ファイルの CSVFile オブジェクトを取得したので、見出し行を読

み取ります(CSV ファイルの 初の行には、列見出しが含まれます)。

コード

Vector headingsLine = csvfile.getLineTokens(); // Get the headings

説明

これらの見出しは列名です。

コード

Vector dataLine[] = csvfile.getSampleData(); // Sample data csvfile.close(); int headingsCount = headingsLine.size(); int dataCount = dataLine[0].size(); if (headingsCount != dataCount) { // Must be the same number DataAccessException.rethrow("HeadingCountMismatch", new Object[] { classname, "createMetaData", new Integer(headingsCount), new Integer(dataCount) } ); }

説明

ファイルの 初の 5 データ行にあるサンプルデータを返します。このデータを使っ

て、各列のデータ型が予測されます。CSV ファイルには型の情報は含まれていま

せん。各列の 初の値を数個見ることで、すべて有効な日付または数字であるか

どうかを判断できます。日付や数字でない場合は、列がテキストとして扱われま

す。

見出しの数がデータ行の値の数に一致することを検証します(見出しの数をデー

タの 初の行の項目数と比較します)。一致しない場合は、例外が発生します。こ

この HeadingCountMismatchで使用されている Message ID は、メッセージファイ

ル demo_csv_CSV.propertiesのエントリを参照します。

コード

SchemaObjectColumns columnMetaData = new SchemaObjectColumns(); for (int idx = 0; idx < headingsCount; idx++) { String name = (String) headingsLine.elementAt(idx); int prev = 0, curr = 0;//type of previous and current value int size = 0; // size of this coulum int scale = 0, prec = 0; // precision and scale (numeric) for (int i = 0; i < dataLine.length; i++) { if (dataLine[i] != null) { String sample = (String) dataLine[i].elementAt(idx); Field field = getField(sample); curr = field.getType(); if (prev != 0 && prev != curr) curr = Field.Text; prev = curr; size = Math.max(size, sample.length()); if (curr == Field.Decimal) { scale = Math.max(scale, ((DecimalField)field).decimalValue().scale()); prec = size;

66 Production Reporting DDO ドライバの作成

Page 67: Hyperion SQR Production Reporting 開発者ガイド ボリューム …SQR Production Reporting Studio によるBAPI のレポート作成 ..... 129 SAP R/3 のProduction Reporting

説明

新しい SchemaObjectColumns オブジェクトを作成します。このオブジェクトは、

CSV ファイルの列を示す SchemaObjectColumn オブジェクトの集まりを保持しま

す。

次に、列が 1 つずつ処理され、各列のサンプルを見て、列の型が確認されます。

これは、getField()メソッドを使って行われます。getField()メソッドは、Field

クラスの getType()メソッドを使って、型の決まったフィールド(DateField、

DecimalField、TextField)を返します。この型を前の列の型と比較します。一致し

ない場合は、この列をテキスト列として予約します。ただし、列の値がすべて有

効な日付値であれば、この列を日付列として予約します。すべての値が有効な数

値であれば、同じルールをこの列に適用します。

サンプルデータを使って、列のサイズおよび小数列の精度とスケールを確認しま

す。

コード

SchemaObjectColumn soc = new SchemaObjectColumn( pSchema, name, curr, curr, getDBTypeName(curr), size, prec, scale, ""); columnMetaData.add(soc); } return columnMetaData;

説明

列の名前、種類、サイズ用の SchemaObjectColumn が作成されます。列の親属性を

設定し、データオブジェクト(CSV ファイルの SchemaObuject)を示し、名前とそ

の型を渡します。ドライバでは、データベース型として Production Reporting DDO

フィールド型も使用されます。getDBTypeName()メソッドにより、型の記述名が

提供されます。SchemaObjectColumn が SchemaObjectColumns 変数に追加されま

す。

次に、プログラム ex19.sqr に示されているgetField()メソッドおよび

getDBTypeName()メソッドについて説明します。

プログラム ex19.sqr private Field getField(String sample) { Field field; field = new DateField(sample); // see if valid date value if (field.isNull()) { field = new DecimalField(sample); // see if valid number if (field.isNull()) field = new TextField(sample); // default is text } return field; } private String getDBTypeName(int pType) { String typeName; switch(pType) { case Field.Number: typeName = "NUMERIC"; break;

手順 3:接続インターフェイスの実装 67

Page 68: Hyperion SQR Production Reporting 開発者ガイド ボリューム …SQR Production Reporting Studio によるBAPI のレポート作成 ..... 129 SAP R/3 のProduction Reporting

case Field.Date: typeName = "DATE"; break; default: typeName = "VARCHAR"; break; } return typeName; }

getField()メソッドにより、その値の型の決まったフィールドが返されます。こ

れは、その値から DateField を作成することで開始されます。値が有効な日付でな

い場合は、ここでエラーが発生し、DateField の値がヌルとして返されます。この

場合は、DecimalField を使用します。これでもエラーが発生する場合は、値が

TextField として取得されます。関数により、型の決まったフィールドオブジェク

トが返されます。

getDBTypeName()メソッドにより、フィールドの型の名前が返されます。

Production Reporting DDO は DBTypeName を定義しません。これは、データソー

スによります。小数には NUMERIC、Date フィールドには DATE、その他には

VARCHARが返されます。

getData の実装

CSVConnection クラスで Connection インターフェイスの実装を完了するため、

getData()メソッドが実装されます。SchemaObject 引数をとるより簡単な

getData()を見ることから始めます。次の項では、セレクタを使った getData()

の実装について説明します。

Rowset は、結果セットを処理するインターフェイスです。getData()メソッドに

より、Rowset インターフェイスが返されます。ドライバは、このインターフェイ

スを実装する必要があります。この例では、CSVRowset により、CSV ファイルを

処理する Rowset インターフェイスが実装されます。ロジックのほとんどは

CSVRowset であるので、getData()の実装は簡単です。

public Rowset getData(SchemaObject schema) throws DataAccessException { CSVFile csvfile = new CSVFile(dir.createAccessIO(schema.getName())); return new CSVRowset(csvfile, getSchemaObjectColumns(schema));}

ファイルからデータを読み取る CSVFile オブジェクトを作成します。CSVRowset

クラスは、CSVFile オブジェクトを使って、データを読み取ります。CSVRowset コ

ンストラクタは 2 つの引数をとります。

l CSVFile オブジェクト

l このオブジェクトの列メタデータ(SchemaObjectColumns)

71 ページの「手順 4:Rowset の実装」では、CSVRowset が getData()の結果を

処理する Rowset インターフェイスを実装する方法を示します。

68 Production Reporting DDO ドライバの作成

Page 69: Hyperion SQR Production Reporting 開発者ガイド ボリューム …SQR Production Reporting Studio によるBAPI のレポート作成 ..... 129 SAP R/3 のProduction Reporting

セレクタを使った getData の実装

セレクタは、オブジェクトからデータを取得する柔軟な方法を可能にします。

Production Reporting DDO の現バージョンでは、セレクタを使って、アプリケー

ションで使用する列とその順番を指定できます。Production Reporting DDO の今後

のバージョンでは、セレクタを使って、フィルタ、並べ替え、結合条件を指定で

きるようになる予定です。

Production Reporting DDO には、新しい Rowset を作るためにセレクタを Rowset に

適用するクラス RowsetFilter が備わっています。新しい Rowset は、セレクタで指

定される順番で、セレクタ内に指定されるフィールドを持ちます。

ConnectionAdapter クラスにより、getData(Selector)のデフォルト実装が提供さ

れます。この実装では、RowsetFilter を使用して、より簡単な getData()が返す

Rowset にセレクタを適用します。ConnectionAdapter のコードは次のようになりま

す。

public Rowset getData(Selector selector) throws DataAccessException { return new RowsetFilter(getData(selector.getObject()), selector);}

CSV ドライバでは、この実装で十分です。このため、ベース実装が行う

getData(Selector)の実装を提供する必要はありません。

71 ページの「手順 4:Rowset の実装」に進む前に、CSVFile クラスのコードを確

認してください。このクラスは、CSV ファイルの読み取りと解析をカプセル化し

ます。

CSVFile クラス

この実装では、CSVFile クラスが使用されます。ソースコードをプログラム ex20.sqr

に示します。

プログラム ex20.sqrpackage demo.csv;import com.sqribe.access.*;import com.sqribe.comutil.*;import java.util.Vector;import java.io.IOException;public class CSVFile implements CSV { private static final String classname = CSVFile.class.getName(); private AccessIO access; private String delimiters = "¥",";public CSVFile(AccessIO pAccess) { access = pAccess; } public Vector getLineTokens() throws DataAccessException { String line = readLine(); Vector tokens = null; if (line != null) { int start, end; tokens = new Vector(); for (start=0; start < line.length(); start=end+1) { end = getDelimiter(line, start); if (start != end) {

手順 3:接続インターフェイスの実装 69

Page 70: Hyperion SQR Production Reporting 開発者ガイド ボリューム …SQR Production Reporting Studio によるBAPI のレポート作成 ..... 129 SAP R/3 のProduction Reporting

String token = line.substring(start, end); if (token.length() != 0) tokens.addElement(token); } if (end < line.length() && line.charAt(end) == '¥"') { line = line.substring(++end); start = 0; end = getQuotedString(line, start); if (start<=end) { tokens.addElement(line.substring(start, end++)); } else { DataAccessException.rethrow("MissingQuote", new Object[] { classname, "getLineTokens", access.getName(), line } ); } } else if (start==end) { tokens.addElement(null); } } } return tokens; } public Vector[] getSampleData() throws DataAccessException { Vector[] dataLine = new Vector[5]; int idx; for (idx=0; idx<dataLine.length; ++idx) { dataLine[idx] = getLineTokens(); if (dataLine[idx]==null) break; } return dataLine; } private int getDelimiter(String pLine, int pIdx) { int idx = pIdx; for (; idx<pLine.length(); ++idx) { char c = pLine.charAt(idx); if (delimiters.indexOf(c) != -1) break; } return idx; } private int getQuotedString(String pLine, int pIdx) { int idx; if ((idx=pLine.indexOf('"', pIdx))==-1) { try { String line = readLine(); if (line!=null) { idx = pLine.length(); pLine.concat(line); idx = getQuotedString(pLine, idx); } } catch (DataAccessException e) { } } return idx; } private String readLine() throws DataAccessException { StringBuffer line = new StringBuffer(); while(true) { int token = read(); if (token == -1) break; if (token=='¥r') { token = read(); break; } line.append((char)token);

70 Production Reporting DDO ドライバの作成

Page 71: Hyperion SQR Production Reporting 開発者ガイド ボリューム …SQR Production Reporting Studio によるBAPI のレポート作成 ..... 129 SAP R/3 のProduction Reporting

} String ret = line.toString(); if (ret.length()==0) ret = null; return ret; } private int read() throws DataAccessException { int token = 0; try { token = (access.accessReader()).read(); if (token == -1) access.closeReader(); } catch (IOException e) { DataAccessException.rethrow("IOError", new Object[] { classname, "read", e.toString() } ); } return token; }}

手順 4:Rowset の実装Rowset インターフェイスは、Production Reporting DDO の主要インターフェイス

です。このインターフェイスの実装方法を見ると、ドライバのパフォーマンスを

予測できます。CSVRowset クラスを実装する前に、Rowset インターフェイスの背

後にある理論とパフォーマンスを示す項目について説明します。

l Rowset はインターフェイスです。データソースからのデータ取得パフォーマ

ンスを 適化する実装を完成させる必要があります。

l Rowset インターフェイスは、非常に大きな結果セットをサポートします。結

果セットが 1 行または数行しか含まれていないことが分かっていない限り、

結果セット全体をメモリに保持するべきではありません。Production Reporting

DDO には、Rowset と Java Vector を使用する VectorRowset の実装が備わってい

ます。1 行または数行の場合は、これを使用できます。ただし、結果セットを

取得する場合は、VectorRowset クラスは使用しないでください。

l Rowset の実装は、next()メソッドを介して実際にリクエストされるまで、デー

タの取得を延期します。これを利用すると、必要な時に行を取得することで

パフォーマンスを向上させることができます。アプリケーションでは、「事前

取得」やバッファリングを行うこともできますが、事前にすべてのデータを

取得するべきではありません。

l Rowset を使用するアプリケーションは、すべてのデータを取得する必要はあ

りません。close()メソッドにより、まだ残っている結果を取得しないようア

プリケーションに指定します。実装で close()メソッドを利用します。データ

ソースがすべてのデータを処理する必要がある場合は、アプリケーションで

全データの取得を強制するのではなく、ドライバでデータを自動的にスキッ

プすることができます。

l オブジェクトの作成を 小限に抑えるには、next()が呼び出される時に同じ

レコードとフィールドを使用します。新しいフィールドを割り当てる代わり

に、ドライバは、同じフィールドに新しいデータを入力することで、next()

に応答できます。アプリケーションで複数のレコードへの参照を維持する場

合は、行のコピー作成はアプリケーションが行います。ほとんどのアプリケー

手順 4:Rowset の実装 71

Page 72: Hyperion SQR Production Reporting 開発者ガイド ボリューム …SQR Production Reporting Studio によるBAPI のレポート作成 ..... 129 SAP R/3 のProduction Reporting

ションでは、これは必要ないので、余分の作業が必要な理由は何なのでしょ

うか。

これを念頭において、Rowset インターフェイスの CSVRowset 実装を確認します。

この例では、Rowset インターフェイスの全メソッドを実装するメソッドが示され

ています。メモリに 1 行分のデータを保持し、next()メソッドで新しい値を入力

します。

プログラム ex21.sqrpackage demo.csv;import com.sqribe.access.*;import com.sqribe.comutil.*;import java.util.*;public class CSVRowset implements CSV, Rowset { private static final String classname = CSVRowset.class.getName(); private CSVFile csvfile; private SchemaObjectColumns soc; private VectorRow currentRow; public CSVRowset(CSVFile pCSVFile, SchemaObjectColumns pSoc) throws DataAccessException { csvfile = pCSVFile; soc = pSoc; currentRow = new VectorRow(); allocateFields(); csvfile.getLineTokens(); // Position past the headings} public Row getRow() { return currentRow; } public int getFieldCount() { return currentRow.getFieldCount(); } public Field getField(int index) throws DataAccessException { return currentRow.getField(index); } public Field getField(String name) throws DataAccessException { return currentRow.getField(name); } public void close() { try { csvfile.close(); } catch (Exception e) { } }

コンストラクタは、表 13 に示されている 2 つの引数をとります。

表 13 コンストラクタの引数

引数 説明

CSVFile pCSVFile CSV ファイルの抽象を提供します。これにより、ファイルを解析

し、保持するデータを取得できます。

SchemaObjectColumns pSoc この CSV ファイルの列メタデータ。列の名前、サイズ、型を提供

します。

コンストラクタは、Production Reporting DDO の VectorRow を使って、1 つのレ

コードを保持する Row を作成します。このクラスは、フィールドを保持するため

72 Production Reporting DDO ドライバの作成

Page 73: Hyperion SQR Production Reporting 開発者ガイド ボリューム …SQR Production Reporting Studio によるBAPI のレポート作成 ..... 129 SAP R/3 のProduction Reporting

に、Java Vector を使用する Row の簡単な実装を提供します。ドライバは、Row イ

ンターフェイスの独自の実装を提供します。

次に、allocateFields()メソッドを使って、列のメタデータを基にしてフィール

ドを割り当てます。この例は、CSV ファイルから 初の行が読み取ります。この

行は列の見出しです。列のメタデータでこの情報を取得済みであるため、これは

必要ありません。 初のこのレコードはスキップします。

コンストラクタの後の、getRow()メソッド、getFieldCount()メソッドおよび

getField()メソッドに注意してください。これらのメソッドの実装はきわめて単

純です。close()メソッドは、AccessIO オブジェクトとファイルを閉じます。

Rowset インターフェイスでは、close()中のエラーは許可されていないため、

close()メソッド中のエラーは自動的に無視されます。

では、next()メソッドを見てみましょう。

public boolean next() throws DataAccessException { Vector tokens = csvfile.getLineTokens(); if (tokens==null) return false; // end of file reached for (int i=0; i < getFieldCount(); i++) { String value = (String)tokens.elementAt(i); Field f = getField(i); if (value.length()==0) f.setNull(true); else f.setValue(value); } return true; }

CSV ファイルから行を読み取って開始します。フィールドの数とファイルでの順

番に従って、行をフィールドに分割します。フィールドを順番に処理していきま

す。適切なフィールドの値をヌル(ファイルにこのフィールドの値がない場合)、

または Field の setValue()メソッドを使って、実際の値に設定します。Field は

DecimalField、DateField、または TextField のいずれかとなることに注意してくださ

い。適切な setValue()が呼び出されます(これは多様性の基本です)。

next()メソッドは、レコードを処理した場合に true、レコードがない場合とファ

イルの終わりに達した場合は false を返します。

では、allocateFields()メソッドを見てみましょう。

private void allocateFields() throws DataAccessException { Enumeration enum = soc.elements(); SchemaObjectColumn col; while (enum.hasMoreElements()) { col = (SchemaObjectColumn)enum.nextElement(); currentRow.addField(Field.createField(col.getName(), col.getFieldType(), col.getSize(), true)); } }

allocateFields()は、列メタデータを順番に調べ、各列のフィールドを割り当て

ます。Field クラスのcreateField()メソッドにより、指定されたフィールドの型

(2 つ目の引数)を基に、型の決まったフィールドが作成されます。この場合、

DateField、DecimalField、、または Text Field のいずれかが返されます。次に、フィー

ルドが Row に追加されます。

手順 4:Rowset の実装 73

Page 74: Hyperion SQR Production Reporting 開発者ガイド ボリューム …SQR Production Reporting Studio によるBAPI のレポート作成 ..... 129 SAP R/3 のProduction Reporting

74 Production Reporting DDO ドライバの作成

Page 75: Hyperion SQR Production Reporting 開発者ガイド ボリューム …SQR Production Reporting Studio によるBAPI のレポート作成 ..... 129 SAP R/3 のProduction Reporting

4プログラミングの考慮事項

この章の内容

Production Reporting DDO アダプタ. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75

ドライバの編成に関するヒント . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75

メッセージと例外 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 77

プロパティと特性 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 79

各国語対応. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 82

メッセージエディタ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 82

プロパティエディタ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 84

ドライバのテストとデバッグ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 86

Production Reporting DDO アダプタProduction Reporting DDO アダプタは、ドライバに実装されていない機能を提供す

るメソッドをデフォルトで備えています。また、共通関数を実行するヘルパーメ

ソッドの配列もあります。共通関数のメソッドと説明の一覧については、

『Production Reporting DDO API javadoc』を参照してください。

ドライバの編成に関するヒント多くの点で、ドライバは双方向ゲートウェイを表します。一方ではデータソース

と通信し、他方では、Production Reporting DDO インターフェイスを使って、メタ

データ、結果、および実行処理をアプリケーションに示します。これらの処理は、

データソースで認識される一連の呼び出しに変換されます。

l DataSourceAdapter:すべての共通データソースの実装メソッドを処理します。

ドライバを作成するときは、open()メソッドを実装するだけです。このメソッ

ドは指定されたプロパティを使って、データソースへの接続を作成します。

このアダプタクラスのメソッドを使用すると、デフォルトの動作が設定され

ます。

l ConnectionAdapter:すべての共通接続の実装メソッドを処理します。

簡単なドライバでは、ほとんどの操作メソッドを Connection クラスに入れる

ことができます。複雑なドライバでは、Connection クラスが大きく複雑にな

りすぎる場合があります。この場合は、特別なワーカオブジェクトに関数を

指定すると、ドライバを簡単に理解して維持できるようになります。特別な

ワーカクラスは、オブジェクトまたは処理プロセスについて追加できます。

または、特定のクラスでメタデータを階層構造で処理することもできます。

Production Reporting DDO アダプタ 75

Page 76: Hyperion SQR Production Reporting 開発者ガイド ボリューム …SQR Production Reporting Studio によるBAPI のレポート作成 ..... 129 SAP R/3 のProduction Reporting

レジストリエディタProduction Reporting DDO には、アプリケーションの配布に役立つ多数のツールが

あります。例えば、レジストリエディタはその 1 つです。レジストリエディタは、

データ駆動型のアプリケーションです。レジストリエディタツールから設定を有

効にするには、ドライバの作成者はドライバの接続仕様を追加します。

注:

レジストリエディタについて詳しくは、第 5 章「データソースの管理」を参照し

てください。

ä 接続仕様の情報を追加するには、次の手順に従います。

1 ドライバの共通名と記述名を、properties/

com_sqribe_access_DataSourceManager_Properties.properties の DataSources.drivers プロパティ

に追加します。

次のプロパティファイルの断片には、6 つのドライバが示されています。これら

のドライバのテンプレートは、対応する DataSourceManager メッセージファイル

にあります。

l セミコロン(;)は各ペアを区切ります。

l 空白文字は名前と説明を区切ります。説明に空白文字が含まれている場合は、

引用符(“”)で囲む必要があります。

m プロパティの説明を構築する文字列は、メッセージファイル

com_sqribe_access_DataSourceManager.properties の中にあります。

m メッセージファイルには、リソースの文字列(UI ダイアログのラベルの作

成で使用する文字列に似ている)とメッセージテキストが含まれていま

す。

m このプロパティに一覧表示されている名前で始まるリソースの文字列は、

com_sqribe_access_ DataSourceManager_PropertyDescriptions.properties ファ

イルで指定されているクラス、ライブラリ、読み込みなどの擬似プロパ

ティの説明からプロパティの説明を作成します。次の例を参照してくださ

い。

# These are the names, with their descriptions, that we will use to build # property descriptions and entries for the driver templates. # Registry administration tools use these names to provide driver# configuration information.See the API documentation for com.sqribe.access.Registry for more information.#DataSources.drivers= ¥csvacc "CSV driver"; ¥essacc "Essbase driver"; ¥jdbcacc "JDBC driver"; ¥msmdacc "Microsoft ADO MD driver"; ¥psacc "PeopleSoft driver"; ¥sapr3acc "SAP R/3 driver"

2 ドライバのテンプレートの説明を、メッセージファイル msgs/

com_sqribe_access_DataSourceManager.properties に追加します。

76 プログラミングの考慮事項

Page 77: Hyperion SQR Production Reporting 開発者ガイド ボリューム …SQR Production Reporting Studio によるBAPI のレポート作成 ..... 129 SAP R/3 のProduction Reporting

Code ex4b に示す CSV ドライバテンプレートは、レジストリデータソースのエント

リで要求された情報を示します。ただし、接続文字列の各代替値が山括弧(< >)

で囲まれている点が異なります。括弧内のラベルは、レジストリエディタのパラ

メータラベルとして使用されます。

1 つのドライバに複数の接続文字列テンプレートを指定できます。これらのテン

プレートは、複数のライブラリエントリに対応します。Production Reporting DDO

リレーショナルデータベースドライバの場合は、対応するエントリは、関連する

JDBC ドライバと接続文字列を表します。

# CSV driver templatecsvacc.name.string=CSV DataSource Templatecsvacc.class.string=com.sqribe.csvacc.CSVDataSourcecsvacc.lib.string=csvacc.load.string=csvacc.conn.string="CSV:File:<Fully Qualified Directory Path Name>"csvacc.desc.string=This data source represents a directory tree rooted in a file system. ¥Files in the tree having the file extension, ".csv", are interpreted as delimiter ¥separated files. These files represent objects to this driver.## JDBC datasource driver templatejdbcacc.name.string=JDBC DataSource Templatejdbcacc.class.string=com.sqribe.jdbcacc.JDBCDataSourcejdbcacc.lib.string=sun.jdbc.odbc.JdbcOdbcDriver ¥oracle.jdbc.driver.OracleDriver ¥com.sqribe.License.SQRIBE970801Ora ¥com.sybase.jdbc.SybDriver ¥com.sqribe.License.SQRIBE970801MSsqlSybasejdbcacc.load.string=jdbcacc.conn.string="JDBC:ODBC:<ODBC DSN>" ¥"jdbc:oracle:oci7:@<Oracle TNS Name>" ¥"jdbc:Weblogic:@<Oracle TNS Name>" ¥"jdbc:sybase:Tds:<Host Name>:<Port Address>/<Database Name>" ¥"jdbc:Weblogic:Tds:<Host Name>:<Port Address>/<Database Name>"jdbcacc.desc.string=This driver provides data source access through JDBC. ¥The JDBC driver name, e.g., com.sybase.jdbc.SybDriver, is given in the "lib" ¥resource. Only a single name should be specified. This JDBC driver name must ¥have a corresponding connection specification, given in the "conn" resource. ¥The relative entries of the "lib" and "conn" resource lists are correlated, e.g., ¥the "oracle.jdbc.driver.OracleDriver" corresponds to the ¥"jdbc:oracle:oci7:@<Oracle TNS Name>" connection template. ¥This Production Reporting DDO driver provides support to RDBMS tables and stored procedures.

メッセージと例外各クラスがメッセージにアクセスできるようにするには、ドライバが生成するメッ

セージをドライバパッケージの 1 つのファイルに入れます。

CSV の例

例えば、パッケージ demo.csv にドライバが入っている場合は、CSV という空のイ

ンターフェイスを作成します。ドライバパッケージの中の各クラスは、CSV イン

メッセージと例外 77

Page 78: Hyperion SQR Production Reporting 開発者ガイド ボリューム …SQR Production Reporting Studio によるBAPI のレポート作成 ..... 129 SAP R/3 のProduction Reporting

ターフェイスを実装します。この結果、各クラスが CSV のメッセージにアクセス

できるようになります。

さらに、CSV インターフェイスによって空の com.sqribe.access.Access インターフェ

イスが拡張され、Access メッセージがドライバで使用可能になります。Access は

com.sqribe.comutil.Util インターフェイスを拡張するため、ドライバは共通ユーティ

リティのメッセージにもアクセスできるようになります。空の CSV インターフェ

イスは、次のようになります。

package demo.csv;import com.sqribe.access.*;/** * CSV is a holder interface, allowing properties, messages, etc, common * to the csv package to be specified once */public interface CSV extends Access {}

メッセージフォームメッセージファシリティは、ユーザメッセージとログメッセージをサポートしま

す。ログメッセージには、ユーザメッセージよりも詳しい情報が示されます。こ

の両方のメッセージが必ず必要なわけではなく、両方のメッセージを指定しても

無意味な場合もあります。ただし一般的には、この両方を指定することをお勧め

します。

メッセージファシリティには、メッセージの自動ログ記録機能があります。つま

り、メッセージの作成時にファシリティはログメッセージのパターンを検索し、

パターンが見つかるとログエントリを生成します。

メッセージの規則

ユーザメッセージとログメッセージは、特定の規則に従います。これらの規則は

必須ではありませんが、例えば DataAccessException などの Production Reporting

DDO 例外には、rethrow メソッドなどのように、これらの規則が使用されている

ことを見込んだ規則メソッドがあります。

l 初の代替変数は、メッセージを要求するクラス名です。

l 2 番目の代替変数は、メッセージを要求するメソッド名です。

l その他の代替変数がある場合は、メッセージ固有の詳細情報を指定します。

# There are no object names in the from clause of the select statement# 0 The class reporting the error# 1 The method reporting the error# 2 The from clauseObjectNameMissing.text=There are no object names in the FROM clause: "{2}".ObjectNameMissing.logtext={0}.{1}(): There are no object names in the ¥FROM clause: "{2}".

上記の例でわかるように、ユーザメッセージとログメッセージのパターンの違い

は、クラスとメソッド名の「{0}.{1}(): 」のあるなしです。スタックトレースや例

外文字列には、メッセージの代替引数を追加する必要がありません。これらは、

プログラム ex22.sqr に示すように、rethrow 規則メソッドから追加できます。

78 プログラミングの考慮事項

Page 79: Hyperion SQR Production Reporting 開発者ガイド ボリューム …SQR Production Reporting Studio によるBAPI のレポート作成 ..... 129 SAP R/3 のProduction Reporting

プログラム ex22.sqr/** * Throw an exception after logging entry * @exception UtilException * A general exception for data source * operations such as * making a connection or performing a command. * @see ApplicationLog#logMsg */public static void rethrow(String pMsgId, Object[] pArgs) throws UtilException {throw new UtilException((String)pArgs[0], pMsgId, pArgs);}/** * Rethrow exception after logging entry. A stack trace is logged * with the message. * @param pMsgId The message identifier * @param pArgs The substitution arguments for the message, * pArgs[0] is the classname * @param pExc The exception to be recorded * @exception UtilException * A general exception for data source * operations such as * making a connection or performing a command. * @see ApplicationLog#logException */public static void rethrow(String pMsgId, Object[] pArgs, Throwable pExc) throws UtilException {if (pExc instanceof UtilException) throw new UtilException((String)pArgs[0], pMsgId, pArgs);else throw new UtilException((String)pArgs[0], pMsgId, pArgs, pExc);}

例外

エラー通知は例外から出されます。これにより、アプリケーション開発者はメイ

ンのコードパスとは別のパスでエラー処理を編成できます。多くの場合、例外は

rethrow メソッドを使って生成されます。例えば、メッセージファシリティの getMsg

メソッドは、例外を発生させる前にある処理に関するすべてのメッセージを収集

する必要がある場合に使います。

Object[] objs = new Object[] { classname, "bindParameters", new Integer(0), new Integer(parmcount) };addErrorMsg(ApplicationLog.getMsg().getMsg(classname, "TooManyParameters", objs ));

プロパティと特性Production Reporting DDO では、プロパティと特性は別の名前空間に入れられま

す。ただし、両者はほとんど同じ方法で処理されます。つまり、プロパティと特

性は同じ名前であっても、異なるエンティティとして処理されます。名前空間と

フォームが異なるのは純粋にプログラム上の理論によるもので、認識される使用

パターンに起因します。アプリケーションからみると、特性は読み取り専用のオ

ブジェクトプロパティです。ドライバからみると、どちらもオブジェクトプロパ

ティです。ドライバ開発者からみると、アプリケーションで値を変更しない場合

に限り、属性を特性として規定する必要があります。

プロパティと特性 79

Page 80: Hyperion SQR Production Reporting 開発者ガイド ボリューム …SQR Production Reporting Studio によるBAPI のレポート作成 ..... 129 SAP R/3 のProduction Reporting

説明すべてのプロパティと特性は、関連付けられた説明が必要です。特性が文字列で、

且つ実行時に計算されないため、説明が不要と思われる場合があります。この場

合は、メッセージ文字列型にしてください。

ローカライズプロパティ、特性、プロパティと特性の値、およびプロパティと特性の説明はロー

カライズできます。属性の詳細レベルでローカライズを選択できます。つまり、

プロパティリソースバンドル内の 1 つのプロパティ属性をローカライズして、ロー

カライズされたプロパティリソースバンドルに入れることができます。ローカラ

イズできるのは、プロパティの説明の名前だけです。または、名前と記述名をロー

カライズするように選択できます。

階層構造プロパティと特性の説明は階層構造にできます。アプリケーションはこの階層構

造を使って、プロパティのページを作成できます。ログオンプロパティは階層構

造です。レジストリエディタはこの構造を使って、ログオンパネルを作成します。

図 4 に示すクライアント、パスワード、および言語は、第 1 レベルのリーフ属性

です。ゲートウェイ、負荷分散、負荷分散なし、詳細、その他は、第 1 レベルの

インデックスです。このログオンプロパティの説明は、プロパティリソースバン

ドル com_sqribe_sapr3ace_DataSourcePropertyDescription.properties にあります。図

4 のダイアログボックスは、com.sqribe.accessui パッケージの一部です。レジスト

リエディタは、プロパティ logonがログオン属性であることを認識しますが、ド

ライバ固有のログオンセマンティクスは認識しません。

図 4 [ログイン]ダイアログボックス

プログラム ex23.sqr は、クライアントおよび言語のデフォルト値は接続文字列の

一部であり、logon.type と logon.trace のデフォルト値は

com_sqribe_sapr3ace_DataSourcePropertyDescription.properties ファイル内にあるこ

とを示します。規則従って、接続文字列の属性はデフォルト値に結合されます。

80 プログラミングの考慮事項

Page 81: Hyperion SQR Production Reporting 開発者ガイド ボリューム …SQR Production Reporting Studio によるBAPI のレポート作成 ..... 129 SAP R/3 のProduction Reporting

例:

registry.properties ファイル内の接続文字列

SAPR3.conn=SAPR3:JNI:ASHOST=sundance SYSNR=00 CLIENT=800 LANG=EN

例:

プロパティの説明

com_sqribe_sapr3acc_SAPR3DataSource_PropertyDescriptions.properties

プログラム ex23.sqrlogon.Name=Logonlogon.Description=Logon is required to establish a connection with an SAP R3 data source. ¥The SAP R3 data source takes a number of parameters as part of the connection string. ¥Included among these are the operator (or user) identification and the operator (or user) ¥password. The user identification and password are included as logon information. The remaining ¥connection attributes are part of the connection string provided with the data source ¥description (see the SAP R3 DataSource interface documentation for a complete description). ¥To summarize, the SAP R3 connection string may have a form similar to: ¥SAPR3:JNI:ASHOST=hs0311 SYSNR=53. ¥Where the ASHOST would be replaced by the data source host identifier; theSYSNR would be replaced by ¥the system number for the host. ¥The client (CLIENT=), user identification (USER=), password (PASSWD=) andlanguage (LANG=) ¥are appended to the connection string. These are usually retained asproperties. A user ¥interface will normally prompt for these values.logon.Indices=logon.client ¥user ¥password ¥logon.language ¥logon.gateway ¥......logon.client.Name=Clientlogon.client.Description=SAP logon client identifier.logon.advanced.Indices=logon.type ¥logon.check ¥logon.tracelogon.type.Name=RFC Server Typelogon.type.Description=The RFC server type. This parameter should be leftempty or set to 3, the default......

例:

プロパティ値

com_sqribe_sapr3acc_SAPR3DataSource_Properties.propertieslogon.client=logon.language=logon.type=3logon.check=1

プロパティと特性 81

Page 82: Hyperion SQR Production Reporting 開発者ガイド ボリューム …SQR Production Reporting Studio によるBAPI のレポート作成 ..... 129 SAP R/3 のProduction Reporting

logon.trace=0logon.dest=logon.gwhost=logon.gwserv=logon.mshost=logon.r3name=logon.group=logon.ashost=logon.sysnr=

各国語対応Production Reporting DDO は完全な国際版です。メッセージファシリティとプロパ

ティファシリティは、プロパティリソースバンドルを利用して、ローカライズを

サポートします。アプリケーション開発者とドライバ開発者は、この 2 つのファ

シリティを使用してパッケージのローカライズを行ってください。メッセージファ

シリティとプロパティファシリティについては、次の章で詳しく説明します。

メッセージエディタProduction Reporting DDO ドライバのメッセージプロパティファイルを作成するに

は、メッセージエディタを使用します。

図 5 メッセージエディタのメインウィンドウ

メッセージエディタには以下が含まれます。

l Message Files:すべてのメッセージファイルです。ルートノードがメッセージ

ファイル名です。各リーフノードはメッセージファイルを表します。このファ

イルの名前はメッセージ ID です。メッセージ ID ごとに、種類の異なるメッ

セージを入れることができます。

82 プログラミングの考慮事項

Page 83: Hyperion SQR Production Reporting 開発者ガイド ボリューム …SQR Production Reporting Studio によるBAPI のレポート作成 ..... 129 SAP R/3 のProduction Reporting

l Messages:選択したメッセージファイルに関する情報です。メッセージファイ

ルに他のメッセージが含まれている場合は、ツリーが展開表示されます。

l Message Content:選択したメッセージの内容です。見出し情報を追加したり、

ファイルの内容を編集したりできます。

l Comments:メッセージに関するコメントです。1 つのコメントを、同じメッ

セージ ID を持つすべてのメッセージに追加できます。

メッセージの読み込み

ä メッセージを読み込むには、次の手順に従います。

1 [File]、[Load]、[Message Files]を選択します。

2 [Load Messages]ダイアログボックスに情報を入力し、[Load]をクリックします。

注:

Java クラスパスに msgs ディレクトリがない場合は、エラーは表示されずに、ディ

レクトリの作成を要求するメッセージが出されます。

表 14 メッセージファイルを読み込む方法

オプション 説明

SystemDefault

クラスパスに含まれている msgs ディレクトリに保存されているメッセージファ

イルを読み込みます。

Load byClass

Production Reporting DDO ドライバクラス名を入力して、対応するメッセージファイ

ルを読み込みます。例えば、com.sqribe.xmlacc と入力して、msgs ディレクトリか

ら com_sqribe_xmlacc_XMLacc.properties を読み込みます。

Load byFolder

指定するフォルダのパスを入力します。

Load byFile

メッセージプロパティファイルを読み込みます。

1. テキストボックスの横にある小さなボタンをクリックして、ファイルのダイアログボックスを表示します。

2. メッセージファイルを msgs ディレクトリから選択します(ファイルのダイア

ログボックスは、クラスパスに含まれている msgs ディレクトリを指します)。

3. メッセージファイル名を入力し、[開く]をクリックします。

これで、新しいメッセージファイル名がテキストボックスにコピーされます。

4.[読み込み]をクリックして、メッセージファイルを作成します。

メッセージエディタ 83

Page 84: Hyperion SQR Production Reporting 開発者ガイド ボリューム …SQR Production Reporting Studio によるBAPI のレポート作成 ..... 129 SAP R/3 のProduction Reporting

オプション 説明

ファイルの作成時刻は、新しく作成したメッセージファイルのヘッダーセクションに保存されます。

メッセージの追加

ä 新しいメッセージ ID を追加するには、次の手順に従います。

1 [Messages]のルートノードを選択します。

ルートノードの名前はメッセージファイル名です。

2 [Add]をクリックして、[Add New Message]ダイアログボックスを表示します。

3 新しい名前を入力し、メッセージの型を選択します。

メッセージの内容の編集

ä メッセージの内容を編集するには、次の手順に従います。

1 メッセージを選択します。

2 [Message Content]の下のテキストを編集し、[File]、[Save]を選択します。

プロパティエディタProduction Reporting DDO ドライバのプロパティ、特性、プロパティの説明、およ

び特性の説明の各ファイルを作成/編集するには、プロパティエディタを使いま

す。

図 6 プロパティエディタのメインウィンドウ

84 プログラミングの考慮事項

Page 85: Hyperion SQR Production Reporting 開発者ガイド ボリューム …SQR Production Reporting Studio によるBAPI のレポート作成 ..... 129 SAP R/3 のProduction Reporting

プロパティエディタには以下が含まれます。

l PropertySheet:Production Reporting DDO ドライバの DataSource クラス名です。

プロパティおよび特性を編集するには、Production Reporting DDO ドライバの

クラス名を 初に選択します。

l Information: 選択したプロパティシート用のクラス名とディレクトリです。

l Description:説明ファイルのプロパティ名です。ルートノードは、ドライバの

DataSource クラスの名前です。非リーフノードは、インデックスがヌルではな

いプロパティです。リーフノードは、インデックスがヌルのプロパティです。

l Properties/Capabilities:選択したタブ(Property または Capability)に合わせて、

ドライバのプロパティファイル内のプロパティまたは特性ファイル内の特性

を表示します。

l Description Content:Description 内で選択されているプロパティまたは特性の

属性です。

l Description Content:Description 内で選択されているプロパティまたは特性の

属性です。[Edit]をクリックして値を編集します。

プロパティの読み込み

ä プロパティを読み込むには、次の手順に従います。

1 [ファイル]、[開く]を選択します。

2 [Load PropertySheet]ダイアログボックスに情報を入力し、[Load]をクリックします。

注:

Java クラスパスに properties ディレクトリがない場合は、エラーメッセージは表示

されず、ディレクトリの作成を要求するメッセージが出されます。

表 15 プロパティファイルを読み込む方法

オプション 説明

SystemDefault

クラスパスに含まれている properties ディレクトリからプロパティファイルを読

み込みます。

Load byClass

Production Reporting DDO ドライバの DataSource クラス名を入力します。

例えば、com.sqribe.xmlacc.XMLDataSourceと入力すると、properties ディレク

トリから DDO xmlドライバプロパティファイルが読み込まれます。

プロパティエディタ 85

Page 86: Hyperion SQR Production Reporting 開発者ガイド ボリューム …SQR Production Reporting Studio によるBAPI のレポート作成 ..... 129 SAP R/3 のProduction Reporting

ドライバのテストとデバッグドライバ開発者用に、3 つのコマンドラインのサンプルプログラムと、グラフィ

カルクエリエディタが用意されています。コマンドラインのサンプルプログラム

は、¥hyperion¥products¥biplus¥docs¥Server¥DDO¥Testにあります。

l AccessMeta:メタデータ階層ドライバの機能をテストするために使用されま

す。スキーマ名を引数として受け取り、名前を指定したスキーマをルートと

して持つサブツリーのメタデータを表示する HTML 形式のレポートを生成し

ます。

l AccessObjects:Production Reporting DDO オブジェクトの取得インターフェイ

スをサポートするドライバに使用されます。修飾されたオブジェクト名が指

定されると、オブジェクトの結果セットを表示する HTML 形式のレポートを

生成します。

l AccessObjects:Production Reporting DDO 呼び出しの取得インターフェイスを

サポートするドライバに使用されます。修飾されたプロシージャ名とパラメー

タリストが指定されると、IN/OUT パラメータと出力パラメータ、戻り値、お

よび結果セットを表示する HTML 形式のレポートを生成します。

クエリエディタを使ったドライバのテストとデバッグドライバをデバッグするには、Production Reporting DDO クエリエディタを使いま

す。クエリエディタはデータベースクエリエディタと同様に動作します。クエリ

エディタを使って、テーブルを検索したり、プロシージャを実行して戻り値を確

認したり、コマンドや SQL ステートメントをテストしたり、行セットを取得した

りできます。

ä クエリエディタでテストしデバッグするには、次の手順に従います。

1 [スタート]、[プログラム]、[Oracle EPM System]、[Reporting and Analysis]、[SQR Production

Reporting for DDO]、[Query Editor]を選択します。

2 [File]、[Open]を選択して、[Open Data Source]ウィンドウを表示します。

3 データソースを選択し、ログオンします。

4 [Meta Data]タブを選択し、コンテンツを表示します。

5 任意のノードを選択します。

図 7 に、SAPBW データソースのオブジェクトを表示するクエリエディタのウィン

ドウを示します。

86 プログラミングの考慮事項

Page 87: Hyperion SQR Production Reporting 開発者ガイド ボリューム …SQR Production Reporting Studio によるBAPI のレポート作成 ..... 129 SAP R/3 のProduction Reporting

図 7 クエリエディタに表示されるスキーマオブジェクトビュー

ドライバのテストとデバッグ 87

Page 88: Hyperion SQR Production Reporting 開発者ガイド ボリューム …SQR Production Reporting Studio によるBAPI のレポート作成 ..... 129 SAP R/3 のProduction Reporting

88 プログラミングの考慮事項

Page 89: Hyperion SQR Production Reporting 開発者ガイド ボリューム …SQR Production Reporting Studio によるBAPI のレポート作成 ..... 129 SAP R/3 のProduction Reporting

5データソースの管理

この章の内容

データソースの仕様 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 89

レジストリエディタへのデータソース設定の追加 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 90

データソースの説明とテンプレート . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 91

データソースの仕様次にデータソースの仕様の構成内容を示します。

l データソース名(必須):データソースの論理名。Production Reporting DDO

アプリケーションは、この名前を接続に関連付けます。

l 説明(オプション):ユーザがデータソースを簡単に選択できるようにしま

す。Production Reporting DDO アプリケーションは、データソース名と共に記

述名も表示します。「ツールチップ」に表示することもできます。

l クラス(必須):選択されたデータソースについて、Production Reporting DDO

データソースマネージャが読み込むクラス名です。

l バリアント:Production Reporting DDO ドライバは、1 つまたは複数のデータ

ソースバリアントをサポートします。例えば、JDBC ドライバは、多数のデー

タベースベンダをサポートしています。各データベースが、バリアントにな

ります。

l Java ライブラリ(ドライバによっては必須の場合がある):ドライバによって

は、データソースのドライバクラスのインスタンスを作成する前に、別のク

ラスを読み込まなければならないものがあります。ドライバによってクラス

が供給され、レジストリエディタでそのドライバを選択すると、対応するク

ラスが表示されます。ここには、何も追加する必要はありません。

l ネイティブライブラリ(ドライバによっては必須の場合がある):ドライバに

よっては、データソースのドライバクラスのインスタンスを作成する前に、

プラットフォーム固有の Java ネイティブインターフェイス(Java Native

Interface:JNI)ライブラリを読み込まなければならないものがあります。ドラ

イバによってクラスが供給され、レジストリエディタでそのドライバを選択

すると、対応するクラスが表示されます。ここには、何も追加する必要はあ

りません。

l 接続文字列(オプション):どのドライバでも接続情報が必要ですが、ドライ

バによっては、接続するときに、接続情報を指定できるものがあります。そ

れ以外のドライバは、あらかじめ情報を設定しておく必要があります。これ

らのドライバには、レジストリエディタのダイアログボックスで使用する接

続文字列のテンプレートが用意されています。

データソースの仕様 89

Page 90: Hyperion SQR Production Reporting 開発者ガイド ボリューム …SQR Production Reporting Studio によるBAPI のレポート作成 ..... 129 SAP R/3 のProduction Reporting

レジストリエディタへのデータソース設定の追加Production Reporting DDO レジストリエディタは、データソースを管理するための

グラフィカルインターフェイスです。Production Reporting DDO では複数のデータ

ソースが含まれている複数のレジストリを使用できます。オブジェクトと接続方

法は、データソースで決まります。

Production Reporting DDO レジストリエディタを使用すると、レジストリをすばや

く作成、および更新できます。また、接続のテスト機能も搭載されているので、

実際にアプリケーションで使用する前に、データソースの仕様が正しいかどうか

を確認できます。

ここでは、Production Reporting DDO レジストリエディタを使用して、Oracle デー

タソースの仕様を追加する方法を説明します。

ä レジストリに仕様を追加するには、次の手順に従います。

1 [スタート]、[プログラム]、[Oracle EPM System]、[Reporting and Analysis]、[Production

Reporting]、[DDO]、[Registry Editor]を選択してレジストリエディタを起動します。

2 [ファイル] > [開く]を選択します。

3 [Open Registry]ウィンドウで[Registry]を選択し、[Open]をクリックします。

「Registry」は、デフォルトレジストリなので必ず表示されます。

4 レジストリエディタのメインウィンドウで[Add]をクリックします。

5 [Create New Data Source]ダイアログボックスでドライバ名を選択し、[OK]をクリック

します。

これは、データソースへの接続に必要な Production Reporting DDO ドライバです。

6 [Setup Data Source]ダイアログボックスに、データソースの情報を入力します。

7 [Build]をクリックして、[Build Connection String]ウィンドウを開き、必要な情報を入

力します。

8 [OK]をクリックして[Setup Data Source]ダイアログボックスに戻り、[Test]をクリッ

クして、データソースの仕様を確認します。

データソースの使用が正しい場合は、接続のテストが正常に終了したことを示す

メッセージが表示され、[ログオン]ダイアログボックスが表示されます。この例

では、[ログオン]ダイアログボックスに Oracle ユーザ名とパスワードを入力し

て[OK]をクリックします。

データソース仕様が間違っている場合は、エラーメッセージが表示されるので、

データベースの仕様を入力し直します。

9 [OK]をクリックしてメインウィンドウに戻り、ツールバーの[Save Registry]ボタン

をクリックして情報を保存します。

データソースの情報を保存した後も、レジストリエディタは開いたままなので、

別のデータソースの仕様の作成や変更を行えます。他に変更しない場合は、[ファ

イル]、[終了]を選択して、レジストリエディタを閉じます。

90 データソースの管理

Page 91: Hyperion SQR Production Reporting 開発者ガイド ボリューム …SQR Production Reporting Studio によるBAPI のレポート作成 ..... 129 SAP R/3 のProduction Reporting

データソースの説明とテンプレート次に、サポートされるドライバ接続ごとにデータソースとパラメータについて説

明します。サポートされるデータソースドライバ:

l Hyperion Essbase

l SAP R/3 および SAP BW

l Microsoft OLEDB for OLAP

l Microsoft OLEDB

l JDBC

l XML

l 区切り文字で区切られた値

l OMG Corba のサンプル

l Microsoft DCOM のサンプル

l CSV のサンプル

Hyperion Essbaseこのデータソースは Essbase データベースです。Essbase は多次元データベースで、

オブジェクトはキューブを表します。このドライバを使用するためには、Essbase

クライアントライブラリがインストールされていることが必要です。

次の Hyperion Essbase 接続がサポートされています。

l ホスト名

l IP アドレス

注:

Production Reporting DDO を使って Essbase データソースに接続するときは、

ARBORPATH 変数を Essbase クライアントに追加し、Essbase の共有ライブラリ

ファイルの位置をパスに追加する必要があります。

ホスト名

テンプレート

<Host Name>

パラメータ

Host Name

Essbase サーバのデフォルトのホスト名。

例:

Essbase.acme.com

データソースの説明とテンプレート 91

Page 92: Hyperion SQR Production Reporting 開発者ガイド ボリューム …SQR Production Reporting Studio によるBAPI のレポート作成 ..... 129 SAP R/3 のProduction Reporting

IP アドレス

テンプレート

<IP Address>

パラメータ

IP Address

Essbase サーバのデフォルトの IP アドレス

例:

129.3.4.50

SAP R/3 および SAP BWこのドライバは、SAP R/3 および SAP BW データソースにアクセスできます。次の

SAP 接続がサポートされています。

l 分散されない直接接続

l 分散された接続

l 外部ゲートウェイ接続

l シングルホップの SAPRouter 接続

接続文字列には、任意の SAP ログオンパラメータを含めることができます。

CLIENT:クライアント番号。

LANG:ユーザ言語。

TYPE:RFC サーバのタイプ。何も指定しないか、デフォルトの 3 をそのまま使用

します。

CHECK:オープン中の SAP のログオンチェック。デフォルトは 1 です。常にデ

フォルトを使用してください。

TRACE:RFC トレースログを作成します。デフォルトは 0 で、トレースログを作

成しません。

DEST:saprfc.ini を使用する場合に、saprfc.ini で指定する接続先。

GWHOST:サーバが R/2 または外部の場合の SAP ゲートウェイのホスト名。

GWSERV:サーバが R/2 または外部の場合の SAP ゲートウェイのサービス。

MSHOST:負荷分散を使用する場合の SAP メッセージサーバのホスト名。

R3NAME:負荷分散を使用する場合の R/3 システム名。

GROUP:負荷分散を使用する場合のアプリケーションサーバのグループ名。空白

が含まれている名前は引用符で囲む必要があります。例えば“Finance Group”。

ASHOST:負荷分散なしで R/3 を使用する場合のアプリケーションサーバのホス

ト名。

92 データソースの管理

Page 93: Hyperion SQR Production Reporting 開発者ガイド ボリューム …SQR Production Reporting Studio によるBAPI のレポート作成 ..... 129 SAP R/3 のProduction Reporting

SYSNR:負荷分散なしで R/3 を使用する場合のアプリケーションサーバの SAP シ

ステム番号。

TPHOST:外部 RFC プログラムサーバのホスト名。

TPNAME:外部 RFC サーバプログラムのパスと名前、または登録した RFC サーバ

プログラムの ID。

分散されない直接接続

テンプレート

SAPR3:JNI:ASHOST=<Host Name> SYSNR=<SAP System Number> CLIENT=<Client Number> LANG=<Language>

SAPBW:JNI:ASHOST=<Host Name> SYSNR=<SAP System Number> CLIENT=<Client Number> LANG=<Language>

パラメータ

Host Name

特定のアプリケーションサーバのデフォルトのホスト名。ホスト名(例えば

ws1.acme.com)で指定することも、IP アドレス(例えば 129.3.4.50)で指定するこ

ともできます。

SAP System Number

R/3 または SAP BW アプリケーションサーバのデフォルトのシステム番号。通常は

2 桁または 3 桁の値です。

Client Number

この接続のユーザのデフォルトのクライアント番号。通常は 3 桁の値です。

Language

この接続のユーザのデフォルトの言語。SAP 言語コードまたは ISO 言語コードの

どちらかです。

例:

SAPR3:JNI:ASHOST=R3Server SYSNR=01 CLIENT=850 LANG=EN

SAPBW:JNI:ASHOST=BWServer SYSNR=03 CLIENT=800 LANG=EN

分散された接続

テンプレート

SAPR3:JNI:MSHOST=<Message Server> R3NAME=<R/3 System Name> GROUP=<Application Group> CLIENT=<Client Number> LANG=<Language>

SAPBW:JNI:MSHOST=<Message Server> BWNAME=<SAPBW System Name> GROUP=<Application Group> CLIENT=<Client Number> LANG=<Language>

パラメータ

Message Server

データソースの説明とテンプレート 93

Page 94: Hyperion SQR Production Reporting 開発者ガイド ボリューム …SQR Production Reporting Studio によるBAPI のレポート作成 ..... 129 SAP R/3 のProduction Reporting

特定のメッセージサーバのデフォルトのホスト名。ホスト名(例えば

ws1.acme.com)で指定することも、IP アドレス(例えば 129.3.4.50)で指定するこ

ともできます。

R/3 System Name or SAP BW System Name

負荷分散を使用する場合の R/3 または SAP BW アプリケーションサーバのデフォ

ルトの名前。このパラメータ値を指定するのは、サーバが R/3 または SAP BW で、

負荷分散を使用している場合だけです。それ以外の場合は、何も指定しません。

Application Group

負荷分散を使用する場合のアプリケーションサーバグループのデフォルトの名前。

名前に空白が含まれている場合は、引用符で囲む必要があります。例えば“Finance

Group”。このパラメータ値を指定するのは、サーバが R/3 または SAP BW で、負

荷分散を使用している場合だけです。それ以外の場合は、何も指定しません。

Client Number

この接続のユーザのデフォルトのクライアント番号。通常は 3 桁の値です。

Language

この接続のユーザのデフォルトの言語。SAP 言語コードまたは ISO 言語コードの

どちらかです。

例:

SAPR3:JNI:MSHOST=R3MSGSVR R3NAME=FINANCE GROUP=PUBLIC CLIENT=850 LANG=EN

SAPBW:JNI:MSHOST=BWMSGSVR R3NAME=FINANCE GROUP=PUBLIC CLIENT=850 LANG=EN

外部ゲートウェイ接続

テンプレート

SAPR3:JNI:TYPE=E TPHOST=<Server Host Name> TPNAME=<Server Program Name> GWHOST=<Gateway Host> GWSERV=<Gateway Server> CLIENT=<Client Number> LANG=<Language>

SAPBW:JNI:TYPE=E TPHOST=<Server Host Name> TPNAME=<Server Program Name> GWHOST=<Gateway Host> GWSERV=<Gateway Server> CLIENT=<Client Number> LANG=<Language>

パラメータ

Server Host Name

外部 RFC プログラムサーバのデフォルトのホスト名。ホスト名(例えば

ws1.acme.com)で指定することも、IP アドレス(例えば 129.3.4.50)で指定するこ

ともできます。

Server Program Name

外部 RFC サーバプログラムのデフォルトのパスと名前、または登録した RFC サー

バプログラムの ID。このパラメータ値は、サーバが外部の場合にだけ指定しま

す。それ以外の場合は、何も指定しません。

Gateway Host

94 データソースの管理

Page 95: Hyperion SQR Production Reporting 開発者ガイド ボリューム …SQR Production Reporting Studio によるBAPI のレポート作成 ..... 129 SAP R/3 のProduction Reporting

この接続のクライアントのパートナーである、ゲートウェイホストの IP アドレス

のホスト名(ほとんどの場合は IP アドレス)。

Gateway Server

この接続のゲートウェイホストのパートナーである、ゲートウェイサーバの IP ア

ドレスのホスト名(ほとんどの場合は IP アドレス)。

Client Number

この接続のユーザのデフォルトのクライアント番号。通常は 3 桁の値です。

Language

この接続のユーザのデフォルトの言語。SAP 言語コードまたは ISO 言語コードの

どちらかです。

例:

SAPR3:JNI:TPHOST=R3EXTSVR TPNAME=R3EXTPGM CLIENT=850 LANG=EN GWHOST=204.79.199.5 GWSERV=207.213.200.19

SAPBW:JNI:TPHOST=BWEXTSVR TPNAME=BWEXTPGM CLIENT=850 LANG=EN GWHOST=204.79.199.5 GWSERV=207.213.200.19

シングルホップの SAPRouter 接続

テンプレート

SAPR3:JNI:ASHOST=/H/<SAP Router Host>/H/<Gateway Host>/H/<Host Name> SYSNR=<SAP System Number> CLIENT=<Client Number> LANG=<Language>

SAPBW:JNI:ASHOST=/H/<SAP Router Host>/H/<Gateway Host>/H/<Host Name> SYSNR=<SAP System Number> CLIENT=<Client Number> LANG=<Language>

パラメータ

SAP Router Host

SAPRouter アプリケーションのホスト名または IP アドレス。

Gateway Host

この接続の SAPRouter のパートナーである、ゲートウェイホストのホスト名また

は IP アドレス(ほとんどの場合は IP アドレス)。

Host Name

特定のアプリケーションサーバのデフォルトのホスト名。ホスト名(例えば

ws1.acme.com)で指定することも、IP アドレス(例えば 129.3.4.50)で指定するこ

ともできます。

SAP System Number

R/3 アプリケーションサーバのデフォルトのシステム番号。通常は 2 桁または 3

桁の値です。

Client Number

この接続のユーザのデフォルトのクライアント番号。通常は 3 桁の値です。

Language

データソースの説明とテンプレート 95

Page 96: Hyperion SQR Production Reporting 開発者ガイド ボリューム …SQR Production Reporting Studio によるBAPI のレポート作成 ..... 129 SAP R/3 のProduction Reporting

この接続のユーザのデフォルトの言語。SAP 言語コードまたは ISO 言語コードの

どちらかです。

例:

SAPR3:JNI:ASHOST=/H/10.213.33.238/H/204.79.199.5/H/

207.213.200.19 SYSNR=01 CLIENT=850 LANG=EN

SAPBW:JNI:ASHOST=/H/10.213.33.238/H/204.79.199.5/H/

207.213.200.19 SYSNR=01 CLIENT=850 LANG=EN

Microsoft OLEDB for OLAPこのデータソースは Microsoft OLAP サーバを表します。オブジェクトはキューブ

を表します。このドライバを使用するためには、Microsoft SQLServer OLAP クライ

アントライブラリがインストールされていることが必要です。Microsoft OLEDB for

OLAP にはプロバイダから接続できます。

プロバイダ

テンプレート

Data Source=<Server Name>;Provider=<Driver Provider Name>{msolap};Initial Catalog=<Catalog Name>

パラメータ

Server Name

ODBC 論理データソース名。

Driver Provider Name

ドライバのプロバイダの名前。デフォルトは msolap です。デフォルトの値を変更

する必要はありません。

Catalog Name

分析するキューブが含まれているカタログの名前。

例:

Data Source=JAWS;Provider=msolap;Initial Catalog=Food Mart

Microsoft OLEDBこのドライバは、Microsoft ADO を介してデータソースにアクセスします。OLE

DB プロバイダには、ADO MSDASQL for ODBC データベース、MSIDXS for Microsoft

Index Server、ADSDSOObject for Microsoft Active Directory Service、

Microsoft.Jet.OLEDB.3.51 for Microsoft Jet データベース、SQLOLEDB for Microsoft

SQL Server、MSDAORA for Oracle データベースがあります。

Microsoft OLEDB にはプロバイダから接続できます。

96 データソースの管理

Page 97: Hyperion SQR Production Reporting 開発者ガイド ボリューム …SQR Production Reporting Studio によるBAPI のレポート作成 ..... 129 SAP R/3 のProduction Reporting

プロバイダ

テンプレート

Data Source=<Data Source Name>;Provider=<Driver Provider Name>{MSDASQL SQLOLEDB MSDAORA Microsoft.Jet.OLEDB.3.51 MSIDXS ADSDSOObject };Initial Catalog=<Database Name>

パラメータ

Data Source Name

ODBC 論理データソース名。

Driver Provider Name

ドライバのプロバイダの名前。次のいずれかを選択できます。MSDASQL、

SQLOLEDB、MSDAORA、Microsoft.Jet.OLEDB.3.51、MSIDXS、および

ADSDSOObject。

Database Name

指定されたデータソース内のデータベースの名前。

例:

Data Source=JAWS;Provider=MSDASQL;Initial Catalog=Food

JDBCこのドライバは、JDBC を介してデータソースにアクセスします。JDBC ドライバ

名(例えば com.sybase.jdbc.SybDriver)は、「lib「リソースに指定されています。

名前は 1 つだけ指定します。この JDBC ドライバ名は、対応する接続仕様が「conn「

リソースで指定されていることが必要です。このドライバは、RDBMS テーブルと

ストアドプロシージャをサポートします。

次の JDBC 接続がサポートされています。

l JDBCODBC

l Oracle シンクライアント

l Oracle OCI クライアント

l Sybase シンクライアント

l DB/2 シンクライアント

l DB/2 ローカルクライアント

l Informix シンクライアント

l Hyperion DB2 クライアント

l Hyperion Informix クライアント

l Hyperion Oracle クライアント

l Hyperion SQL Server クライアント

l Hyperion Sybase クライアント

データソースの説明とテンプレート 97

Page 98: Hyperion SQR Production Reporting 開発者ガイド ボリューム …SQR Production Reporting Studio によるBAPI のレポート作成 ..... 129 SAP R/3 のProduction Reporting

JDBCODBC

テンプレート

JDBC:ODBC:<ODBC DSN>

パラメータ

ODBC DSN

ODBC 論理データソース名。

例:

JDBC:ODBC:Northwind

Oracle シンクライアント

環境変数

CLASSPATH=<ORAHOME>/jdbc/lib/classes111.zip;

テンプレート

jdbc:oracle:thin:@<Host Name>:<Port Address>:<Oracle TNS Name>

パラメータ

Host Name

Oracle データベースサーバのホスト名。ホスト名(例えば ws1.acme.com)で指定

することも、IP アドレス(例えば 129.3.4.50)で指定することもできます。

Port Address

Oracle データベースサーバのホスト名のポート番号。これは 0 ~ 64565 の間の値

です。

Oracle TNS Name

接続の Oracle 論理ネットワーク名。

例:

jdbc:oracle:thin:@swhale:1521:Oracle.World

Oracle OCI クライアント

環境変数

CLASSPATH=<ORAHOME>/jdbc/lib/classes111.zip;

テンプレート

jdbc:oracle:oci<Oracle Version>{7 8}:@<Oracle TNS Name>

98 データソースの管理

Page 99: Hyperion SQR Production Reporting 開発者ガイド ボリューム …SQR Production Reporting Studio によるBAPI のレポート作成 ..... 129 SAP R/3 のProduction Reporting

パラメータ

Oracle Version

データベースサーバのクライアントライブラリの Oracle バージョン番号。有効値

は 7 および 8。

Oracle TNS Name

接続の Oracle 論理ネットワーク名。

例:

jdbc:oracle:oci8:@Oracle.World

Sybase シンクライアント

環境変数

CLASSPATH=<SYBHOME>/jConnect-4_2/classes;

テンプレート

jdbc:sybase:Tds:<Host Name>:<Port Address>/<Database Name>

パラメータ

Host Name

Sybase データベースサーバのホスト名。ホスト名(例えば ws1.acme.com)で指定

することも、IP アドレス(例えば 129.3.4.50)で指定することもできます。

Port Address

Sybase データベースサーバのホスト名のポート番号。これは 0 ~ 64565 の間の値

です。

Database Name

Sybase データベース名。

例:

jdbc:sybase:Tds:swhale:2545/SWHALE11

DB/2 シンクライアント

環境変数

CLASSPATH=<DB2HOME>/java/db2java.zip;

PATH=<DB2HOME>/bin;%PATH%

テンプレート

jdbc:db2:<Host Name>:<Port Address>/<Database Name>

データソースの説明とテンプレート 99

Page 100: Hyperion SQR Production Reporting 開発者ガイド ボリューム …SQR Production Reporting Studio によるBAPI のレポート作成 ..... 129 SAP R/3 のProduction Reporting

パラメータ

Host Name

DB/2 データベースサーバのホスト名。ホスト名(例えば ws1.acme.com)で指定す

ることも、IP アドレス(例えば 129.3.4.50)で指定することもできます。

Port Address

DB/2 データベースサーバのホスト名のポート番号。これは 0 ~ 64565 の間の値で

す。

Database Name

DB/2 データベース名。

例:

jdbc:db2:mooneye:50000/db2inst

DB/2 ローカルクライアント

環境変数

CLASSPATH=<DB2HOME>/java/db2java.zip;

PATH=<DB2HOME>/bin;%PATH%

テンプレート

jdbc:db2:<Database Name>

パラメータ

Database Name

DB/2 データベース名。

例:

jdbc:db2:db2inst

Informix シンクライアント

環境変数

CLASSPATH=<IFXHOME>/1.4/lib/ifxjdbc.jar;

テンプレート

jdbc:informix-sqli://<Host Name>:<Port Address>/<Database Name>:INFORMIXSERVER=<Server Name>

パラメータ

Host Name

Informix データベースサーバのホスト名。ホスト名(例えば ws1.acme.com)で指

定することも、IP アドレス(例えば 129.3.4.50)で指定することもできます。

100 データソースの管理

Page 101: Hyperion SQR Production Reporting 開発者ガイド ボリューム …SQR Production Reporting Studio によるBAPI のレポート作成 ..... 129 SAP R/3 のProduction Reporting

Port Address

Informix データベースサーバのホスト名のポート番号。これは 0 ~ 64565 の間の

値です。

Database Name

Informix データベース名。

Server Name

Informix サーバ名。

例:

jdbc:informix-sqli://swhale:1521/nickldb:INFORMIXSERVER=server01;

Hyperion DB2 クライアント

テンプレート

jdbc:hyperion:db2://<Host Name>:<Port Address>; databaseName=<Database Name>

パラメータ

Host Name

DB2 データベースサーバのホスト名。ホスト名(例えば ws1.acme.com)で指定す

ることも、IP アドレス(例えば 129.3.4.50)で指定することもできます。

Port Address

指定された DB2 データベースサーバのポート番号。これは 0 ~ 64565 の間の値で

す。

Database Name

DB/2 データベース名。

例:

jdbc:hyperion:db2://bass:50002;databaseName=JH71DB

Hyperion Informix クライアント

テンプレート

jdbc:hyperion:informix://<Host Name>:<Port Address>; informixserver=<server name>;databaseName=<Database Name>; DBDate=<Date Format>{MDY4/MDY4-MDY4.MDY2/MDY2-MDY2.YMD4/YMD4- YMD4.YMD2/YMD2-YMD2.}

パラメータ

Host Name

Informix データベースサーバのホスト名。ホスト名(例えば ws1.acme.com)で指

定することも、IP アドレス(例えば 129.3.4.50)で指定することもできます。

データソースの説明とテンプレート 101

Page 102: Hyperion SQR Production Reporting 開発者ガイド ボリューム …SQR Production Reporting Studio によるBAPI のレポート作成 ..... 129 SAP R/3 のProduction Reporting

Port Address

指定された Informix データベースサーバのポート番号。これは 0 ~ 64565 の間の

値です。

Server Name

Informix サーバ名。

Database Name

Informix データベース名。

DBDate

DATE値を表示する場合に出力をフォーマットするための Informix 環境変数。標準

フォーマットでは、次の属性を指定できます。

l 日付のフォーマットの月、日、年の順序。

l 年を 2 桁(Y2)で印刷するか、4 桁(Y4)で印刷するか。

l 月、日、年の区切り文字。

フォーマットの文字列では、次の文字を使用できます。

l -(ハイフン)、.(点)、/(スラッシュ):日付のフォーマットで使用する区切

り文字。

区切り文字は、必ずフォーマットの文字列の 後に付けます(例えば、

Y4MD-)。区切り文字がない場合や、無効な場合は、デフォルトでスラッシュ

(/)が使用されます。

l 0:区切り文字は表示されません。

l D,M:日と月を表す文字。

l Y2,Y4:年と年の桁数を表す文字。

次に、有効な DBDATEフォーマットを示します。

l DMY2

l DMY4

l MDY4

l MDY2

l Y4MD

l Y4DM

l Y2MD

l Y2DM

注:

U.S. ASCII の英語環境では、DBDATE はデフォルトで Y4MD-に設定されます。

この場合の Y4 は 4 桁の年、M は月、D は日、ハイフン(-)は区切り文字を

表します。例えば、1998-10-08 となります。

102 データソースの管理

Page 103: Hyperion SQR Production Reporting 開発者ガイド ボリューム …SQR Production Reporting Studio によるBAPI のレポート作成 ..... 129 SAP R/3 のProduction Reporting

例:

jdbc:hyperion:informix://sandtiger:4111/jerryh_db; INFORMIXSERVER=sandtiger920;databaseName=jerryh_db;DBDate=MDY4/

Hyperion Oracle クライアント

テンプレート

jdbc:hyperion:oracle://<Host Name>:<Port Address>; SID=<Oracle SID>

パラメータ

Host Name

Oracle データベースサーバのホスト名。ホスト名(例えば ws1.acme.com)で指定

することも、IP アドレス(例えば 129.3.4.50)で指定することもできます。

Port Address

指定された Oracle データベースサーバのポート番号。これは 0 ~ 64565 の間の値

です。

Oracle SID

接続の Oracle 論理ネットワーク名。

例:

jdbc:hyperion:oracle://swhale:1521;SID=swhale817

Hyperion SQL Server クライアント

テンプレート

jdbc:hyperion:sqlserver://<Host Name>:<Port Address>

パラメータ

Host Name

SQL Server データベースサーバのホスト名。ホスト名(例えば ws1.acme.com)で

指定することも、IP アドレス(例えば 129.3.4.50)で指定することもできます。

Port Address

指定された SQL Server データベースサーバのポート番号。これは 0 ~ 64565 の間

の値です。

例:

jdbc:hyperion:sqlserver://Glass:1433

データソースの説明とテンプレート 103

Page 104: Hyperion SQR Production Reporting 開発者ガイド ボリューム …SQR Production Reporting Studio によるBAPI のレポート作成 ..... 129 SAP R/3 のProduction Reporting

Hyperion Sybase クライアント

テンプレート

jdbc:hyperion:sybase://<Host Name>:<Port Address>

パラメータ

Host Name

Sybase データベースサーバのホスト名。ホスト名(例えば ws1.acme.com)で指定

することも、IP アドレス(例えば 129.3.4.50)で指定することもできます。

Port Address

指定された Sybase データベースサーバのポート番号。これは 0 ~ 64565 の間の値

です。

例:

jdbc:hyperion:sybase://Perch:4110

XMLこのデータソースは、ファイルシステムのルートのディレクトリツリーを表しま

す。このツリー内でファイル拡張子が.xmlのファイルは、区切り文字で区切られ

たファイルとして解釈されます。これらのファイルは、このドライバのオブジェ

クトを表します。ddo11.zip と xml4j.jarがクラスパスにあることを確認してくだ

さい。

XML には、ディレクトリパス名を介して接続できます。

ディレクトリパス名

テンプレート

<Fully Qualified Directory Path Name>

パラメータ

Fully Qualified Directory Path Name

ディレクトリの完全修飾されたパス名は、XML ファイルを含むツリーのルートを

形成します。ルートに含めるサブディレクトリの数の制約はありません。XML

ファイルはツリー内のどこにでも表示できます。ディレクトリに他の種類のファ

イルを含めることもできます。ただしドライバは、これらのファイルを無視しま

す。

例:

D:¥¥Projects¥¥Data Access¥¥Test¥¥XmlTest

104 データソースの管理

Page 105: Hyperion SQR Production Reporting 開発者ガイド ボリューム …SQR Production Reporting Studio によるBAPI のレポート作成 ..... 129 SAP R/3 のProduction Reporting

区切り文字で区切られた値このデータソースは、ファイルシステムのルートのディレクトリツリーを表しま

す。このツリー内でファイル拡張子が.csvのファイルは、区切り文字で区切られ

たファイルとして解釈されます。これらのファイルは、このドライバのオブジェ

クトを表します。

区切り文字で区切られた値には、ディレクトリパス名を介して接続できます。

ディレクトリパス名

テンプレート

CSV:File:<Fully Qualified Directory Path Name>

パラメータ

Fully Qualified Directory Path Name

ディレクトリの完全修飾されたパス名は、CSV ファイルを含むツリーのルートを

形成します。ルートに含めるサブディレクトリの数の制約はありません。CSV ファ

イルはツリー内のどこにでも表示できます。ディレクトリに他の種類のファイル

を含めることもできます。ただしドライバは、これらのファイルを無視します。

例:

CSV:File:d:¥¥Projects¥¥Data Access¥¥Test

OMG Corba のサンプル

このサンプルデータソースは、リモートホストに常駐する CORBA サーバです。

CORBA サーバは、リモートホスト上の旧システムのラッパーにできます。このド

ライバを使用するためには、northwind.jar がクラスパスに含まれていることが必

要です。Java Runtime Environment は JavaIDL をサポートします。

OMG Corbra サンプルには、サンプルデータソースから接続できます。

サンプルデータソース

環境変数

CLASSPATH=<AVALANCHE_HOME>/Documentation/SQR/Server/DDO/demo/CORBA/CORBADemoSvr.jar;%CLASSPATH%

テンプレート

HOST=<Host Name> PORT=<Port Number>

パラメータ

Host Name

Corba サーバのホスト名。ホスト名(例えば ws1.acme.com)で指定することも、

IP アドレス(例えば 129.3.4.50)で指定することもできます。

データソースの説明とテンプレート 105

Page 106: Hyperion SQR Production Reporting 開発者ガイド ボリューム …SQR Production Reporting Studio によるBAPI のレポート作成 ..... 129 SAP R/3 のProduction Reporting

Port Number

Corba サーバのホスト名のポート番号。これは 0 ~ 64565 の間の値です。

例:

HOST=JAGUAR;PORT=1080

Microsoft DCOM のサンプル

このサンプルデータソースは、リモートホストに常駐する DCOM サーバです。

DCOM サーバは、リモートホスト上の旧システムのラッパーにできます。このド

ライバを使用するためには、northwind.jar がクラスパスに含まれていることが必

要です。

Microsoft DCOM のサンプルには、サンプルデータソースから接続できます。

サンプルデータソース

テンプレート

HOST=<Host Name> PORT=<Port number>

パラメータ

Host Name

DCOM サーバのホスト名。ホスト名(例えば ws1.acme.com)で指定することも、

IP アドレス(例えば 129.3.4.50)で指定することもできます。

Port Address

DCOM サーバのホスト名のポート番号。これは 0 ~ 64565 の間の値です。

例:

HOST=JAGUAR;PORT=1080

CSV のサンプル

このデータソースは、ファイルシステムのルートのディレクトリツリーを表しま

す。このツリー内でファイル拡張子が.csvのファイルは、区切り文字で区切られ

たファイルとして解釈されます。これらのファイルは、このドライバのオブジェ

クトを表します。

CSV のサンプルには、ディレクトリパス名を介して接続できます。

ディレクトリパス名

テンプレート

CSV:File:<Fully Qualified Directory Path Name>

106 データソースの管理

Page 107: Hyperion SQR Production Reporting 開発者ガイド ボリューム …SQR Production Reporting Studio によるBAPI のレポート作成 ..... 129 SAP R/3 のProduction Reporting

パラメータ

Fully Qualified Directory Path Name

ディレクトリの完全修飾されたパス名は、CSV ファイルを含むツリーのルートを

形成します。ルートに含めるサブディレクトリの数の制約はありません。CSV ファ

イルはツリー内のどこにでも表示できます。ディレクトリに他の種類のファイル

を含めることもできます。ただしドライバは、これらのファイルを無視します。

例:

CSV:File:d:¥¥Projects¥¥Data Access¥¥Test

データソースの説明とテンプレート 107

Page 108: Hyperion SQR Production Reporting 開発者ガイド ボリューム …SQR Production Reporting Studio によるBAPI のレポート作成 ..... 129 SAP R/3 のProduction Reporting

108 データソースの管理

Page 109: Hyperion SQR Production Reporting 開発者ガイド ボリューム …SQR Production Reporting Studio によるBAPI のレポート作成 ..... 129 SAP R/3 のProduction Reporting

6ユーティリティパッケージと

共通ファシリティ

この章の内容

ユーティリティパッケージについて . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 109

ユーティリティパッケージの共通コンポーネント . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 109

メッセージファシリティ. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 112

プロパティファシリティ. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 115

ユーティリティパッケージについてProduction Reporting DDO には、共通ユーティリティパッケージ

(com.sqribe.comutil)が含まれています。このユーティリティパッケージのコン

ポーネントは、プロパティ、メッセージ、ログ、例外をサポートするインフラス

トラクチャを構成します。この章では、ユーティリティパッケージの共通コンポー

ネント、メッセージファシリティおよびプロパティファシリティについて説明し

ます。

ユーティリティパッケージの共通コンポーネントメッセージファシリティおよびプロパティファシリティは、類似した名前スキー

ム、Java プロパティリソースバンドル、共通のメカニズムを使用します。

名前スキームメッセージファシリティおよびプロパティファシリティは、クラス名の競合を回

避する名前スキーマを使用します。この名前スキーマにより、次のことが実装さ

れます。

l プロパティリソースバンドルを別々のディレクトリに入れます。

m メッセージファシリティ:msgs ディレクトリ

m プロパティおよび特性ファシリティ:properties ディレクトリ

l msgs ディレクトリと properties ディレクトリを含むディレクトリを CLASSPATH

に組み込みます。

l 完全修飾(<パッケージ名>.<クラス名>)の区切り文字(.)をアンダースコア

(_)に変更して、ファイル名を生成します。プロパティファシリティの場合

は、型の接尾辞をつけます。

l 拡張子.properties を付けてファイル名を完成します。

ユーティリティパッケージについて 109

Page 110: Hyperion SQR Production Reporting 開発者ガイド ボリューム …SQR Production Reporting Studio によるBAPI のレポート作成 ..... 129 SAP R/3 のProduction Reporting

表 16 メッセージファシリティとプロパティファシリティのファイル名

ファイル名 Comment

com_sqribe_access_Access.properties メッセージファシリティのファイル名:msgs ディ

レクトリに置かれる

プロパティファシリティのファイル名:propertiesディレクトリに置かれる

com_sqribe_access_DataSource_Properties.properties プロパティ属性値を含む

com_sqribe_access_DataSource_PropertyDescriptions.properties プロパティ属性のメタデータを含む

com_sqribe_access_DataSource_Capabilities.properties 特性の属性値を含む

com_sqribe_access_DataSource_CapabilityDescriptions.properties 特性の属性のメタデータを含む

プロパティリソースバンドルプロパティリソースバンドルは特別な型の Java リソースバンドルで、値はプロパ

ティファイルに保存されます。メッセージファシリティは、メッセージをバンド

ルに保存します。プロパティファシリティは、プロパティおよび特性の値とメタ

データをバンドルに保存します。

プロパティリソースバンドルの処理

Java では、密接な一連の関係を形成する独立したコンポーネントを含むパッケー

ジを使用することを推奨しています。パッケージ内のクラスは、同じメッセージ、

プロパティ、および特性を共有できます。複数のクラスで共有されるメッセージ、

属性、および値をひとつにまとめるために、コンポーネントユーザはクラスを拡

張したり、パッケージで規定されているインターフェイスを実装したりできます。

メッセージファシリティとプロパティファシリティはクラスの関係を認識し、そ

の関係を使ってプロパティを検索します。次に、メッセージファシリティの例を

示します。

l Production Reporting DDO リレーショナルデータベースのドライバが、パッ

ケージ com.sqribe.jdbcacc にあります。

l このパッケージ内の com.sqribe.jdbcacc.JDBCacc は空のインターフェイスで、イ

ンターフェイス com.sqribe.access.Access の拡張です。

l com.sqribe.jdbcacc パッケージの他のクラスは、JDBCacc インターフェイスを実

装します。

l com.sqribe.access.Access インターフェイスは、com.sqribe.comutil.Util インター

フェイスを拡張します。JDBCacc インターフェイスと同様に、空のインター

フェイスもあります。

プロパティリソースバンドルの検索

プロパティリソースバンドルを取得するには、共通のユーティリティファシリティ

に、完全修飾名とロケール識別子の 2 つの情報が必要です。

110 ユーティリティパッケージと共通ファシリティ

Page 111: Hyperion SQR Production Reporting 開発者ガイド ボリューム …SQR Production Reporting Studio によるBAPI のレポート作成 ..... 129 SAP R/3 のProduction Reporting

Production Reporting DDO は、introspection と Java ResourceBundle.getBundle 呼び出

しを組み合わせて、リソースバンドルを取得します。Java ResourceBundle は 2 つ

の文字列をアンダースコアでつなげて、クラス名を形成します。この後で、デフォ

ルトのシステムローダーを使って、その名前を持つクラスを読み込もうとします。

この名前を持つクラスを読み込めない場合は、リソースバンドルクラスを正常に

読み込んでインスタンス化できるまで、クラス名を短くしていきます。クラス名

でリソースバンドルオブジェクトを生成できない場合は、getBundle()メソッド

によって、プロパティリソースバンドルが検索されます。具体的には、クラス名

に文字列「.properties」が追加されます。このようなファイルが見つかると、その

プロパティファイルに PropertyResourceBundle オブジェクトが作成されます。

メカニズムProduction Reporting DDO の共通ユーティリティパッケージには、アプリケーショ

ンで使用できる共通のメカニズムがあります。

診断の終了

メッセージファシリティには、メッセージに関連付けることのできる診断クラス

を呼び出すメカニズムがあります。メッセージを要求すると、この診断クラスが

インスタンス化されます。共通ユーティリティパッケージには、コンストラクタ

署名用の空のインターフェイス、Diagnostic クラス、および操作手順が含まれてい

ます。

ドライバ開発者は、ドライバパッケージを構成するクラスで、toString メソッドと

Debug クラスを併用してください。Degub クラスは、クラスの状態情報をダンプ

するための特殊な StringBuffer クラスです。Production Reporting DDO では、これ

らのクラスを活用して実行時の診断情報を取得します。

タイミング

タイミングのメカニズムを提供する一連のモニタプロパティがあります。これら

のプロパティは、メソッドの開始と終了のタイミングを示す簡単な共通ユーティ

リティである、Monitor という Stopwatch クラスに基づきます。Access パッケージ

には、このメカニズムを使って中間レベルのタイミング統計を行う、

DataSourceMonitor クラスが含まれています。Data Source Monitor を使って、さま

ざまなモニタ状態の設定を示すことができます。

モニタ状態は、DriverSourceManager によって Data Source Monitor クラスがインス

タンス化されるときに、プロパティから設定されます。モニタ状態に関するプロ

パティの説明は、モニタプロパティに登録されている DataSourceMonitorAuxProc

クラスによって更新されます。

特定のドライバに関連付けられているモニタ状態は、仮想プロパティを使って上

書きできます。

個々のモニタについては、モニタプロパティの説明を参照してください。

モニタは階層として設定されますが、モニタの検索ではリストが使用されます。

次に、取得/読み込みのモニタの対象を示します。

l retrievalExecute:実行がモニタされます。

ユーティリティパッケージの共通コンポーネント 111

Page 112: Hyperion SQR Production Reporting 開発者ガイド ボリューム …SQR Production Reporting Studio によるBAPI のレポート作成 ..... 129 SAP R/3 のProduction Reporting

l retrievalCall:呼び出しがモニタされます。

l retrievalGetData:GetData(データの取得)がモニタされます。

l metadataSchema:スキーマ名がモニタされます。

l metadataSchemaObjects:スキーマオブジェクトがモニタされます。

l metadataSchemaObjectColumns:スキーマオブジェクト列がモニタされます。

l metadataSchemaProcedures:スキーマのプロシージャがモニタされます。

l metadataSchemaProceduresMeta:スキーマのプロシージャのメタデータがモニ

タされます。

l propertysheetLoad:プロパティシートの読み込みがモニタされます。

l drivermanagerLoad:データソースマネージャの読み込みがモニタされます。

メッセージファシリティメッセージファシリティでは java.text.MessageFormatを使って、数値、通貨、

パーセント、日付、時刻、文字列変数を含む言語固有のユーザメッセージを生成

します。このため、完全な Java メッセージフォーマット機能を備えています。さ

らに、メッセージファシリティは次のことも行います。

l java.util.PropertyResourceBundleインスタンスからメッセージパターン

を取得します。

l introspection を使って継承グラフと実装グラフを取得してメッセージパターン

を検索し、メッセージの重複を 小限に抑えます。

l メッセージが原因で発生する診断をサポートします。

メッセージテキストメッセージファシリティは完全な Java メッセージフォーマット機能を備え、次の

3 種類のメッセージパターンをサポートします。

l 文字列(String):文字列は、代替要素を持たないメッセージテキストです。文

字列を代替要素として使ったり、リソースとしてユーザインターフェイスに

表示したりできます。メッセージ文字列の処理では、Java メッセージフォー

マットクラスは使用されません。文字列メッセージは、ローカライズで使用

されることもあります。

l テキスト(Text):テキストメッセージは、java.lang.Throwable getMessage()から

返される文字列やユーザメッセージで使用されるメッセージパターンです。

Java メッセージフォーマットクラスは、このメッセージパターンに表示される

代替要素の処理で使用されます。文字列メッセージは、ローカライズで使用

されることもあります。

l ログテキスト(LogText):ログテキストメッセージは、アプリケーションのロ

グメッセージで使用されるメッセージパターンです。このメッセージパター

ンには、セキュリティ、診断、サポートで使用される詳細情報が含まれます。

Java メッセージフォーマットクラスは、このメッセージパターンに表示される

112 ユーティリティパッケージと共通ファシリティ

Page 113: Hyperion SQR Production Reporting 開発者ガイド ボリューム …SQR Production Reporting Studio によるBAPI のレポート作成 ..... 129 SAP R/3 のProduction Reporting

代替要素の処理で使用されます。ログテキストメッセージは、ローカライズ

では使用されません。

メッセージプロパティファイルプロパティは、プロパティ名とプロパティ値から構成されます。表 17 に示すメッ

セージプロパティファイルは、Java プロパティリソースバンドルです。メッセー

ジファシリティは、メッセージ名をメッセージ識別子とメッセージタイプの拡張

子と解釈します。次の表示では、メッセージ識別子は「msg」で示されています。

識別子は階層名にすることもできます。

表 17 メッセージプロパティファイル

名前 値 説明

Msg.string ローカライズされたメッセージラベル

String は、ローカライズされた文字列定数です。

Msg.text ローカライズされたメッセージフォーマットテキスト

Text はフォーマットが必要なメッセージで、stringはローカライズされた文字列定数(フォーマットされたメッセージで代替メッセージとして使用可)です。

Msg.logtext ローカライズされたログメッセージフォーマットのテキスト

Logtext は、フォーマットが必要なログメッセージ

です。

Msg.diagnostic 完全修飾のクラス名 Diagnostic は、指定されたメッセージの後でクラス

をインスタンス化して診断を実行する場合に使用します。

Msg.exception 完全修飾のクラス名 Exception は、メッセージファシリティがスローす

る例外オブジェクトを作成する場合に使用します。

メッセージプロパティの検索例

ä メッセージプロパティ SchemaException.textを検索するには、次の手順に従い

ます。

1 com_sqribe_jdbcacc_JDBCConnection*.propertiesを検索します。

2 com_sqribe_jdbcacc_JDBCacc*.propertiesを検索します。

名前のアスタリスク(*)は、リソースバンドルの検索でローカライズの接尾辞が

追加される場所を示します。メッセージプロパティファイルはパッケージにのみ

存在するため、次の場所で検索されるメッセージプロパティファイルは 1 つだけ

です。

com_sqribe_jdbcacc_JDBCacc*.properties

メッセージプロパティが「DescriptionNotDefined.text」の場合は、検索が続けら

れ、次のメッセージプロパティファイルが検索に含められます。

com_sqribe_access_Access*.properties.

com_sqribe_comutil_Util*.properties.

メッセージファシリティ 113

Page 114: Hyperion SQR Production Reporting 開発者ガイド ボリューム …SQR Production Reporting Studio によるBAPI のレポート作成 ..... 129 SAP R/3 のProduction Reporting

ローカライズの例国の識別子を使わずに、フランス語のローカライズをメッセージプロパティの検

索に追加する場合について見てみましょう。このローカライズの例では、ユーザ

メッセージプロパティ(例えば SchemaException.text)を翻訳しますが、ログ

メッセージプロパティ(例えば SchemaException.logtext)は翻訳しません。

SchemaException.textを検索すると、次のメッセージプロパティファイルが検

索されます。

com_sqribe_jdbcacc_JDBCacc_fr.properties

これに対して、SchemaException.logtextを検索すると、次のメッセージプロパ

ティファイルが検索されます。

com_sqribe_jdbcacc_JDBCacc_fr.properties

com_sqribe_jdbcacc_JDBCacc.properties

ローカライズしたユーザのメッセージパターンを指定することで、フランス語の

メッセージプロパティファイルでデフォルトのプロパティファイルが拡張されま

す。

サービスメッセージファシリティでは、メッセージの処理だけでなく、診断のサポートも

行います。診断サポートを発生させるかどうかは、メッセージの作成方法で決ま

ります。サポートするタグは次のとおりです。

l 診断(Diagnostics):クラスをインスタンス化して、メッセージの原因に関す

る診断を行います。十分なログ情報を得られない場合は、これを本番モード

またはデバッグモードで使用して、メッセージに関する情報を取得できます。

このプロパティの値は、診断されるオブジェクトの完全修飾されたクラス名

です。このクラスには、classname(String pMsgid, Object[] pSubs)という形式のパ

ブリックコンストラクタが必要です。このコンストラクタは診断を実行した

後で、そのリソースをクリアします。メッセージファシリティは、インスタ

ンス化された診断クラスへの参照を保持しません。

この機能を使って、メッセージ結果の補足的な診断情報のレポートを作成し、

そのメッセージの通常のプロセスフローを続けて行うことができます。メッ

セージが断続的に発生する場合や環境に特有の場合、タイミングに関する条

件により発生する場合には、この診断サポートが便利です。このような場合

は、アプリケーションのトレースを実行したり、実行可能ファイルを変更す

ることは現実的ではありません。

l 例外(Exception):指定されたクラス名の例外をスローします。これを使っ

て、特定のフォームでのエラー修復を実行できます。コンパイラは throw クラ

スを検出できないため、このクラスには、classname(String pMsgid, Object[]

pSubs)という形式のコンストラクタが必要です。このタグを使って、メッセー

ジに関連付けられたアプリケーション動作を上書きできます。例えば、スタッ

クトレースを取得してアプリケーションを終了するには、例外コンストラク

タの内部にスローをネストし、発生した例外をキャッチし、

printStackTrace()メソッドを使ってトレースを System.err に送信します。こ

の後で、メッセージファシリティがこの例外をスローします。

114 ユーティリティパッケージと共通ファシリティ

Page 115: Hyperion SQR Production Reporting 開発者ガイド ボリューム …SQR Production Reporting Studio によるBAPI のレポート作成 ..... 129 SAP R/3 のProduction Reporting

プロパティファシリティプロパティファシリティは共通ユーティリティコンポーネントの 1 つです。プロ

パティおよび特性は、それぞれに java.util.Properties および

java.util.PropertyResourceBundles のように動作しますが、次のような特長がありま

す。プロパティファシリティの特長

l 特性の値を文字列ではなくオブジェクトとして保持します。

l プロパティおよび特性の値を保護できます。

l プロパティおよび特性のメタデータが関連付けられており、十分な知識がな

くても、アプリケーションでそれらを使用/操作できます。

l プロパティおよび特性は階層構造にできます。例えばログオンプロパティは、

デフォルトでユーザおよびパスワードの属性を持つ階層構造のプロパティで

す。

l プロパティおよび特性を瞬時に計算できます。例えば、データソースから値

を取得したり、仮想の属性またはクラス属性を表示したりできます。

l プロパティおよび特性にユーザダイアログを関連付けることができます。

プロパティおよび特性は、プロパティリソースバンドルに保存される値およびメ

タデータのコンポーネントです。値とメタデータのどちらのコンポーネントの属

性もローカライズできます。プロパティファシリティには、get accessor メソッド

と set accessor メソッドがあります。ドライバはこれらのメソッドを使って、その

特性を反映します。ただし、アプリケーションでは、特性の set accessor メソッド

は使用しないでください。

特性は読み取り専用のプロパティで、次の属性が含まれます。

l 基本データソースの静的な属性。例えば、SELECT ステートメントのコマンド

の 大長や列の 大数など。

l ドライブの属性。例えば、プロシージャインターフェイスをサポートするド

ライバや、接続内での同時処理をサポートするドライバなど。プロパティお

よび特性の検索。

DataSource クラス

properties ディレクトリをスキャンすると、多くのプロパティと特性が DataSource

クラスを参照することがわかります。DataSourceAdapter は、デフォルトでデータ

ソースを処理します。各ドライバは DataSourceAdapter を拡張して、プロパティと

特性を追加したり、上書きしたりできます。DataSourceAdapter は、データソース

のプロパティシートを作成します。DataSourceAdapter はプロパティシートを作成

するために、基本プロパティと特性をコピーしてから、ドライバ固有のプロパティ

および特性をコピーに追加します。ドライバのデータソースは基本データソース

のプロパティと特性を継承します。

ドライバは、データソースのプロパティと特性のコピーを使って接続を確立しま

す。これは、データソースのプロパティシートの作成において、アナログ的に行

われます。Connection インターフェイスと ConnectionAdapter があり、各ドライバ

は ConnectionAdapter を拡張する接続オブジェクトを実装しています。ドライバの

プロパティファシリティ 115

Page 116: Hyperion SQR Production Reporting 開発者ガイド ボリューム …SQR Production Reporting Studio によるBAPI のレポート作成 ..... 129 SAP R/3 のProduction Reporting

接続オブジェクトにより、特定のプロパティおよび特性が提供される場合があり

ます。このパターンは Production Reporting DDO 全体に当てはまります。

ドライバの使用パターンとメッセージファシリティの使用パターンは異なります

が、プロパティファシリティのプロパティリソースバンドルの処理は同じです。

例えば、ドライバの com.sqribe.jdbcacc.JDBCDataSource クラスを例にとってみま

す。プロパティファシリティが、この完全修飾されたクラス名からプロパティリ

ソースバンドルファイル名を作成するとします。プロパティリソースバンドルを

検索するために、この作成された名前がリソースバンドルに指定されます。プロ

パティリソースバンドルが見つかった場合は、プロパティアダプタを使って、指

定されたプロパティコンテナにバンドルの内容が結合されます。

StringPropertyAdapter は、プロパティを結合する場合に使用します。

ObjectPropertyAdapter は、特性を結合する場合に使用します。これらのアダプタ

は、PropertyAdapter インターフェイスを実装しています。ObjectPropertyAdapter

は属性値のオブジェクトを作成し、StringPropertyAdapter は属性値の文字列を使用

します。

例えば、ドライバの com.sqribe.jdbcacc.JDBCDataSource クラスを例にとってみま

す。プロパティファシリティが、この完全修飾されたクラス名からプロパティリ

ソースバンドルファイル名を作成するとします。プロパティリソースバンドルを

検索するために、この作成された名前がリソースバンドルに指定されます。プロ

パティリソースバンドルが見つかった場合は、プロパティアダプタを使って、指

定されたプロパティコンテナにバンドルの内容が結合されます。

StringPropertyAdapter は、プロパティを結合する場合に使用します。

ObjectPropertyAdapter は、特性を結合する場合に使用します。これらのアダプタ

は、PropertyAdapter インターフェイスを実装しています。ObjectPropertyAdapter

は属性値のオブジェクトを作成し、StringPropertyAdapter は属性値の文字列を使用

します。

プロパティの説明PropertyDescription はプロパティの属性を記述します。プロパティの説明は、プロ

パティおよび特性の両方のメタデータに共通です。プロパティは必須の場合もあ

れば、オプションの場合もあります。プロパティ名はプロパティのキーです。プ

ロパティには記述名があります。これはプロパティの簡単な説明で、ヒントとし

ての表示に適しています。プロパティには、値または値セットがあります。プロ

パティは、例えばパスフレーズなどで保護できます。つまり、値はメモリに保存

され、暗号化されたフォームに変換されます。このような値は、常に文字列とし

て渡されます。値は、例えば java.lang.Boolean などの型に固有の Java オブジェク

トとして表現されます。範囲またはリストの形式で、値にドメイン要求を入れる

ことができます。値にインデックスを付けることができます。つまり、複数の値

を設定したり、オブジェクトの配列として転送したりできます。値に説明を関連

付けることができます。つまり、インデックス付きの値に、インデックス付きの

説明を入れることができます。

プロパティファシリティは、クライアントがデータソースドライバに関する知識

がなくても、ドライバのプロパティを設定できるように設計さています。つまり、

クライアントはユーザが設定を完了できるように、プロパティの説明をユーザに

表示できます。説明には、プロパティを表示して検証するための十分な情報を含

める必要があります。

116 ユーティリティパッケージと共通ファシリティ

Page 117: Hyperion SQR Production Reporting 開発者ガイド ボリューム …SQR Production Reporting Studio によるBAPI のレポート作成 ..... 129 SAP R/3 のProduction Reporting

表 18 属性の説明と使い方

名前 説明 必須 説明

Name プロパティの完全修飾名 はい

Description プロパティの記述名(ヘルプ、ヒントなど) いいえ

ClassName 値の型のクラス名。Integer、Boolean など。 いいえ

インデックスと合致する必要があります。

AuxProc プロパティまたは性質の仮想フェッチおよび事後処理を指定するクラスのクラス名。このクラスは、PropertyAuxProc インターフェイスを実装します。

いいえ

インデックスと合致する必要があります。

Required このプロパティの値が必要かどうか。 いいえ

デフォルト:不要

Secured このプロパティの値を暗号化する必要があるかどうか。 いいえ

デフォルト:暗号化しない

ValidationType 検証タイプ:なし、範囲、またはリスト いいえ

デフォルト:なし

ValidationValues 検証値:なし:ヌル、範囲:0( 小)、1( 大)、リス

ト:個々の値。注:値は文字列で指定され、Validator によっ

て適切なタイプに変換されます。

いいえ

検証タイプと合致する必要があります。

Validator 検証を実装するインターフェイス PropertyValidator のクラス

名。PropertyValidator も参照。

いいえ

デフォルト:Validatorなし

Indices インデックス付きの値のプロパティの説明。インデックス付きの値がある場合は、クラス名は無視されます。インデックス付きの値がない場合は、クラス名を指定する必要があります。

いいえ

検証値と一致する必要があります。

Dialog このプロパティとプロパティのサブツリーを表示(オプションで検証)する、カスタムプロパティダイアログのクラス名。

いいえ

デフォルト:カスタムダイアログなし

属性キーは範囲指定された名前で、その 後のコンポーネントはテーブル内の名

前の 1 つを表します。必須の属性は、拡張子が Name のキーだけです。その他の

属性は状況依存型です。Indices 拡張子が指定されている場合は、構造化プロパ

ティを非リーフノードとして示し、ClassName、AuxProc、Secured、

ValidationType、ValidationValues、および Validator の各属性を指定しません。リー

フノードの場合は、ClassName は必須です。これは、値が表すオブジェクトの型

を示します。

例えば、値が java.lang.Integer の ClassName は、整数値(または数値文字列)を受

け入れることを示します。これにより、値の構文が検証されます。ValidationType

と ValidationValues を追加すると、簡単な意味の検証が行われます。Validator をプ

ロパティと関連付けると、ValidationType および ValidationValues で指定した検証

が行われます。Validator は、Java プリミティブ型および選択されたオブジェクト

に対して指定します。

プロパティファシリティ 117

Page 118: Hyperion SQR Production Reporting 開発者ガイド ボリューム …SQR Production Reporting Studio によるBAPI のレポート作成 ..... 129 SAP R/3 のProduction Reporting

プロパティの説明の結合

ここでは、クラス com.sqribe.jdbcacc.JDBCDataSourceを例にして、プロパティ

の説明の結合を考察していきます。

1. クラス名を取得します。

2. このクラスの実装グラフを上から下に見ていきます。

l クラス com.sqribe.jdbcacc.JDBCacc

l クラス com.sqribe.access.Access

l クラス com.sqribe.comutil.Util

l このグラフの下から上に向かって、プロパティの説明を結合します。

3. このクラスの継承グラフを上から下に検索していきます。

l クラス com.sqribe.access.DataSourceAdapter

l クラス com.sqribe.access.DataSource

l クラス com.sqribe.access.Access

l クラス com.sqribe.comutil.Util

l このグラフの下から上に向かって、プロパティの説明を結合します。

プロパティを結合するかどうかについてクラスが検証されるたびに、クラス名は

プロパティリソースバンドル名に変換されます。この例では、

com.sqribe.jdbcacc.JDBCacc は

properties.com_sqribe_jdbcacc_JDBCacc_PropertyDescriptions*に変換されます。名前

のアスタリスク(*)は、リソースバンドルの検索でローカライズの接尾辞が追加

される場所を示します。

プロパティシートこれまでに、プロパティ、性質、およびプロパティシートについて説明してきま

したが、その使い方については説明していません。次に、プロパティシートへの

アクセス方法について見ていきます。PropertySheet は、プロパティ、性質、それ

らの説明の動作をカプセル化します。PropertySheet は複合オブジェクトです。保

護されたプロパティおよび性質の説明と値には、プロパティシートからアクセス

できます。

プロパティ、性質、それらの説明は、プロパティリソースバンドルに保存されま

す。これらのファイルは、要求されたプロパティまたは性質を持つクラスが含ま

れているディレクトリにあります。特に、クラス(または jar)が読み込まれた

ディレクトリ内の「properties」ディレクトリにあります。リソースバンドルのパ

ス名のフォームは、次のようになります。

properties/<package name with '.' replaced by '_'>_<class name>_<type>.properties

たとえば、com.sqribe.access.DataSource のプロパティファイルは、次のようになり

ます。

properties/com_sqribe_access_DataSource_Properties.properties

Where:

118 ユーティリティパッケージと共通ファシリティ

Page 119: Hyperion SQR Production Reporting 開発者ガイド ボリューム …SQR Production Reporting Studio によるBAPI のレポート作成 ..... 129 SAP R/3 のProduction Reporting

com_sqribe_access is the package name,

DataSource はクラス名、Properties は型です。

次の型があります。

l Properties:指定されたクラスのプロパティ値です。プロパティは、機能やファ

シリティの設定可能な属性です。

l PropertyDescriptions:指定されたクラスのプロパティ説明です。プロパティの

説明は、プロパティの特徴を定義します。説明には、プロパティを明確に記

述して構文を検証するための十分な情報が含まれています。つまり、情報や

クラスを記述して、プロパティ値を作成/検証するために使用するプロパティ

やメソッドを説明しています。

l Capabilities:指定されたクラスの機能の値です。特性は機能やファシリティの

設定属性で、読み取り専用です。

l CapabilityDescriptions:指定されたクラスの機能の説明です。特性の説明は、

特性の特徴を定義します。説明には、特性を明確に記述して構文を検証する

ための十分な情報が含まれています。つまり、情報やクラスを記述して、特

性の値を作成/検証するために使用する特性やメソッドを説明しています。

プロパティシートのメソッド

次に示すプロパティシートのインスタンスメソッドは、アプリケーションで使用

できます。

l copy:指定したプロパティシートを現在のプロパティシートに結合します。

l getProperty:名前を指定したプロパティ値を取得します。

l setProperty:プロパティ値を変更または追加します。getProperty ではプロパ

ティ名をキーとして使いますが、このメソッドではプロパティの説明オブジェ

クトまたはプロパティ名のどちらかをキーとして使います。このメソッドを

使用すると、プロパティの説明をすばやく追加できます。

l getPropertyNames:プロパティ名の一覧を取得します。この一覧は、プロパ

ティの説明やコンテナではなく、プロパティ値から取得されます。

l getPropertyDescription:名前を指定したプロパティの説明を取得します。

l setPropertyDescription:指定したプロパティの説明にプロパティの説明を追加

するか、指定したプロパティの説明でプロパティの説明を置き換えます。

l getPropertyDescriptionNames:プロパティの説明の名前の一覧を取得します。

l getCapability:名前を指定した特性を取得します。プロパティ値を取得すると

文字列またはヌルが返されますが、特性を取得するとオブジェクトまたはヌ

ルが返されます。

l getCapabilityNames:特性名の一覧を取得します。この一覧は、特性の説明や

コンテナではなく、特性の値から取得されます。

l getCapabilityDescription:名前を指定した特性の説明を取得します。

l getCapabilityDescriptionName:特性の説明の名前の一覧を取得します。

プロパティファシリティ 119

Page 120: Hyperion SQR Production Reporting 開発者ガイド ボリューム …SQR Production Reporting Studio によるBAPI のレポート作成 ..... 129 SAP R/3 のProduction Reporting

プロパティおよび特性の取得ここでは、プロパティおよび特性を取得して、Production Reporting DDO リレー

ショナルデータベースドライバから Oracle データベースへ接続するフローを見て

いきましょう。プロパティ、プロパティの説明、特性、特性の説明の 4 つのリソー

スバンドルタイプが処理されて、データソース用の新しいプロパティシートが作

成されます。

1. クラスインターフェイスの結合処理:

l アプリケーションは、Production Reporting DDO リレーショナルデータベー

スドライバのデータソースクラス名 com.sqribe.jdbcacc.JDBCDataSource 使っ

て、プロパティおよび特性を検索します。

l プロパティファシリティは、このクラスのインターフェイスグラフを上か

ら下へ検索していきます。

l リーフで、リーフクラスの継承グラフを上から下に検索します。

l 継承リーフで、リーフクラスのプロパティリソースバンドルを取得しま

す。

l 継承グラフの下から上に向かって、プロパティリソースバンドルの属性を

結合します。

l リーフの継承グラフのルートで、インターフェイスグラフの下から上に向

かって、各インターフェイスの継承グラフを結合します。

2. 属性の結合の処理:

l ファシリティは継承グラフへ移動します。

l 上から下へすべて検索した後で、下から上に向かって属性を結合します。

継承クラスにインターフェイスが実装されている場合があります。このた

め、インターフェイスの結合処理は、継承グラフの下から上に向かって行

われます。

l com.sqribe.jdbcacc.JDBCDataSource の中の属性を結合します。

3. この時点で、ドライバはデータソース固有の属性を結合できます。

例では、ドライバは Oracle データソースに固有の属性を結合します。これは、

Production Reporting DDO データベースドライバでは行われません。

4. アプリケーションは、新しいプロパティシートに含めるプロパティを変更し

たり、数を増やしたりできます。

変更は、指定したプロパティシートに限られます。この例では、データソー

スは特定の Oracle データソースインスタンスに関連付けられます。例えば、

この DataSource オブジェクトの有効期間中は、このデータソースへのすべて

の接続で 1 つのユーザ名とパスワードを使用するとよいでしょう。こうする

と、これらのログオンプロパティが一度設定されて、すべての接続で使用さ

れます。つまり、すべての接続は同じユーザ名とパスワードのプロパティを

使って開かれます。

ただし、接続ごとに異なるユーザ名とパスワードが必要な場合もあります。

この場合は、特定の接続を開く前に、ユーザ名とパスワードのプロパティを

設定します。

120 ユーティリティパッケージと共通ファシリティ

Page 121: Hyperion SQR Production Reporting 開発者ガイド ボリューム …SQR Production Reporting Studio によるBAPI のレポート作成 ..... 129 SAP R/3 のProduction Reporting

どちらのケースも、プロパティシートを接続インスタンス用にコピーするこ

とで実現できます。この方法では、接続オブジェクトから加えられたプロパ

ティシートの変更は、データソースに影響しません。その反対も同様です。

基本のリレーショナルデータベースで、指定した接続の同時操作がサポートされ

る場合は、Production Reporting DDO リレーショナルドライバでも同レベルの同時

操作がサポートされます。接続のプロパティシートは、すべてのスレッドで共有

されます。このため、接続のプロパティシートに加えた変更は、すべてのスレッ

ドで認識されます。

ローカライズの例

国の識別子を使わずに、フランス語のローカライズをプロパティの検索に追加す

る場合について見てみましょう。このローカライズでは、ログオンプロパティの

説明を翻訳します。Production Reporting DDO リレーショナルデータベースドライ

バをインスタンス化すると、次のプロパティの説明がプロパティシートに結合さ

れます。

com_sqribe_access_DataSource_PropertyDescriptions

com_sqribe_access_DataSource_PropertyDescriptions_fr

com_sqribe_jdbcacc_JDBCDataSource_PropertyDescriptions

com_sqribe_jdbcacc_JDBCDataSource_PropertyDescriptions_fr

この例では、ローカライズされた説明テキストを追加することにより、フランス

語のプロパティの説明ファイルでデフォルトのプロパティの説明ファイルが拡張

されます。このアルゴリズムは、特に指定されないリソースバンドルがローカラ

イズされたリソースバンドルで完全に置き換えられる、単純な

java.util.ResourceBundle 処理とは異なります。ローカライズされたリソースバンド

ルは、特に指定されないバンドルを拡張します。

保護されたプロパティと特性プロパティファシリティの際立った特徴の 1 つに、秘密値の暗号化があります。

プロパティ(または特性の説明)で指定された属性の 1 つが、関連付けられた値

の場合は、保護する必要があります。この場合、値は暗号化されたフォームで保

持されます。get accessor メソッドでこの属性が要求されると、復号化されたコピー

が作成されます。復号化されたコピーは一時(ローカル)変数で、それを含むブ

ロックが範囲(指定)外になると破棄されます。

プロパティの補助的なサービスPropertyAuxProc インターフェイスは、特別なランタイム処理を実装する場合に使

用します。このインターフェイスのメソッドは、本来はプロパティ/特性のリソー

スバンドルに含まれず、他のメカニズムでサポートされるプロパティや特性のド

ライバ属性を取得する場合に使います。例えば、プロパティ/特性のリソースバ

ンドルに入れておくことのできない基本のデータソースの属性などです。

このインターフェイスの get メソッドと set メソッドは、互いに依存しません。get

メソッドを使って仮想プロパティを取得することにより、set メソッドでプロパ

プロパティファシリティ 121

Page 122: Hyperion SQR Production Reporting 開発者ガイド ボリューム …SQR Production Reporting Studio によるBAPI のレポート作成 ..... 129 SAP R/3 のProduction Reporting

ティの事後処理が自動的に行われるわけではありません。同様に、set メソッドを

使ってクラス属性を更新することにより、get メソッドでそれらの属性が自動的に

作成されるわけではありません。

一般に、get メソッドは情報を取得するだけでなく、ハッシュテーブルの値をキャッ

シュする準備も行います。つまり、get メソッドには初回時の論理があります。ま

た、このインターフェイスを使用するプロパティ(および特性)は保存されない

ため、永続的ではありません。つまり、get メソッドは初回時の論理でハッシュ

テーブル内のプロパティをテストできますが、テストごとにハッシュテーブルを

検索する必要があります。

プロパティの検証PropertyValidator は、プロパティの検証クラスへのインターフェイスを提供しま

す。また、AbstractPropertyValidator クラスは、このインターフェイスの大部分を

実装しているため、createValue と compare の 2 つのメソッドにかかる負荷が軽減

されます。プログラム ex24.sqr に、BigDecimalValidator の使用例を示します。

プログラム ex24.sqrpublic class BigDecimalValidator extends AbstractPropertyValidator { /** * Create the value from a string * @param pValue The value to be converted * @return The converted value * @exception PropertyException * Generic exception indicating that the value * could not be converted */ public Object createValue(String pValue) throws PropertyException { try { return new BigDecimal(pValue); } catch (Throwable e) { throw new PropertyException(e.getMessage()); } } /** * Compare to values * @param pValue1 First comparand * @param pValue2 Second comparand * @return First<Second==-1; * First==Second==0; * First>Second==1 * @exception PropertyException * Generic exception indicating that the value * was not the correct data type */ public int compare(Object pValue1, Object pValue2) throws PropertyException { return (((BigDecimal)pValue1).compareTo((BigDecimal)pValue2)); }}

共通ユーティリティパッケージは、Java プリミティブ型および Java SQL 型を実装

します。以下の Validator は、AbstractPropertyValidator を拡張します。

122 ユーティリティパッケージと共通ファシリティ

Page 123: Hyperion SQR Production Reporting 開発者ガイド ボリューム …SQR Production Reporting Studio によるBAPI のレポート作成 ..... 129 SAP R/3 のProduction Reporting

l BigDecimalValidator

l BooleanValidator

l ByteValidator

l CharacterValidator

l DateValidator

l DoubleValidator

l FloatValidator

l IntegerValidator

l LongValidator

l ShortValidator

l StringValidator

プロパティファシリティ 123

Page 124: Hyperion SQR Production Reporting 開発者ガイド ボリューム …SQR Production Reporting Studio によるBAPI のレポート作成 ..... 129 SAP R/3 のProduction Reporting

124 ユーティリティパッケージと共通ファシリティ

Page 125: Hyperion SQR Production Reporting 開発者ガイド ボリューム …SQR Production Reporting Studio によるBAPI のレポート作成 ..... 129 SAP R/3 のProduction Reporting

第 I I 部

Production Reporting DDOによるデー

タへのアクセス

Production Reporting DDO によるデータへのアクセスの内容:

l Production Reporting DDO による SAP R/3 データへのアクセス

l Production Reporting DDO による SAP BW データソースへのアクセス

l Production Reporting DDO による Essbase キューブへのアクセス

l Production Reporting DDO による MSOLAP キューブへのアクセス

Production Reporting DDO によるデータへのアクセス 125

Page 126: Hyperion SQR Production Reporting 開発者ガイド ボリューム …SQR Production Reporting Studio によるBAPI のレポート作成 ..... 129 SAP R/3 のProduction Reporting

126 Production Reporting DDO によるデータへのアクセス

Page 127: Hyperion SQR Production Reporting 開発者ガイド ボリューム …SQR Production Reporting Studio によるBAPI のレポート作成 ..... 129 SAP R/3 のProduction Reporting

7Production Reporting DDOに

よるSAP R/3データへのアク

セス

この章の内容

データアクセスの要素 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 127

レジストリエディタによる SAP R/3 の接続 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 127

クエリエディタによる SAP ツリー構造の表示 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 128

SQR Production Reporting Studio による BAPI のレポート作成. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 129

SAP R/3 の Production Reporting コードについて . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 130

データアクセスの要素SAP R/3 データへアクセスするには、次の情報が必要です。

l 接続に必要な値

l BAPI パラメータ

標準の BAPI では次のパラメータが必要です。

m ホスト名(IP アドレス)

m システム番号

m クライアント名

m 言語

m ユーザ名

m パスワード

さらに、BAPI には通常、独自のパラメータがあります。パラメータ情報

と値については、SAP R/3 管理者に問い合わせてください。

l ソフトウェア

m Production Reporting DDO

m Oracle's Hyperion® SQR® Production Reporting Studio

レジストリエディタによる SAP R/3 の接続Production Reporting DDO レジストリエディタにより、SAP R/3 の接続を ODBC の

接続のように実行できます。

データアクセスの要素 127

Page 128: Hyperion SQR Production Reporting 開発者ガイド ボリューム …SQR Production Reporting Studio によるBAPI のレポート作成 ..... 129 SAP R/3 のProduction Reporting

ä Production Reporting DDO レジストリエディタを使用するには、次の手順に従いま

す。

1 [スタート]、[プログラム]、[Oracle EPM System]、[Reporting and Analysis]、[SQR Production

Reporting for DDO]、[Registry Editor]を選択します。

2 [ファイル]、[開く]を選択するか、ツールバーで[開く]ボタンをクリックします。

3 [Registry]をハイライトし、[開く]をクリックします。

4 [追加]をクリックします。

5 sapr3acc をハイライトし、[OK]をクリックします。

6 [Setup Data Source]ダイアログボックスが表示されたら、次のようにします。

1. データソースの名前と説明を入力します。

2. [Build]をクリックして、次のパラメータを入力し、[OK]をクリックしま

す。

l ホスト:SAP R/3 システムデータを格納する IP アドレス

l System #:SAP R/3 管理者から入手

l クライアント:SAP R/3 管理者から入手

l 言語:SAP R/3 管理者から入手

7 [テスト]をクリックします。

8 [ログオン]ダイアログボックスでユーザ名とパスワードを入力します。

ユーザ名とパスワードが不明な場合は、SAP 管理者に問い合わせてください。

クエリエディタによる SAP ツリー構造の表示Production Reporting DDO クエリエディタにより、SAP ツリー構造をパラメータと

ともに表示したり、SAP が必要な変数と SAP が渡す変数を確認できます。

ä Production Reporting DDO クエリエディタを使用するには、次の手順に従います。

1 [スタート]、[プログラム]、[Oracle EPM System]、[Reporting and Analysis]、[SQR Production

Reporting for DDO]、[Query Editor]を選択します。

2 [ファイル]、[開く]を選択するか、ツールバーで[開く]ボタンをクリックします。

3 Registry フォルダ内のデータソースをハイライトし、[開く]をクリックします。

4 ユーザ名とパスワードを入力します。

Meta Data フォルダをダブルクリックする必要があるかもしれませんが、SAP ツ

リー構造は自動表示されているはずです。

目的のフォルダをクリックして、BAPI の状態と関連の変数を確認します。

128 Production Reporting DDO による SAP R/3 データへのアクセス

Page 129: Hyperion SQR Production Reporting 開発者ガイド ボリューム …SQR Production Reporting Studio によるBAPI のレポート作成 ..... 129 SAP R/3 のProduction Reporting

SQR Production Reporting Studio による BAPI のレポート作成

ä BAPI を使用してレポートを作成するには、次の手順に従います。

1 [スタート]、[プログラム]、[Oracle EPM System]、[Reporting and Analysis]、[Production

Reporting Studio]を選択します。

2 レポートの種類を選択して、クエリビルダにアクセスします。

3 [Connection]タブで[New]をクリックし、データソース名を入力します。

4 [DDO]をクリックします。

5 Registry フォルダで、Production Reporting DDO ソースを見つけます。

ソースが見つからない場合は、レジストリエディタの作成に基づくパラメータを

いくつか再入力する必要があります。

6 [DDO Logon]ダイアログボックスで、ユーザ名とパスワードを入力します。

この情報は SAP 管理者から入手する必要があるかもしれません。

7 クエリビルダで、残りのタブのクエリを定義します。

クエリビルダでフォルダを開くと、BAPI の内部を表示できます。BAPI では通常、

パラメータ、RETURN 変数や TABLES 変数が必要です。

次の図に示すように、「ReadJobLog」BAPI には次の情報が含まれています。

l パラメータ:Jobname、Jobcount、ExternalUserName

l パラメータ:テーブル:JobLog

l 戻り値:テーブル:戻り

SQR Production Reporting Studio による BAPI のレポート作成 129

Page 130: Hyperion SQR Production Reporting 開発者ガイド ボリューム …SQR Production Reporting Studio によるBAPI のレポート作成 ..... 129 SAP R/3 のProduction Reporting

ä「ReadJobLog」BAPI を選択するには、次の手順に従います。

1 ReadJobLog をハイライトし、[Add]をクリックし、[Next]をクリックします。

1 度に追加できるのは 1 つの BAPI だけです。

2 [レイアウト]ウィンドウが表示されるまで、クエリビルダの残りのページを進めま

す。

3 レポートを処理し、保存します。

注:

BAPI による SQR Production Reporting Studio のレポートの作成について詳しくは、

『Hyperion SQR Production Reporting Studio User's Guide』の「Creating SAP R/3

Reports」を参照してください。

SAP R/3 の Production Reporting コードについて次に示すのは、前の例で SQR Production Reporting Studio で作成したコードです。

!--------------------------------------------------------------------------------! Generated on Sun Mar 03 23:52:30 2002 by SQR Production Reporting Studio 9.0!! Filename: C:¥Documents and Settings¥nmoscaritolo.NICOLAS2K¥Desktop¥Untitled.sqr! Format : Tabular! Username: Oracle!--------------------------------------------------------------------------------Begin-Setup Declare-Layout Default Orientation = Portrait Paper-Size = (Letter) Top-Margin = 0.500 Bottom-Margin = 0.500

130 Production Reporting DDO による SAP R/3 データへのアクセス

Page 131: Hyperion SQR Production Reporting 開発者ガイド ボリューム …SQR Production Reporting Studio によるBAPI のレポート作成 ..... 129 SAP R/3 のProduction Reporting

Left-Margin = 0.500 Right-Margin = 0.500 Line-Height = 1 Char-Width = 1 End-Declare! procedure parameters!***** These are ALL of the parameters and return variables within the selected BAPI.Declare-Variable date $job_protocol_entertime !type=date(Time),width=8,size=6,precision=0 date $job_protocol_enterdate !type=date(Date),width=10,size=8,precision=0 text $job_protocol_msgid !type=char(Char),width=20,size=20,precision=0 decimal #job_protocol_msgno !type=decimal(Number),width=3,size=3,precision=0 text $job_protocol_text !type=char(Char),width=200,size=200,precision=0 text $job_protocol_rabaxkey !type=char(Char),width=64,size=64,precision=0 decimal #job_protocol_rabaxkeyln !type=decimal(Integer),width=10,size=4,precision=0 text $job_protocol_msgv1 !type=char(Char),width=50,size=50,precision=0 text $job_protocol_msgv2 !type=char(Char),width=50,size=50,precision=0 text $job_protocol_msgv3 !type=char(Char),width=50,size=50,precision=0 text $job_protocol_msgv4 !type=char(Char),width=50,size=50,precision=0 text $job_protocol_program !type=char(Char),width=40,size=40,precision=0 text $job_protocol_pfkey !type=char(Char),width=20,size=20,precision=0 text $job_protocol_dynpro !type=char(Char),width=4,size=4,precision=0 text $return_type !type=char(Char),width=1,size=1,precision=0 text $return_id !type=char(Char),width=20,size=20,precision=0 decimal #return_number !type=decimal(Number),width=3,size=3,precision=0 text $return_message !type=char(Char),width=220,size=220,precision=0 text $return_log_no !type=char(Char),width=20,size=20,precision=0 decimal #return_log_msg_no !type=decimal(Number),width=6,size=6,precision=0 text $return_message_v1 !type=char(Char),width=50,size=50,precision=0 text $return_message_v2 !type=char(Char),width=50,size=50,precision=0 text $return_message_v3 !type=char(Char),width=50,size=50,precision=0 text $return_message_v4 !type=char(Char),width=50,size=50,precision=0 text $return_parameter !type=char(Char),width=32,size=32,precision=0 decimal #return_row !type=decimal(Integer),width=10,size=4,precision=0 text $return_field !type=char(Char),width=30,size=30,precision=0 text $return_system !type=char(Char),width=10,size=10,precision=0 End-DeclareEnd-Setup Begin-Program Position (1,1) Do Master_QueryEnd-Program Begin-Procedure Master_Query! ***** This is not needed but it demonstrates how you could ALTER your DDO connectionAlter-connection Name=default Parameters=logon.trace=0;logon.client=850;logon.check=1;logon.type=3;logon.sysnr=00;logon.language=EN;logon.ashost=/H/10.215.22.227/H/204.79.199.244/H/172.20.11.6;! ***** These three parameters are REQUIRED from you and your SAP Administrator! list and user assigned input parameters let $jobname = '123ewqsa' !type=char(Char),width=32,size=32,precision=0 let $jobcount = '123123' !type=char(Char),width=8,size=8,precision=0 let $external_user_name = 'Oracle' !type=char(Char),width=16,size=16,precision=0! ***** This new ‘%’ variables collect all of the returned data into a LIST variable for later uselet %job_protocol = list( $job_protocol_entertime, $job_protocol_enterdate, $job_protocol_msgid,

SAP R/3 の Production Reporting コードについて 131

Page 132: Hyperion SQR Production Reporting 開発者ガイド ボリューム …SQR Production Reporting Studio によるBAPI のレポート作成 ..... 129 SAP R/3 のProduction Reporting

#job_protocol_msgno, $job_protocol_text, $job_protocol_rabaxkey, #job_protocol_rabaxkeyln, $job_protocol_msgv1, $job_protocol_msgv2, $job_protocol_msgv3, $job_protocol_msgv4, $job_protocol_program, $job_protocol_pfkey, $job_protocol_dynpro ) let %return = list( $return_type, $return_id, #return_number, $return_message, $return_log_no, #return_log_msg_no, $return_message_v1, $return_message_v2, $return_message_v3, $return_message_v4, $return_parameter, #return_row, $return_field, $return_system ) ! ***** BEGIN-EXECUTE is required for DDO Begin-Execute! ***** SCHEMA can be retrieved from your SAP Administrator. SAP calls it Business Object Type SCHEMA='XBPJOB' ! Basis Components(BC);Computing Center Management System(BC-CCM);Application Programming Interfaces(BC-CCM-API);Complementary Software Interfaces(BC-CCM-API-CSI);BackgroundJob(XBPJOB)! ***** PROCEDURE is the BAPI name PROCEDURE='READJOBLOG' ! ReadJoblog[READJOBLOG]! ***** PARAMETERS are found in the parameter section of the BAPI PARAMETERS=($jobname IN, $jobcount IN, $external_user_name IN, NULL)! ***** STATUS return the SQR return LIST variables which contains valuable debugging values and messages STATUS=%return Print-Direct printer=html '%%ResetColor' Print-Direct printer=html '%%ResetBorder'! ***** BEGIN-SELECT is used to select the SAP TABLE structure where the FROM PARAMETER command uses the TABLE !NAME within the BAPIBegin-Select Alter-Printer Font=901 Point-Size=10 ! [SQR.INI] 901=MS Shell Dlg,proportionalENTERTIME &Master_Query_ENTERTIME=date (12,1) Edit MM/DD/YYYY !type=date(Time),width=8,size=6,precision=0ENTERDATE &Master_Query_ENTERDATE=date (12,129) Edit MM/DD/YYYY !type=date(Date),width=10,size=8,precision=0 Print-Direct printer=html '%%ResetColor' Next-Listing Need=12From Parameter = 'JOB_PROTOCOL'End-Select End-Execute Next-Listing Print-Direct printer=html '%%ResetColor' Print-Direct printer=html '%%ResetBorder'End-ProcedureBegin-Heading 48 Print-Direct printer=html '%%ResetColor' Print-Direct printer=html '%%ResetBorder' Alter-Printer Font=901 Point-Size=10 ! [SQR.INI] 901=MS Shell Dlg,proportional Print $current-date (12,1) edit 'MM/DD/YYYY' Page-Number (12,517) Print 'Entertime' (42,1,9) Underline Bold Print 'Enterdate' (42,129,9) Underline Bold Alter-Printer Font=901 Point-Size=10End-Heading

132 Production Reporting DDO による SAP R/3 データへのアクセス

Page 133: Hyperion SQR Production Reporting 開発者ガイド ボリューム …SQR Production Reporting Studio によるBAPI のレポート作成 ..... 129 SAP R/3 のProduction Reporting

8Production Reporting DDOに

よるSAP BWデータソースへ

のアクセス

この章の内容

SAP BW OLAP サーバへのアクセス . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 133

対応プラットフォーム . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 133

/lib ディレクトリへのファイルのコピー . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 134

SAP BW データソースの Registry.properties ファイルへの追加 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 134

SAP BW データソースのオブジェクトの階層構造 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 135

SAP BW と Production Reporting 言語 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 137

SQR Production Reporting Studio から SAP BW データへのアクセス. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 150

SAP BW OLAP サーバへのアクセスDDO SAP BW ドライバは、SAP Java コネクタの JAR ファイルと共有ライブラリ、

および SAP RFC 共有ライブラリを使用して構築されています。これらのコンポー

ネントは SAP BW OLAP サーバへのアクセスに必要ですが、Production Reporting

DDO には付属していません。これらのファイルのコピーを取得するには、SAP の

コネクタの公式サイト(https://websmp104.sap-ag.de/connectors)にアクセ

スしてください。

対応プラットフォームDDO SAP BW ドライバは、次のプラットフォームに対応しています。

表 19 対応プラットフォーム

プラットフォーム オペレーティングシステム

Windows Windows 2000、Windows 2000 Server、Windows XP、Windows 2003 Server

Solaris 5.8 および 5.9

HP-UX B.110.11

HP/Itanium B.11.23

IBM-AIX 5.1 および 5.2

Linux AS 3.0 および 4.0

SAP BW OLAP サーバへのアクセス 133

Page 134: Hyperion SQR Production Reporting 開発者ガイド ボリューム …SQR Production Reporting Studio によるBAPI のレポート作成 ..... 129 SAP R/3 のProduction Reporting

/lib ディレクトリへのファイルのコピーSAP BW に接続する前に、プログラムの/libディレクトリにファイルをいくつか

コピーする必要があります。

l Windows プラットフォームの場合

Production Reporting DDO をインストールしたら、次のファイル

を%HYPERION_BIPLUS_HOME%/libディレクトリにコピーします。

m sapjco.jar

m sapjocrfc.dll

m librfc32.dll(librfc32.dllのバージョン 6.20.6 以降が必要)

l UNIX プラットフォームの場合

Production Reporting DDO をインストールしたら、次のファイルを

$HYPERION_BIPLUS_HOME/libディレクトリにコピーします。

m sapjco.jar

m libsapjcorfc.<so, sl>

m librfccm.<so, sl, o>(librfccm共有ライブラリのバージョン 6.20.6 以降

が必要)

UNIX プラットフォームの場合は、/libディレクトリに含める次の環境変

数を更新する必要があります。

LD_LIBRARY_PATH/SHLIB_PATH/LIBPATH

SAP BW データソースの Registry.properties ファイルへの追加

DDO SAP BW ドライバを使用するには、まず、DDO レジストリエディタで

Registry.propertiesファイルに SAP BW データソースを追加する必要がありま

す。

注:

DDO レジストリエディタは、データソースを管理するためのグラフィカルイン

ターフェイスです。詳しくは、第 5 章「データソースの管理」を参照してくださ

い。

ä SAP BW データソースを Registry.propertiesファイルに追加するには、次の手

順に従います。

1 [スタート]、[プログラム]、[Oracle EPM System]、[Reporting and Analysis]、[Production

Reporting for DDO]、[Registry Editor]を選択してエディタのメインウィンドウを開き、次

に[File]、[Open]を選択するか、ツールバーの[Open]ボタンをクリックして、レジ

ストリエディタを起動します。

2 [Open Registry]ウィンドウで[Registry]を選択し、[Open]をクリックします。

134 Production Reporting DDO による SAP BW データソースへのアクセス

Page 135: Hyperion SQR Production Reporting 開発者ガイド ボリューム …SQR Production Reporting Studio によるBAPI のレポート作成 ..... 129 SAP R/3 のProduction Reporting

3 レジストリエディタのメインウィンドウで[Add]をクリックします。

4 [Create New Data Source]ウィンドウで bwacc(SAP BW OLAP)というドライバ名をクリッ

クし、[OK]をクリックします。

5 [Setup Data Source]ダイアログボックスに、SAP BW データソースの情報を次のように

入力して、[Build]をクリックします。

6 [Build Connection String]ダイアログボックスに情報を入力して、[OK]をクリックしま

す。

7 [Setup Data Source]ダイアログボックスが開き、接続文字列が表示されます。[テス

ト]をクリックして、接続をテストします。

8 [ログオン]ダイアログボックスに、有効なユーザ名とパスワードを入力して、[OK]

をクリックします。

9 問題なく接続されると、[Test Data Source]ダイアログボックスが表示されます。[OK]

をクリックし、SAPBW データソースをレジストリエディタで確認します。

10 [ファイル]、[保存]を選択するか、[保存]ボタンをクリックして、データソースを

保存します。

SAP BW データソースのオブジェクトの階層構造図 8 に、SAP BW データソースのオブジェクトの階層的構造を示します。

図 8 SAP BW データソースのオブジェクトの階層的構造

情報プロバイダ

-----InfoCubes

-----QueryCubes

-----ODS のオブジェクト

-----InfoSets

---------特徴

-----------------特徴レベル

--------------------------特徴レベルメンバ

-------------------------------------特徴の子のメンバ

-----------------特徴メンバ

--------------------------特徴の子のメンバ

-----------------プロパティ (オプション)

--------------------------プロパティ

-------------------------------------プロパティメンバ

--------------------------必須プロパティ

---------ナビゲーション属性

SAP BW データソースのオブジェクトの階層構造 135

Page 136: Hyperion SQR Production Reporting 開発者ガイド ボリューム …SQR Production Reporting Studio によるBAPI のレポート作成 ..... 129 SAP R/3 のProduction Reporting

-----------------ナビゲーション属性レベル

--------------------------ナビゲーション属性レベルメンバ

-----------------------------------ナビゲーション属性メンバ

-----------------ナビゲーション属性メンバ

--------------------------ナビゲーション属性メンバ

-----------------階層

--------------------------階層レベル

--------------------------------------階層レベルメンバ

------------------------------------------------階層の子のメンバ

--------------------------階層メンバ

--------------------------------------階層の子のメンバ

----------------プロパティ(オプション)

--------------------------------------必須プロパティ

---------キー数値

-----------------キー数値属性

---------SAP 変数(QueryCubes のみ)

-----------------SAP 変数—単数

-----------------SAP 変数—間隔

-----------------SAP 変数—必須単数

-----------------SAP 変数—必須間隔

-----------------SAP 変数—単数の MandatoryNol

-----------------SAP 変数—間隔の MandatoryNol

--------------------------SAP 変数のメンバ

図 9 は単一の特徴の階層を示します。

136 Production Reporting DDO による SAP BW データソースへのアクセス

Page 137: Hyperion SQR Production Reporting 開発者ガイド ボリューム …SQR Production Reporting Studio によるBAPI のレポート作成 ..... 129 SAP R/3 のProduction Reporting

図 9 単一の特性の階層

SAP BW と Production Reporting 言語SAP BW のデータを処理するために、Production Reporting 言語に次の機能が加え

られています。

l 次元のプロパティへのアクセス

l 次元のメンバの指定

l 次元のメンバを返す順序の指定

l 結果セットの制限

l 次元に使用される値セットの制限

l SAP BW 変数の使用

l 子孫セットの戻り値

l 次元の祖先の検索

l 計算されたキー数値の使用、制限されたキー数値の使用、計算されたメンバ

の定義

注:

DECLARE-CONNECTION コマンドと ALTER-CONNECTION コマンド内の SET-

GENERATIONS 引数と SET-LEVELS 引数は、DDO SAP BW ドライバを使用する場

合はサポートされません。これらの引数は、Production ReportingSAP BW データ

ソースへアクセスするときは無視されます。

注:

このセクションでの Production Reporting 言語構文は、次元としての特性および測

定値としてのキー数値に対応しています。

SAP BW と Production Reporting 言語 137

Page 138: Hyperion SQR Production Reporting 開発者ガイド ボリューム …SQR Production Reporting Studio によるBAPI のレポート作成 ..... 129 SAP R/3 のProduction Reporting

次元のプロパティへのアクセス次元のプロパティの値を選択するには、BEGIN-SELECTの次の構文を使用します。

注:

詳しくは、『Production Reporting 開発者ガイド』のボリューム 2 「BEGIN-

SELECT」を参照してください。

構文

{[$Dimension.Propertyname] $synonym = (char|number|date)}

引数

Dimension.Propertyname

次元のプロパティの値。 初に次元を要求せずに次元のプロパティ値を要求する

ことはできません。

例:

次の例で、選択した次元のプロパティの返される値を示します。次の図は、

0APO_LOCNO 次元のプロパティを示します。

次のコマンドでは、0APO_LOCNO、0APO_LOCNO アドレスキー、および選択し

た測定値が返されます。

begin-select 0APO_LOCNO 0APO_LOCNO.20ADDR_NUMBER Measures.D5XK1R2CAGKTXDWNCTIDVK8RI from SAP BWend-select

結果セットは、次のようになります。

138 Production Reporting DDO による SAP BW データソースへのアクセス

Page 139: Hyperion SQR Production Reporting 開発者ガイド ボリューム …SQR Production Reporting Studio によるBAPI のレポート作成 ..... 129 SAP R/3 のProduction Reporting

0APO-LOCNO 20ADDR_NUMBER Measures.D5XK1R2CAGKTXDWNCTIDVK8RI

すべての APO ロケーション 210.720

大阪市 10294 210.720

次元のメンバの指定WHERE句を使用して、クエリに使用する次元のメンバを指定します。

構文

WHERE VAR [VAR]=(txt_var|_col|_lit)

引数

VAR

正しい次元または測定値を表す文字列変数、列、またはリテラル。

説明

l WHEREを FROMの直後に配置する必要があります。

l 1 つの Select ステートメントに、WHEREを 1 つしか入れられません。

l VARの名前にスペースが含まれている場合は、その名前を二重引用符で囲みま

す。

l WHEREの中で、有効な次元とそのメンバの 1 つを指定する必要があります。

l WHEREで、SET-MEMBERSで既に宣言している次元を指定して、さらに選択を制

限できます。

l 単一の列と行の交点を指す式だけを使用できます。

l WHEREは、複数の次元のメンバで論理 AND演算を暗黙的に行います。論理 AND

演算を単一の次元内のメンバだけで行うには、SET-MEMBERSを宣言します。

l Production Reporting では、必要に応じて標準的な変数の参照($、#、&)を使

用できます。

l Production Reporting では、標準的な変数の置換([$xxx])がサポートされてい

ます。

例:

次の例では、選択した 0APO_LOCNO と 2001 年の第 38 週の測定値が返されます。

begin-select 0APO_LOCNO Measures.D5XK1R2CAGKTXDWNCTIDVK8RI From SAP BW WHERE 0CALWEEK.200138end-select

上の例で、WHERE句を「含まない」場合の結果セットは、次のようになります。

SAP BW と Production Reporting 言語 139

Page 140: Hyperion SQR Production Reporting 開発者ガイド ボリューム …SQR Production Reporting Studio によるBAPI のレポート作成 ..... 129 SAP R/3 のProduction Reporting

0APO_LOCNO Measures.D5XK1R2CAGKTXDWNCTIDVK8RI

すべての APO ロケーション 210.720

大阪市 210.720

上の例で、WHERE句を「含む」場合の結果セットは、次のようになります。

0APO_LOCNO Measures.D5XK1R2CAGKTXDWNCTIDVK8RI

すべての APO ロケーション 17.861

大阪市 17.861

次元のメンバを返す順序の指定ORDER BY句を使用して、選択した測定値の次元のメンバが要求したメンバとして

返される順序を指定します。次元のプロパティまたは選択した測定値でソートで

きます。

構文

ORDER BY [(DIM, EXPRESSION)] {SO} [(DIM, EXPRESSION) {SO}]…

引数

DIM

正しい次元または階層を表す文字列変数、列、またはリテラル。

EXPRESSIONは次の形式です。

(MEASURE[.VALUE])

または

(Dimension[.Dimension Property])

SO

次のいずれかのリテラルの値。

l ASC:昇順でソートし、階層を保持します。

l BASC:昇順でソートし、階層を保持しません。

l DESC:降順でソートし、階層を保持します。

l BDESC:降順でソートし、階層を保持しません。

SO はバインド変数にはできません。

説明

l ORDER BYを FROMの直後に配置する必要があります。

l 1 つの Select ステートメントに、ORDER BYを 1 つしか入れられません。

l ORDER BYはソート順とモードを指定した値を含む必要があります。

140 Production Reporting DDO による SAP BW データソースへのアクセス

Page 141: Hyperion SQR Production Reporting 開発者ガイド ボリューム …SQR Production Reporting Studio によるBAPI のレポート作成 ..... 129 SAP R/3 のProduction Reporting

l データのソート順(昇順または降順)と、階層を保持するかどうかを指定で

きます。

例:

次の例は、選択した測定値を特定の次元のプロパティ(0APO_RTYPE, 0APO_RTYPE.

20APO_RTYPE)で、昇順で階層を保持せずにソートします(BASC)。

begin-select 0APO_RTYPE Measures.D5XK1R2CAGKTXDWNCTIDVK8RI From SAP BW ORDER BY (0APO_RTYPE, 0APO_RTYPE.20APO_RTYPE) BASCend-select

例:

次の例は、選択した測定値を 2 つの次元のプロパティ(ZN_STATE, ZN_STATE.

1ZN_STATE)および(ZN_SKU, ZN_SKU.1ZN_SKU)で、昇順で階層を保持せずにソー

トします(BASC)。

begin-select ZN_STATE ZN_SKU Measures.ZN_ADDTNS Measures.ZN_CLINV Measures.ZN_COGS Measures.ZN_MISC Measures.ZN_MRKTNG Measures.ZN_OPINV Measures.ZN_PROLL Measures.ZN_SALES From SAP BW ORDER BY (ZN_STATE, ZN_STATE .1ZN_STATE) BASC (ZN_SKU, ZN_SKU.1ZN_SKU) BASCend-select

例:

次の例は、選択した測定値を特定の次元のプロパティ(ZN_STATE,

Measures.ZN_ADDTNS)で、昇順で階層を保持してソートします(BASC)。

begin-select ZN_STATE Measures.ZN_ADDTNS Measures.ZN_CLINV Measures.ZN_COGS Measures.ZN_MISC Measures.ZN_MRKTNG Measures.ZN_OPINV Measures.ZN_PROLL Measures.ZN_SALES From SAP BW ORDER BY (ZN_STATE, Measures.ZN_ADDTNS) ASCend-select

結果セットの制限FILTERを使用して、返される結果セットを制限します。

SAP BW と Production Reporting 言語 141

Page 142: Hyperion SQR Production Reporting 開発者ガイド ボリューム …SQR Production Reporting Studio によるBAPI のレポート作成 ..... 129 SAP R/3 のProduction Reporting

構文

FILTER (DIM, {Boolean Expression} [{Relation} {Boolean Expression}]...)

引数

DIM

正しい次元を表す文字列の変数、列、またはリテラル。

Boolean Expression

論理式は次の形式です。

(MEASURE[.VALUE] {Operator} VALUE [SLICED BY DIM[.VALUE] [DIM[.VALUE]...])

または

(Dimension[.Dimension Property] {Operator} “VALUE” [SLICED BY DIM[.VALUE] [DIM[.VALUE]...])

この Operator は次のいずれかです。

< > <= >= = !=

BottomCount

BottomSum

BottomPercent

TopCount

TopSum

TopPercent

Relation

AND キーワードか OR キーワード

説明

l FILTERで、論理式をいくつでも指定することができます。

l 複数の FILTERを記述できますが、1 つの FILTER句で 1 つの次元しか指定で

きません。

l 次元や変数の名前にスペースが含まれている場合は、名前を二重引用符で囲

みます。

l Production Reporting では、必要に応じて標準的な変数の参照($、#、&)を使

用できます。

l Production Reporting では、標準的な変数の置換([$xxx])がサポートされてい

ます。

例:

次の例では、戻り値が 60 より大きく 200 より小さい結果セットが返されます。

declare-connection set-members('APO_RTYPE','0APO_RTYPE'.'LEVEL01') end-connection

142 Production Reporting DDO による SAP BW データソースへのアクセス

Page 143: Hyperion SQR Production Reporting 開発者ガイド ボリューム …SQR Production Reporting Studio によるBAPI のレポート作成 ..... 129 SAP R/3 のProduction Reporting

begin-select 0APO_RTYPE Measures.D5XK1R2CAGKTXDWNCTIDVK8RI From SAP BW FILTER (0APO_RTYPE, (Measures.D5XK1R2CAGKTXDWNCTIDVK8RI > 60.00) AND (Measures.D5XK1R2CAGKTXDWNCTIDVK8RI < 200.00)) end-selectend-declare

上の例で、FILTER句を「含まない」場合の結果セットは、次のようになります。

0APO_RTYPE Measures.D5XK1R2CAGKTXDWNCTIDVK8RI

4 57.759

5 152.961

8

9

割り当てなし

上の例で、FILTER句を「含む」場合の結果セットは、次のようになります。

0APO_RTYPE Measures.D5XK1R2CAGKTXDWNCTIDVK8RI

5 152.961

すべてのタイプのリソース 210.720

次元に使用される値セットの制限EXCEPT句を使用してフィルタリング機能を適用することで、選択した次元に使用

される値のセットを制限します。

構文

EXCEPT (DIM [,DIM]...)

引数

DIM

正しい次元を表す文字列の変数、列、またはリテラル。

説明

l 複数の EXCEPT句を使用できます。

l 次元名にスペースが含まれている場合は、その名前を二重引用符で囲みます。

l Production Reporting では、必要に応じて標準的な変数の参照($、#、&)を使

用できます。

SAP BW と Production Reporting 言語 143

Page 144: Hyperion SQR Production Reporting 開発者ガイド ボリューム …SQR Production Reporting Studio によるBAPI のレポート作成 ..... 129 SAP R/3 のProduction Reporting

l Production Reporting では、標準的な変数の置換([$xxx])がサポートされてい

ます。

例:

次の例では、SET-MEMBERSが返すリソースタイプから、タイプ 5 が除かれます。

declare-connection set-members=('0APO_RTYPE','0APO_RTYPE.LEVEL01') end-connection begin-select 0APO_RTYPE Measures.D5XK1R2CAGKTXDWNCTIDVK8R From SAP BW Except (0APO_RTYPE.5) end-selectend-declare

上の例で、EXCEPT句を「含まない」場合の結果セットは、次のようになります。

0APO_RTYPE Measures.D5XK1R2CAGKTXDWNCTIDVK8RI

4 57.759

5 152.961

8

9

割り当てなし

上の例で、EXCEPT句を「含む」場合の結果セットは、次のようになります。

0APO_RTYPE Measures.D5XK1R2CAGKTXDWNCTIDVK8RI

4 57.759

8

9

割り当てなし

SAP BW 変数の使用

SAPVARIABLES句を使用して、SAP BW QueryCube を作成します。

構文

SAPVARIABLES

(Variable_Name {Inclusion/Exclusion Expression}

Single_Variable_Value)...|

(Variable_Name {Inclusion/Exclusion Expression}

144 Production Reporting DDO による SAP BW データソースへのアクセス

Page 145: Hyperion SQR Production Reporting 開発者ガイド ボリューム …SQR Production Reporting Studio によるBAPI のレポート作成 ..... 129 SAP R/3 のProduction Reporting

Low_Variable_Value...)

(Variable_Name {Inclusion/Exclusion Expression}

High_Variable_Value...)

引数

Variable_Name

正しい SAP 変数名を表す文字列の変数、列、またはリテラル。

Inclusion/Exclusion Expression

INCLUDING または EXCLUDING 形式の式。

Single_Variable Value, Low_Variable_Value, High_Variable_Value

正しい SAP 変数の値を表す文字列の変数、列、またはリテラル。

説明

l 複数の SAPVARIABLES句が使用できますが、必須ではありません。

l SAPVARIABLES句は SAP BW QueryCubes でのみ使用できます。

例:

次の例では、リソースタイプ 5 およびリソースタイプ 8 ~ 15 を含む選択された

QueryCube を処理します。リソースタイプは 10 を実行します。

declare-connection set-members=('0APO_RTYPE','0APO_RTYPE.LEVEL01') end-connectionbegin-select 0APO_RTYPE Measures.D5XK1R2CAGKTXDWNCTIDVK8R From SAP BWSAPVARIABLES (0APORTYPE INCLUDING 0APO_RTYPE.5) (0APORTYPE INCLUDING 0APO_RTYPE.8 0APO_RTYPE.15)(0APORTYPE EXCLUDING 0APO_RTYPE.10)end-select

子孫セットの戻り値レベルを参照点としてして次元の子孫セットを返すには、DESCENDANTS句を使用

します。レベルまたは子孫フラグがない場合は、次元とそのすべての子孫が返さ

れます。

構文

DESCENDANTS (DIM DIM_LEVEL DESCENDANT_FLAG)

引数

DIM

正しい SAP 次元名を表す文字列の変数、列、またはリテラル。

DIM_LEVEL

SAP BW と Production Reporting 言語 145

Page 146: Hyperion SQR Production Reporting 開発者ガイド ボリューム …SQR Production Reporting Studio によるBAPI のレポート作成 ..... 129 SAP R/3 のProduction Reporting

正しい SAP 次元レベル名を表す文字列の変数、列、またはリテラル。

DESCENDANT_FLAG

次の値のいずれかです。

l Self

l After

l Before

l Before_and_After

l Self_and_After

l Self_and_Before

l Self_Before_After

l Levels

説明

l 複数の DESCENDANTS句を使用できますが、各次元ごとに使用できるパラメー

タは 1 つだけです。

l DESCENDANTSおよび ANCESTORS句は互いに排他的です。

例:

次の場合は、「State(州)」レベルの「後(すべての市)」のメンバのみを返します。

begin-select 0APO_LOCATION Measures.D5XK1R2CAGKTXDWNCTIDVK8R From SAP BWDESCENDANTS("0APO_LOCATION" "0APO_LOCATION.STATE" AFTER)end-select

例:

次の場合は、「State」のメンバ(すべての州)および「State」レベルの「後(すべての

市)」のメンバを返します。

begin-select 0APO_LOCATION Measures.D5XK1R2CAGKTXDWNCTIDVK8R From SAP BWDESCENDANTS("0APO_LOCATION" "0APO_LOCATION.STATE" SELF_and_AFTER) end-select

次元の祖先の検索ソース次元の祖先をターゲットのレベルで見つけるには、ANCESTOR句を使用しま

す。レベルを指定しない場合は、ソースの次元が返されます。

構文

ANCESTORS (DIM DIM_LEVEL)

146 Production Reporting DDO による SAP BW データソースへのアクセス

Page 147: Hyperion SQR Production Reporting 開発者ガイド ボリューム …SQR Production Reporting Studio によるBAPI のレポート作成 ..... 129 SAP R/3 のProduction Reporting

引数

DIM

正しい SAP 次元名を表す文字列の変数、列、またはリテラル。

DIM_LEVEL

正しい SAP 次元レベル名を表す文字列の変数、列、またはリテラル。

説明

l 複数の ANCESTORS句を使用できますが、各次元ごとに使用できるパラメータ

は 1 つだけです。

l ANCESTORSおよび DESCENDANTS句は互いに排他的です。

例:

次の場合は、Dayton 市(オハイオ州)の State メンバを返します。

begin-select 0APO_LOCATION Measures.D5XK1R2CAGKTXDWNCTIDVK8R From SAP BWANCESTORS ("0APO_LOCATION.DAYTON" "0APO_LOCATION.STATE") end-select

計算されたキー数値の使用、制限されたキー数値の使用、計算されたメンバの定義WITH MEMBER句を使用して、計算されたキー数値の使用、制限されたキー数値の

使用、計算されたメンバを定義します。

構文

WITH MEMBER "MemberName.CalculationName" AS ("member-formula")

引数

MemberName

任意の有効な次元、階層、またはキー「評価」。

CalculationName

計算を識別する固有の名前。

member-formula

任意の有効な MDX 式。

説明

l WITH MEMBERを FROMの直後に配置する必要があります。

l WITHセクションで複数の計算されたメンバを定義できます。

l 標準の次元に使用できる関数は、Aggregate()、Avg()、Max()、Median()、

Min()、Sum()、Count()で、TIME を含みます。TIME 次元で構築されるプロパ

SAP BW と Production Reporting 言語 147

Page 148: Hyperion SQR Production Reporting 開発者ガイド ボリューム …SQR Production Reporting Studio によるBAPI のレポート作成 ..... 129 SAP R/3 のProduction Reporting

ティのその他の関数は、Ytd()、Qtd()、Mtd()、Wtd()、OpeningPeriod()、

ClosingPeriod()、Periodstodate()、Parallelperiod()です。

l メンバ関数は、Ancestor()、Cousin()、Item()、Lag()、

Lead()、.CurrentMember、.FirstChild、.LastChild、.FirstSibling、.LastSibling、.N

extMember、.Parent、および.PrevMember です。

l セット関数は、Ancestors()、Ascendants()、BottomCount()、BottomPercent()、

BottomSum()、CrossJoin()、Descendants()、Except()、Filter()、TopCount()、

TopPercent()、TopSum()、Union()、Head()、Tail()、

Distinct()、.AllMembers、.Children、.Members、および.Siblings です。

l 開始と終了の中かっこを指定するには、実際のかっこの位置に^|および|^を使

用します。次に例を示します。

MEMBER 0APO_RTYPE.NEWAGGR ASAGGREGATE ( ^| "0APO_RTYPE.05","0APO_RTYPE.04" |^ )MEMBER 0D_VENDOR.Aggr AS 'AVG( ^| 0D_VENDOR.0000001000 , 0D_VENDOR.0000001001, 0D_VENDOR.0000001050 |^)'MEMBER 0CALMONTH.Agg AS'AGGREGATE( ^|0CALMONTH 0YEA_MON.1999 0CALYEAR.Children 0CALMONTH0YEA_MON.2001 0CALYEAR.Children|^ )'

l すべてのリテラル値(数値と文字列の両方)を一重引用符で囲む必要があり

ます。次に例を示します。

WITHMEMBER Measures.EMPLOYEECHANGE AS"(Measures.BCU2WEMLJL5ZK9N1F3ZRDUXS7 - (Measures.BCU2WEMLJL5ZK9N1F3ZRDUXS7, 0CALMONTH.LAG(‘12’)))"

例:

次の例では、実行時に、計算されたキー数値 PROFIT CHANGEが今月の利益から先

月の利益を引いて計算されます。

begin-select Measures.CKF_SI_PROFIT Measures.Profit Change FROM 0D_SD_C03/SAP_DEMO_ODBO WITH MEMBER Measures.Profit Change AS '((Measures.CKF_SI_PROFIT)-(Measures.CKF_SI_PROFIT, 0CALMONTH.PREVMEMBER) )'end-select

上記の要求の結果セットは、2001 年のすべての月を対象に、利益と前月に対する

利益の変化の両方を示します。

利益 利益の変化

JAN 2001 11.324.466.00* 11.324.466.00*

FEB 2001 7.767.949.00* -3.556.517.00*

148 Production Reporting DDO による SAP BW データソースへのアクセス

Page 149: Hyperion SQR Production Reporting 開発者ガイド ボリューム …SQR Production Reporting Studio によるBAPI のレポート作成 ..... 129 SAP R/3 のProduction Reporting

MARCH 2001 9.598.544.00* 1.830.595.00*

APRIL 2001 7.225.499.00* -2.373.045.00*

MAY 2001 9.216.444.00* 1.990.945.00*

JUNE 2001 12.050.631.00* 2.834.187.00*

JULY 2001 14,757,033.00* 2.706.402.00*

AUG 2001 558.144.00 MIX -14198889.00

SEP 2001 14,834.377.00* 14276233.00

OCT 2001 13,158.103.00* -1.676.274.00*

NOV 2001 17.673.019.00* 4.514.916.00*

DEC 2001 13.833.383.00* -3.839.636.00*

例:

次の例では、実行時に、計算されたキー数値 EMPLOYEECHANGE が、PrevMember

関数により今月の従業員数から先月の従業員数を引いて計算されます。

begin-select Measures.BCU2WEMLJL5ZK9N1F3ZRDUXS7, Measures.EMPLOYEECHANGE 0CALMONTH.MEMBERS FROM 0PA_C01/0PA_C01_Q024 WITH MEMBER Measures.EMPLOYEECHANGE AS '(Measures.BCU2WEMLJL5ZK9N1F3ZRDUXS7 - (Measures.BCU2WEMLJL5ZK9N1F3ZRDUXS7, 0CALMONTH.PREVMEMBER))'end-select

上記の要求の結果セットは、次のようになります。

全会計年度/月 従業員数 従業員の変化

JAN 2003 1,232 1,232

FEB 2003 1,232 0

MARCH 2003 1,238 6

APRIL 2003 1,239 1

MAY 2003 1,239 0

JUNE 2003 1,239 0

JULY 2003 1,239 0

AUG 2003 1,239 0

SEP 2003 1,239 0

OCT 2003 1,239 0

SAP BW と Production Reporting 言語 149

Page 150: Hyperion SQR Production Reporting 開発者ガイド ボリューム …SQR Production Reporting Studio によるBAPI のレポート作成 ..... 129 SAP R/3 のProduction Reporting

NOV 2003 1,239 0

DEC 2003 1,240 1

JAN 2004 1,243 3

FEB 2004 1,243 0

MARCH 2004 1,243 0

APRIL 2004 1,243 0

MAY 2004 1,247 4

JUNE 2004 1,247 0

JULY 2004 1,247 0

AUG 2004 1,247 0

SQR Production Reporting Studio から SAP BW データへのアクセス

SQR Production Reporting Studio を使用すると、SAP BW OLAP データウェアハウス

からデータを抽出し、そのデータでレポートを作成できます。

ä SAP BW OLAP データウェアハウスからのデータでレポートを作成するには、次の

手順に従います。

1 [スタート]、[プログラム]、[Oracle EPM System]、[Reporting and Analysis]、[Production

Reporting Studio]を選択して SQR Production Reporting Studio を起動します。

2 任意のタイプのレポートを選択し、[新規]をクリックして新しいデータ接続を作成

します。

3 データ接続ウィザードの 1 ページ目で、SAP BW データソースの名前を入力します。

4 ウィザードの 2 ページ目で[DDO]を選択して、データソースプロバイダを指定しま

す。

5 ウィザードの 3 ページ目で、SAP BW データソースを選択します。

6 ウィザードの 4 ページ目で、必要なログインパラメータを入力し、[Enable Properties

Attributes]を選択します。

このオプションは、有効な SAP BW データソースを選択した場合にのみ表示され

ます(手順 5 を参照)。

7 [完了]をクリックして、データ接続ウィザードを終了します。

8 SQR Production Reporting Studio クエリビルダを使用してクエリを作成します。

9 SQR Production Reporting Studio の[レイアウト]ウィンドウでレポートを作成します。

10 レポートを処理し、保存します。

150 Production Reporting DDO による SAP BW データソースへのアクセス

Page 151: Hyperion SQR Production Reporting 開発者ガイド ボリューム …SQR Production Reporting Studio によるBAPI のレポート作成 ..... 129 SAP R/3 のProduction Reporting

注:

SAP BW データによる Oracle's Hyperion® SQR® Production Reporting Studio のレポー

トの作成について詳しくは、『Hyperion SQR Production Reporting Studio User's

Guide』の「Creating SAP BW Reports」を参照してください。

SQR Production Reporting Studio から SAP BW データへのアクセス 151

Page 152: Hyperion SQR Production Reporting 開発者ガイド ボリューム …SQR Production Reporting Studio によるBAPI のレポート作成 ..... 129 SAP R/3 のProduction Reporting

152 Production Reporting DDO による SAP BW データソースへのアクセス

Page 153: Hyperion SQR Production Reporting 開発者ガイド ボリューム …SQR Production Reporting Studio によるBAPI のレポート作成 ..... 129 SAP R/3 のProduction Reporting

9Production Reporting DDOに

よるEssbaseキューブへのアク

セス

この章の内容

キューブの概要 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 153

キューブの表示 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 154

Production Reporting でのキューブコマンドの使用 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 155

レポートデータの表示 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 160

キューブへのアクセス:例. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 163

キューブの概要Essbase のキューブは、データを複数の視点で見るための、多次元データベースの

コンポーネントから構成されています。このコンポーネントは、以下の「ツリー

型の階層構造」(アウトライン)になっています。

l 次元:情報のカテゴリ。例えば、「場所」、「商品」、「支店」、「時間」など。

以下の Essbase 次元があります。

標準次元:データの構成の中心となる次元で、「製品群」や「部署」など、通

常、組織の構造に関連しています。

属性次元:標準次元のメンバをより詳細に分類および分析します。例えば、

同じ製品群のデータを、異なる視点で検討するのに使います。

l メンバ:次元に属する値。例えば、「場所」という次元には、日本、フラン

ス、東京、パリ、千代田区 1 丁目などのメンバを入れることができます。

l 世代:次元のメンバのレベルの集まり。世代は、世代 1 から開始し、それぞ

れの次元メンバに対してカウントダウンします。

l レベル:類似するタイプのメンバのグループ。例えば、日本とフランスは

「国」レベル、東京とパリは「市」レベル、千代田区 1 丁目は「住所」レベル

になります。レベルは、世代とは逆に一番下が 0 になり上に向かって数えま

す。

l 別名:オプションでメンバに付けたわかりやすい名前。別名テーブルに保存

されます。メンバ名がわかりづらい場合は、レポートを出力するときにメン

バ名の代わりに別名を使用できます。

l 測定:ファクトテーブルの列にある値の集まり。キューブを検索して取得し

ます。レポートに表示される数値データです。

図 10 に、キューブにある Location 次元メンバのフォルダツリーを示します。この

例では、Location が次元で、その下にある USA や France など、すべての項目が次

キューブの概要 153

Page 154: Hyperion SQR Production Reporting 開発者ガイド ボリューム …SQR Production Reporting Studio によるBAPI のレポート作成 ..... 129 SAP R/3 のProduction Reporting

元のメンバです。Location は第一世代、USA と France は第二世代、San Francisco

と Paris は第三世代、35 Main St.と 30 rue St. Jacques は第四世代です。レベルは、次

元の分岐を示し、世代と逆順になります。

図 10 Location 次元階層

キューブの表示Essbase キューブへアクセスするために Production Reporting プログラムを作成する

には、データベースで使用する次元、メンバ名、および階層を正しく指定する必

要があります。Production Reporting DDO Query Editor は Essbase ツリー構造および

メンバ名と別名を表示します。メンバの名前は[Subtype Information]列に、メン

バの別名は[名前]列に表示されます。

注意

Production Reporting DDO コードでメンバを指定する場合は、DDO Query Editor の

[Subtype Information]列に表示されたメンバ名を使用する必要があります。

図 11 に示すのは、Production Reporting DDO Query Editor に表示されるメンバ名と

別名のリストです。「Period」メンバの名前が「Year」なのに、別名は「Period」

である点に注意してください。例えば、Production Reporting DDO のコードでは、

DECLARE-CONNECTIONでメンバ名として「Year」を使用していても、別名パラメー

タを有効にしている場合はそのメンバの別名である「Period」がレポートに表示

されます。(161 ページの「別名」を参照)。

注:

メンバに別名が指定されていない場合は、そのメンバの名前が両方の列で使用さ

れます。図 11 でいうと、「Market」メンバがこれに当てはまります。Essbase 別名

テーブルで別名が指定されていないため、メンバ名「Market」が両方の列で使用

されています。

154 Production Reporting DDO による Essbase キューブへのアクセス

Page 155: Hyperion SQR Production Reporting 開発者ガイド ボリューム …SQR Production Reporting Studio によるBAPI のレポート作成 ..... 129 SAP R/3 のProduction Reporting

図 11 Production Reporting DDO Query Editor

注:

DDO Query Editor でデータベースの内容を表示するには、先にレジストリエディ

タでデータソース設定を追加する必要があります。89 ページの「データソースの

仕様」を参照してください。

ä Production Reporting DDO Query Editor を使用して次元とメンバを表示するには、

次の手順に従います。

1 [スタート]、[プログラム]、[Oracle EPM System]、[Reporting and Analysis]、[SQR Production

Reporting]、[DDO]、[Query Editor]を選択します。

2 [File]、[Open]を選択するか、ツールバーで[Open]ボタンをクリックします。

3 Registry フォルダ内のデータソースをハイライトし、[Open]をクリックします。

4 ユーザ名とパスワードを入力します。

階層を表示するには、Meta Data フォルダをダブルクリックする必要があります。

5 Production Reporting プログラムの[Subtype Information]列に表示された名前を確認しま

す。

Production Reporting でのキューブコマンドの使用以下の Production Reporting コマンドはキューブをアクセスします。

l SET-MEMBERS

l SET-GENERATIONS

l SET-LEVELS

これらのコマンドは、Production Reporting プログラムの DECLARE-CONNECTIONま

たは ALTER-CONNECTIONで使用できます。

次の項では、これらのコマンドについて説明します。この説明は、多次元データ

ベース内のメンバ階層を表す図 12 の Product、Year および Market の次元フォルダ

ツリーにアクセスするのに使用している同じコード例に基づいています。

Production Reporting でのキューブコマンドの使用 155

Page 156: Hyperion SQR Production Reporting 開発者ガイド ボリューム …SQR Production Reporting Studio によるBAPI のレポート作成 ..... 129 SAP R/3 のProduction Reporting

注:

ここで使用するサンプルデータは、Essbase OLAP サーバに付属しているデモアプ

リケーションの一部です。インストール手順については、Hyperion Essbase

Installation Notes を参照してください。

図 12 Product、Year および Market の次元フォルダツリー

SET-MEMBERS特定の次元階層を選択します。次元とメンバのアルファベット名をドットで区切

ることで、SET-MEMBERSを使用して 1 つか複数のデータ項目の特定情報を取得で

きます。

注:

プログラムで SET-MEMBERSを使用しない場合は、宣言された列内のすべての次元

が返されます。

156 Production Reporting DDO による Essbase キューブへのアクセス

Page 157: Hyperion SQR Production Reporting 開発者ガイド ボリューム …SQR Production Reporting Studio によるBAPI のレポート作成 ..... 129 SAP R/3 のProduction Reporting

プログラム ex25.sqr は、SET-MEMBERSを使用して、図 12 内の Product、Year およ

び Market の次元フォルダツリーの情報にアクセスします。

この例で、SET-MEMBERSは次のような行動を取ります。

l 階層 Audio で次元 Product のメンバセットを返します。

l 階層 Qtr1 で次元 Year のメンバセットを返します。

l 階層 West で次元 Market のメンバセットを返します。

プログラム ex25.sqrBegin-Setup Declare-Connection ESSConnection DSN=Essbase6 User='Oracle User' Password=dbadmin1 Parameters=member.alias=true; set-members=('Year','Qtr1','Product','Audio','Market','West') End-DeclareEnd-Setup Begin-Program print 'Quarter Product Region' (+2,1) print 'Total Expenses Cost of Goods' (0,40) do Read_Cubeend-program Begin-Procedure Read_Cube Begin-Execute Connection=ESSConnection schema='Demo' getdata='Basic'Begin-select loops=5000Year &year (+1,1)Product &prod (0,10)Market &mkt (0,20)Measures.Profit.Total_Expenses.Marketing &exp (0,40) edit $99,999,999.99Measures.Profit.Margin.Cost_of_Goods_Sold &cogs (0,60) edit $99,999,999.99From EssbaseEnd-select End-ExecuteEnd-Procedure

プログラム ex25.sqr に、別名「Q1」が名前「Qtr1」の代わりに出力されます(詳

しくは、161 ページの「別名」を参照してください)。

プログラム ex25.sqr の出力結果 Quarter Product Region Total Expenses Cost of Goods Q1 Audio West $ 1,465.00 $ 12,259.00

SET-GENERATIONSSET-GENERATIONSは、既に宣言されている次元の階層で、特定の点を指定しま

す。SET-GENERATIONSを使用すると、SET-MEMBERSで宣言された次元の正確な場

Production Reporting でのキューブコマンドの使用 157

Page 158: Hyperion SQR Production Reporting 開発者ガイド ボリューム …SQR Production Reporting Studio によるBAPI のレポート作成 ..... 129 SAP R/3 のProduction Reporting

所を設定できます。SET-GENERATIONSで定義された次元と階層は、リテラル値に

のみなることができます。

プログラム ex26.sqr は、SET-GENERATIONSを使用して、図 12 内の Product、Year

および Market の次元フォルダツリーの情報にアクセスします。この例では、プロ

グラム ex25.sqr がビルドされており、もっと詳しい情報を取得するために SET-

GENERATIONSが使用されています。

この例で、SET-GENERATIONSは次のような動作をします。

l 特定の世代の製品を要求します。

SET-MEMBERSによって範囲を Audio に限定し、SET-GENERATIONSによって

Audio 内の第三世代のすべてのメンバ(Stereo および Compact_Disc)を要求し

ます。

l 特定の世代の Market を要求します。

SET-MEMBERSによって範囲を West に限定し、SET-GENERATIONSによって West

内の第三世代のすべてのメンバ(San_Francisco、Seattle、Denver および

Los_Angeles)を要求します。

プログラム ex26.sqrBegin-Setup Declare-Connection ESSConnection DSN=Essbase6 User='Oracle User' Password=dbadmin1 Parameters=member.alias=true; set-members= ('Year','Qtr1','Product','Audio','Market','West') set-generations=('Product',3,'Market',3) End-DeclareEnd-Setup Begin-Program print 'Quarter Product Region' (+2,1) print 'Total Expenses Cost of Goods' (0,40) do Read_Cubeend-program Begin-Procedure Read_Cube Begin-Execute Connection=ESSConnection schema='Demo' getdata='Basic'Begin-select loops=5000Year &year (+1,1)Product &prod (0,10)Market &mkt (0,20)Measures.Profit.Total_Expenses.Marketing &exp (0,40) edit $99,999,999.99Measures.Profit.Margin.Cost_of_Goods_Sold &cogs (0,60) edit $99,999,999.99From EssbaseEnd-select End-ExecuteEnd-Procedure

158 Production Reporting DDO による Essbase キューブへのアクセス

Page 159: Hyperion SQR Production Reporting 開発者ガイド ボリューム …SQR Production Reporting Studio によるBAPI のレポート作成 ..... 129 SAP R/3 のProduction Reporting

「プログラム ex26.sqr の出力結果」で示すように、SET-GENERATIONSを追加する

と、SET-MEMBERSを単独で使用したときよりも大きなレポートが生成されます。

ただし、プログラム ex25.sqr の出力結果で示したレベルは除外されます。

プログラム ex26.sqr の出力結果 Quarter Product Region Total Expenses Cost of Goods Q1 Stereo San_Francisco $ 304.00 $ 2,246.00 Q1 Stereo Seattle $ 124.00 $ 1,356.00 Q1 Stereo Denver $ 130.00 $ 1,461.00 Q1 Stereo Los_Angeles $ 225.00 $ 1,747.00 Q1 Compact_Disc San_Francisco $ 155.00 $ 1,558.00 Q1 Compact_Disc Seattle $ 56.00 $ 1,258.00 Q1 Compact_Disc Denver $ 208.00 $ 1,249.00 Q1 Compact_Disc Los_Angeles $ 263.00 $ 1,384.00

SET-LEVELSSET-LEVELSは、既に宣言されている次元の次元階層を拡張します。SET-MEMBERS

で開始点を宣言したら、SET-LEVELSを使用して階層を下へ移動するレベルを指定

します。SET-LEVELSで定義する次元と階層は、l リテラル値だけです。

プログラム ex27.sqr は、SET-LEVELSを SET-MEMBERSと併用して、図 12 内の

Product、Year および Market の次元フォルダツリーの情報にアクセスします。

この例で、SET-LEVELSは次のような動作をします。

l 製品にレベルを追加します。

SET-MEMBERSによって開始点を Audio に設定し、SET-LEVELSによって Audio

(レベル 1)と次の下位レベル(Stereo と Compact_Disc)を要求します。

l Market にレベルを追加します。

SET-MEMBERSによって開始点を West(レベル 1)に設定し、SET-LEVELSに

よって West と次の下位レベル(San_Francisco、Seattle、Denver および

Los_Angeles)を要求します。

プログラム ex27.sqrBegin-Setup Declare-Connection ESSConnection DSN=Essbase6 User='Oracle User' Password=dbadmin1 Parameters=member.alias=true; set-members= ('Year','Qtr1','Product','Audio','Market','West') set-levels= ('product', 1,'market', 1) End-DeclareEnd-Setup Begin-Program print 'Quarter Product Region' (+2,1) print 'Total Expenses Cost of Goods' (0,40) do Read_Cubeend-program

Production Reporting でのキューブコマンドの使用 159

Page 160: Hyperion SQR Production Reporting 開発者ガイド ボリューム …SQR Production Reporting Studio によるBAPI のレポート作成 ..... 129 SAP R/3 のProduction Reporting

Begin-Procedure Read_Cube Begin-Execute Connection=ESSConnection schema='Demo' getdata='Basic'Begin-select loops=5000Year &year (+1,1)Product &prod (0,10)Market &mkt (0,20)Measures.Profit.Total_Expenses.Marketing &exp (0,40) edit $99,999,999.99Measures.Profit.Margin.Cost_of_Goods_Sold &cogs (0,60) edit $99,999,999.99From EssbaseEnd-select End-ExecuteEnd-Procedure

プログラム ex27.sqr の出力で示すように、SET-LEVELSを追加すると、SET-

GENERATIONSよりも大きなレポートが生成され、SET-MEMBERSで要求したレベル

が含まれます。

プログラム ex27.sqr の出力結果 Quarter Product Region Total Expenses Cost of Goods Q1 Audio West $ 1,465.00 $ 12,259.00 Q1 Audio San_Francisco $ 459.00 $ 3,804.00 Q1 Audio Seattle $ 180.00 $ 2,614.00 Q1 Audio Denver $ 338.00 $ 2,710.00 Q1 Audio Los_Angeles $ 488.00 $ 3,131.00 Q1 Stereo West $ 783.00 $ 6,810.00 Q1 Stereo San_Francisco $ 304.00 $ 2,246.00 Q1 Stereo Seattle $ 124.00 $ 1,356.00 Q1 Stereo Denver $ 130.00 $ 1,461.00 Q1 Stereo Los_Angeles $ 225.00 $ 1,747.00 Q1 Compact_Disc West $ 682.00 $ 5,449.00 Q1 Compact_Disc San_Francisco $ 155.00 $ 1,558.00 Q1 Compact_Disc Seattle $ 56.00 $ 1,258.00 Q1 Compact_Disc Denver $ 208.00 $ 1,249.00 Q1 Compact_Disc Los_Angeles $ 263.00 $ 1,384.00

レポートデータの表示アクセス先のデータおよび使用するコマンドを指定すると、レポートに情報が表

示されます。レポートのレイアウトについては、次の項で説明します。

l 測定値

l 別名

l 列順

測定値レポートに表示される数値データです。一般的な測定値には、売上、経費、支出、

生産高があります。測定値は、ユーザのキューブへの問い合わせに対してデータ

をすばやく取得できるように格納される集合体です。各測定値はキューブのファ

160 Production Reporting DDO による Essbase キューブへのアクセス

Page 161: Hyperion SQR Production Reporting 開発者ガイド ボリューム …SQR Production Reporting Studio によるBAPI のレポート作成 ..... 129 SAP R/3 のProduction Reporting

クトテーブルの列に格納されます。測定値は式内で組み合わされた複数の列を含

めることができます。例えば、測定値 Profit は、2 つの数値列 Sales と Cost の差異

を示しています。

測定値列を選択するフォーマットは「measure」+ドット(.)+「測定値名」です

(例:measure.profit)。このフォーマットは、データソースで測定値を宣言すると

きに使用される名前とは無関係に使用します。

プログラム ex30.sqr は、SET-MEMBERS、SET-GENERATIONS、SET-LEVELSのいずれ

にも含めることができず、BEGIN-SELECTセクションに書き込まれる測定値を表示

します。

別名別名はメンバに付けたオプションのわかりやすい名前です。別名テーブルに保存

されます。メンバ名がわかりづらい場合は、レポートを出力するときにメンバ名

の代わりに別名を使用できます。例えば、メンバ名が数字である場合に、別名を

Sales などの名詞にすることができます。出力でユーザ名または別名を使用するか

を指定するには、Production Reporting プログラムの setup セクションでパラメー

タを正しく使用します。

ä 別名を Production Reporting の出力で使用するには、Production Reporting プログラ

ムの setup セクションで次の行を記述します。

Parameters=member.alias=true;

このステートメントを記述すると、出力のとき、Production Reporting DDO Query

Editor の[名前]列に別名が表示されます(詳しくは、154 ページの「キューブの

表示」を参照してください)。

ä Production Reporting DDO の出力で名前を使用する場合は、Production Reporting の

プログラムに次のステートメントを記述しないでください。

Parameters=member.alias=true;

このステートメントを記述しない場合、出力のとき、Production Reporting DDO

Query Editor の[Subtype Information]列にメンバの名前が表示されます。(詳しく

は、154 ページの「キューブの表示」を参照してください)。

注:

出力時に別名を表示するかどうかに関係なく、Production Reporting プログラムの

SET-UPセクションでメンバを指定する場合は、メンバ名を使用する必要がありま

す。

列順BEGIN-SELECTセクションに示された次元列の出現順序によって、複数の行セット

クエリでデータが表示されるデータの順序が決まります。プログラム ex28.sqr の

例では、Year、Market および Product の Total_Expensesおよび

Cost_of_Goods_Soldを示しています。

レポートデータの表示 161

Page 162: Hyperion SQR Production Reporting 開発者ガイド ボリューム …SQR Production Reporting Studio によるBAPI のレポート作成 ..... 129 SAP R/3 のProduction Reporting

プログラム ex28.sqrBegin-Setup Declare-Connection ESSConnection DSN=Essbase6 User='Oracle User' Password=dbadmin1 Parameters=member.alias=true; set-members=('Year','Qtr1','Market','West') set-generations=('Year', 2,'Product',1) set-levels= ('Year',1,'Product', 3) End-DeclareEnd-Setup Begin-Program print 'Quarter Product Region' (+2,1) print 'Total Expenses Cost of Goods' (0,40) do Read_Cubeend-program Begin-Procedure Read_Cube Begin-Execute Connection=ESSConnection schema='Demo' getdata='Basic'Begin-select loops=5000Year &year (+1,1)Market &mkt (0,25)Product &prod (0,10)Measures.Profit.Total_Expenses.Marketing &exp (0,45) edit $99,999,999.99Measures.Profit.Margin.Cost_of_Goods_Sold &cogs (0,65) edit $99,999,999.99From EssbaseEnd-select End-ExecuteEnd-Procedure

プログラム ex29.sqr の出力では、「Year」によって行がソートされています。 初

にすべての Q1 があり、次に Jan、Feb、Mar の各行が続きます。Quarter 列を基準

に行の順序が決められるのは、BEGIN-SELECTセクションの 初に Year がリスト

されているからです。

プログラム ex29.sqr の出力結果 Quarter Product Region Total Expenses Cost of Goods Q1 Stereo West $ 783.00 $ 6,810.00 Q1 Compact_Disc West $ 682.00 $ 5,449.00 Q1 Television West $ 1,669.00 $ 6,676.00 Q1 VCR West $ 438.00 $ 5,408.00 Q1 Camera West $ 1,051.00 $ 3,160.00 Jan Stereo West $ 278.00 $ 2,385.00 Jan Compact_Disc West $ 231.00 $ 1,847.00 Jan Television West $ 527.00 $ 2,451.00 Jan VCR West $ 145.00 $ 1,833.00 Jan Camera West $ 354.00 $ 1,146.00 Feb Stereo West $ 260.00 $ 2,181.00 Feb Compact_Disc West $ 220.00 $ 1,768.00 Feb Television West $ 628.00 $ 2,102.00 Feb VCR West $ 146.00 $ 1,812.00 Feb Camera West $ 360.00 $ 999.00 Mar Stereo West $ 245.00 $ 2,244.00

162 Production Reporting DDO による Essbase キューブへのアクセス

Page 163: Hyperion SQR Production Reporting 開発者ガイド ボリューム …SQR Production Reporting Studio によるBAPI のレポート作成 ..... 129 SAP R/3 のProduction Reporting

Mar Compact_Disc West $ 231.00 $ 1,834.00 Mar Television West $ 514.00 $ 2,123.00 Mar VCR West $ 147.00 $ 1,763.00 Mar Camera West $ 337.00 $ 1,015.00

出力の外見を変更するには、BEGIN-SELECTセクションの次元の順序を変えます。

プログラム ex29.sqr で示すように、次元 Product、Year および Market の順序を逆

にすると、列の順序が異なるレポートが生成されます。

プログラム ex29.sqrBegin-select loops=5000Product &prod (+1,10)Market &mkt (0,25)Year &year (0,1)Measures.Profit.Total_Expenses.Marketing &exp (0,45) edit $99,999,999.99Measures.Profit.Margin.Cost_of_Goods_Sold &cogs (0,65) edit $99,999,999.99From EssbaseEnd-select

プログラム ex29.sqr の出力結果では、Product によって行がソートされています。

Stereo 行が 初で、次に Compact_Disc、Television、VCR および Camera の行が続

きます。Product 列を基準に行の順序が決められるのは、BEGIN-SELECTセクショ

ンの 初に Product がリストされているからです。

プログラム ex29.sqr の出力結果 Quarter Product Region Total Expenses Cost of Goods Q1 Stereo West $ 783.00 $ 6,810.00 Jan Stereo West $ 278.00 $ 2,385.00 Feb Stereo West $ 260.00 $ 2,181.00 Mar Stereo West $ 245.00 $ 2,244.00 Q1 Compact_Disc West $ 682.00 $ 5,449.00 Jan Compact_Disc West $ 231.00 $ 1,847.00 Feb Compact_Disc West $ 220.00 $ 1,768.00 Mar Compact_Disc West $ 231.00 $ 1,834.00 Q1 Television West $ 1,669.00 $ 6,676.00 Jan Television West $ 527.00 $ 2,451.00 Feb Television West $ 628.00 $ 2,102.00 Mar Television West $ 514.00 $ 2,123.00 Q1 VCR West $ 438.00 $ 5,408.00 Jan VCR West $ 145.00 $ 1,833.00 Feb VCR West $ 146.00 $ 1,812.00 Mar VCR West $ 147.00 $ 1,763.00 Q1 Camera West $ 1,051.00 $ 3,160.00 Jan Camera West $ 354.00 $ 1,146.00 Feb Camera West $ 360.00 $ 999.00 Mar Camera West $ 337.00 $ 1,015.00

キューブへのアクセス:例この項では、キューブの例を示し、キューブへのアクセスに必要な Production

Reporting コードについて説明します。この項では次の情報を扱います。

l キューブ

キューブへのアクセス:例 163

Page 164: Hyperion SQR Production Reporting 開発者ガイド ボリューム …SQR Production Reporting Studio によるBAPI のレポート作成 ..... 129 SAP R/3 のProduction Reporting

l Production Reporting キューブへのアクセスに必要なコード

l コードの説明

注:

Essbase では、DDO で生成されるレポートスクリプト内に、Essbase キューブか

らデータにアクセスするための DECIMAL 関数が含まれています。デフォルト

の小数点以下の桁数は 6 です。

デフォルトの値を変更するには、次の手順に従います。

1. com_sqribe_essacc_EssDataSource_Properties ファイルを開きます。

2. decimal.points=6エントリを任意の桁数に変更します。

3. 変更を保存します。

キューブ図 13 は、3 次元のキューブの例で、Product(Y 軸)、Year(X軸)および Market

(Z 軸)を示しています。この例で示しているのは、キューブ全体の一部だけで

す。例えば、Year 次元には 4 つの四半期がありますが、ここでは 初の 3 つまで

しか表示されていません。また、Location や Salesperson などの次元もこのキュー

ブに追加できます。

キューブの各セルが、データベース内のデータ値を表しています。例えば、1 つ

のセルは、Qtr1 の Western 市場の Audio 製品の値を保持しています。セルで分け

られているだけでなく、キューブをさらに小さなセグメントに分けて、 初の四

半期の Western 地域の全製品を示すこともできます。

図 13 3 次元のデータキューブ

図 14 は、図 13 のキューブの次元とレベルを示したものです。Audio および Visual

は Product 次元のメンバ、Qtr1、Qtr2、Qtr3 および Qtr4 は Year 次元のメンバ、

East、West および South は Market 次元のメンバです。各次元はキューブ軸に対応

しています。

164 Production Reporting DDO による Essbase キューブへのアクセス

Page 165: Hyperion SQR Production Reporting 開発者ガイド ボリューム …SQR Production Reporting Studio によるBAPI のレポート作成 ..... 129 SAP R/3 のProduction Reporting

図 14 データキューブの階層

Production Reporting キューブへのアクセスに必要なコードこれまで説明してきた Essbase キューブには、プログラム ex30.sqr の Production

Reporting コードによってアクセスします。コードでは、次の 3 つのコマンドを使

用してキューブへアクセスします。SET-MEMBERS、SET-GENERATIONS、および

SET-LEVELS です。

プログラム ex30.sqrBegin-Setup Declare-Connection ESSConnection DSN=Essbase6 User='Oracle User' Password=dbadmin1 Parameters=member.alias=true; set-members=('Year','Qtr1','Market','West') set-generations=('Year', 2,'Product',1) set-levels= ('Year',1,'Product', 3) End-DeclareEnd-Setup Begin-Program print 'Quarter Product Region' (+2,1) print 'Total Expenses Cost of Goods' (0,40) do Read_Cubeend-program Begin-Procedure Read_Cube Begin-Execute Connection=ESSConnection schema='Demo' getdata='Basic'Begin-select loops=5000Product &prod (+1,10)

キューブへのアクセス:例 165

Page 166: Hyperion SQR Production Reporting 開発者ガイド ボリューム …SQR Production Reporting Studio によるBAPI のレポート作成 ..... 129 SAP R/3 のProduction Reporting

Market &mkt (0,25)Year &year (0,1)Measures.Profit.Total_Expenses.Marketing &exp (0,45) edit $99,999,999.99Measures.Profit.Margin.Cost_of_Goods_Sold &cogs (0,65) edit $99,999,999.99From EssbaseEnd-select End-ExecuteEnd-Procedure

注:

出力時の列と行の順序は、BEGIN-SELECTセクションにリストされた次元の順序に

基づいて表示されます。プログラム ex30.sqr 内の列は、Product ごと、Market ごと

の Year 順でリストされます。出力の外見を変更するには、BEGIN-SELECTセクショ

ンの次元の順序を変えます。

プログラム ex30.sqr の出力結果 Quarter Product Region Total Expenses Cost of Goods Q1 Stereo West $ 783.00 $ 6,810.00 Jan Stereo West $ 278.00 $ 2,385.00 Feb Stereo West $ 260.00 $ 2,181.00 Mar Stereo West $ 245.00 $ 2,244.00 Q1 Compact_Disc West $ 682.00 $ 5,449.00 Jan Compact_Disc West $ 231.00 $ 1,847.00 Feb Compact_Disc West $ 220.00 $ 1,768.00 Mar Compact_Disc West $ 231.00 $ 1,834.00 Q1 Television West $ 1,669.00 $ 6,676.00 Jan Television West $ 527.00 $ 2,451.00 Feb Television West $ 628.00 $ 2,102.00 Mar Television West $ 514.00 $ 2,123.00 Q1 VCR West $ 438.00 $ 5,408.00 Jan VCR West $ 145.00 $ 1,833.00 Feb VCR West $ 146.00 $ 1,812.00 Mar VCR West $ 147.00 $ 1,763.00 Q1 Camera West $ 1,051.00 $ 3,160.00 Jan Camera West $ 354.00 $ 1,146.00 Feb Camera West $ 360.00 $ 999.00 Mar Camera West $ 337.00 $ 1,015.00

コードの説明表 20 に、Essbase キューブの例へのアクセスに必要なコードを示します。

表 20 コードの説明

コード 説明

Begin-Setup

Declare-Connection ESSConnection

DSN=Essbase6

User='Oracle User'

Password=dbadmin1

Production Reporting プログラムの setup セクショ

ンです。

l Declare-Connection:ユーザが定義した名

前で、キューブへの接続を表します。この例では、EssConnectionを使用しました。

l DSN:Essbase 接続です。DDO レジストリに

DDO レジストリ名を入力します。

166 Production Reporting DDO による Essbase キューブへのアクセス

Page 167: Hyperion SQR Production Reporting 開発者ガイド ボリューム …SQR Production Reporting Studio によるBAPI のレポート作成 ..... 129 SAP R/3 のProduction Reporting

コード 説明

Parameters=member.alias=true;

set-members= ('Year','Qtr1','Market','West')

set-generations = ('Year', 2,'Product',1)

set-levels= ('Year',1,'Product', 3)

End-Declare

End-Setup

Essbase の場合、データベース名を DSN で入

力します。

l User:Essbase 接続用のユーザ名です。

l Password:ユーザ用のパスワードです。

また、コマンドラインから次の構文を使用して接続することもできます。

SQR [program] DSN/[username]/[password]

l Parameters:オプションのパラメータで

す。別名テーブルを使用するかどうかを宣言します。

このステートメントを記述すると、出力時に名前の代わりに別名が表示されます。

l set-members:特定の階層レベルの次元名

を指定します。

l set-levels:既に宣言されている次元の次

元階層を拡張します。

l set-generations:set-membersで宣言さ

れている特定の階層レベルを上書きします。

Begin-Program

print 'Quarter Product Region' (+2,1)

print 'Total Expenses Cost of Goods' (0,40)

do Read_Cube

end-program

end-program

Production Reporting プログラムのプログラムセク

ションです。

l print:列見出しを出力します。

この例では、四半期、製品、区域、総費用および原価になります。

l do Read_Cube:Production Reporting にキュー

ブを読み込ませます。

Begin-Procedure Read_Cube

Begin-Execute

Connection=ESSConnection

schema='Demo'

getdata='Basic'

新しい検索またはプロシージャの実行を開始します。

l Connection:Declare-Connection内の情

報を指します。

l schema:キューブの名前です。

l getdata:キューブ内のテーブル名です。

正常に接続するには、Connection、schemaおよび getdataを記述する必要があります。

Begin-select loops=5000

Product &prod (+1,10)

Market &mkt (0,25)

Year &year (0,1)

SELECT パラグラフを開始します。

l loops=5000:取得する行数を指定するため

のオプションの引数です。指定された行数の処理が終了すると、SELECTループは終了

します。

l &prod、&mktおよび&year:読み取り専用の

列変数です。列変数に既存の値を使用することはできますが、新しい値を割り当てることはできません(詳しくは、『ProductionReporting 開発者ガイド』ボリューム 1 の「列

変数」を参照してください)。

キューブへのアクセス:例 167

Page 168: Hyperion SQR Production Reporting 開発者ガイド ボリューム …SQR Production Reporting Studio によるBAPI のレポート作成 ..... 129 SAP R/3 のProduction Reporting

コード 説明

Measures.Profit.Total_Expenses.Marketing &exp (0,45) edit $99,999,999.99

Measures.Profit.Margin.Cost_of_Goods_Sold &cogs (0,65) edit $99,999,999.99

数値データを取得するために必要です。

測定値は階層構造になっており、各ドットによって他のレベルやメンバが定義されます。

この例の測定値は Profit、Total_Expenses、Marketing、MarginおよびCost_of_Goods_Soldになります。

From Essbase From:Production Reporting で必要です。

Essbase:select ステートメントのデータソー

スを示すオプションです。

End-Select Begin-Selectを完了します。

End-Execute Begin-Executeを完了します。

End-Procedure Begin-Procedureを完了します。

168 Production Reporting DDO による Essbase キューブへのアクセス

Page 169: Hyperion SQR Production Reporting 開発者ガイド ボリューム …SQR Production Reporting Studio によるBAPI のレポート作成 ..... 129 SAP R/3 のProduction Reporting

10Production Reporting DDOに

よるMSOLAPキューブへのア

クセス

この章の内容

キューブの概要 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 169

キューブの表示 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 170

Production Reporting でのキューブコマンドの使用 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 171

レポートデータの表示 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 177

キューブへのアクセス:例. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 180

注:

MSOLAP ドライバの設定については、第 3 章「Production Reporting DDO ドライバ

の作成」を参照してください。ドライバは MSOLAP に付属しているサンプルキュー

ブでテストできます。

キューブの概要キューブは、データを複数の視点で見るための、多次元データベースのコンポー

ネントから構成されています。このコンポーネントは、以下の「ツリー型の階層

構造」(アウトライン)になっています。

l 次元:情報のカテゴリ。例えば、「場所」、「商品」、「支店」、「時間」など。

l メンバ:次元に属する値。例えば、「場所」という次元には、日本、フラン

ス、東京、パリ、千代田区 1 丁目などのメンバを入れることができます。

l 世代:次元のメンバのレベルの集まり。世代は、世代 0 から開始し、それぞ

れの次元メンバに対してカウントダウンします。

l レベル:類似するタイプのメンバのグループ。例えば、日本とフランスは

「国」レベル、東京とパリは「市」レベル、千代田区 1 丁目は「住所」レベル

になります。

l 別名:オプションでメンバに付けたわかりやすい名前。別名テーブルに保存

されます。メンバ名がわかりづらい場合は、レポートを出力するときにメン

バ名の代わりに別名を使用できます。

l 測定:ファクトテーブルの列にある値の集まり。キューブを検索して取得し

ます。レポートに表示される数値データです。

図 15 に、キューブにある Location 次元メンバのフォルダツリーを示します。この

例では、Location が次元で、その下にある USA や France など、すべての項目が次

元のメンバです。Location は第 0 世代、USA と France は第一世代、San Francisco

キューブの概要 169

Page 170: Hyperion SQR Production Reporting 開発者ガイド ボリューム …SQR Production Reporting Studio によるBAPI のレポート作成 ..... 129 SAP R/3 のProduction Reporting

と Paris は第二世代、35 Main St.と 30 rue St. Jacques は第三世代です。レベルは、次

元の分岐を示し、世代と逆順になります。

図 15 Location 次元階層

キューブの表示MSOLAP キューブへアクセスするために Production Reporting プログラムを作成す

るには、データベースで使用する次元、メンバ名、および階層を正しく指定する

必要があります。Production Reporting DDO Query Editor は MSOLAP ツリー構造お

よびメンバ名と別名を表示します。メンバの名前は[Subtype Information]列に、

メンバの別名は[名前]列に表示されます。

注意

Production Reporting コードでメンバを指定する場合は、DDO Query Editor の

[Subtype Information]列に表示されたメンバ名を使用する必要があります。

図 16 に示すのは、Production Reporting DDO Query Editor に表示されるメンバ名と

別名のリストです。「Drink」メンバの名前が「Product.All Product.Drink」なのに、

別名は「Drink」である点に注意してください。例えば、Production Reporting の

コードでは、DECLARE-CONNECTIONでメンバ名として「Product.All Product.Drink」

を使用していても、別名パラメータを有効にしている場合は、そのメンバの別名

ある「Drink」がレポートに表示されます(177 ページの「別名」を参照)。

注:

メンバに別名が指定されていない場合は、MSOSLAP の別名テーブルに別名が指定

されないため、そのメンバの名前が両方の列で使用されます。

170 Production Reporting DDO による MSOLAP キューブへのアクセス

Page 171: Hyperion SQR Production Reporting 開発者ガイド ボリューム …SQR Production Reporting Studio によるBAPI のレポート作成 ..... 129 SAP R/3 のProduction Reporting

図 16 Production Reporting DDO Query Editor

注:

DDO Query Editor でデータベースの内容を表示するには、先にレジストリエディ

タでデータソース設定を追加する必要があります。89 ページの「データソースの

仕様」を参照してください。

ä Production Reporting DDO Query Editor を使用して次元とメンバを表示するには、

次の手順に従います。

1 [スタート]、[プログラム]、[Oracle EPM System]、[Reporting and Analysis]、[Production

Reporting DDO]、[Query Editor]を選択します。

2 [File]、[Open]を選択するか、ツールバーで[Open]ボタンをクリックします。

3 Registry フォルダ内のデータソースをハイライトし、[Open]をクリックします。

4 ユーザ名とパスワードを入力します。

階層を表示するには、Meta Data フォルダをダブルクリックする必要があります。

5 Production Reporting プログラムの[Subtype Information]列に表示された名前を確認しま

す。

Production Reporting でのキューブコマンドの使用以下の Production Reporting コマンドはキューブをアクセスします。

l SET-MEMBERS

l SET-GENERATIONS

l SET-LEVELS

これらのコマンドは、Production Reporting プログラムの DECLARE-CONNECTIONま

たは ALTER-CONNECTIONで使用できます。

次の項では、これらのコマンドについて説明します。この説明は、多次元データ

ベース内のメンバ階層を表す図 17 の Product 次元フォルダツリーにアクセスする

のに使用している同じコード例に基づいています。

注:

ここで使用するサンプルデータは、MSOLAP サーバに付属しているデモアプリケー

ションの一部です。

Production Reporting でのキューブコマンドの使用 171

Page 172: Hyperion SQR Production Reporting 開発者ガイド ボリューム …SQR Production Reporting Studio によるBAPI のレポート作成 ..... 129 SAP R/3 のProduction Reporting

図 17 Product 次元フォルダツリー

SET-MEMBERS特定の次元階層を選択します。次元とメンバのアルファベット名をドットで区切

ることで、SET-MEMBERSを使用して 1 つか複数のデータ項目の特定情報を取得で

きます。

注:

プログラムで SET-MEMBERSを使用しない場合は、宣言された列内のすべての次元

が返されます。

プログラム ex30.sqr は、SET-MEMBERSを使用して、図 17 内の Production 次元フォ

ルダツリーの情報にアクセスします。

この例で、SET-MEMBERSは次のような行動を取ります。

l 特定の階層の「All Products」、特定のレベルの「Drink」、特定のレベルの

「Alcoholic Beverages」、および特定のレベルの「Beer and Wine」で、「Product」

次元のメンバセットを返します。

l 特定の階層の「1997」、特定のレベル「Q1」で、次元「Time」のメンバセット

を返します。

172 Production Reporting DDO による MSOLAP キューブへのアクセス

Page 173: Hyperion SQR Production Reporting 開発者ガイド ボリューム …SQR Production Reporting Studio によるBAPI のレポート作成 ..... 129 SAP R/3 のProduction Reporting

プログラム ex30.sqrBegin-Setup Declare-Connection MSOLAP dsn=MSOLAP set-members=('product','all products.drink.alcoholic beverages.beer and wine','time','1997.Q1' ) End-DeclareEnd-SetupBegin-Programprint 'Quarter' (+2,1)print 'Product' (0,15)print 'Profit' (0,48)print 'Sales' (0,64)print 'Cost' (0,75) do Read_Cubeend-program Begin-Procedure Read_CubeBegin-Execute Connection=MSOLAP Schema='FoodMart 2000' GetData='Sales'Begin-select loops=5000Time &time (+2,1)Product &prod (0,15)Measures.Profit &prof (0,45) edit 999999.99"Measures.Store Cost" &cog (0,70) edit 999999.99"Measures.Store Sales" &sale (0,60) edit 999999.99From Rowsets=(1)End-selectEnd-ExecuteEnd-Procedure

プログラム ex30.sqr によって次のように出力されます。

プログラム ex30.sqr の出力結果Quarter Product Profit Sales CostQ1 Beer and Wine 1858.19 3082.00 1223.81

SET-GENERATIONSSET-GENERATIONSは、既に宣言されている次元の階層で、特定の点を指定しま

す。SET-GENERATIONSを使用すると、SET-MEMBERSで宣言された次元の正確な場

所を設定できます。SET-GENERATIONSで定義された次元と階層は、リテラル値に

のみなることができます。

プログラム ex31.sqr は、SET-GENERATIONSを使用して、図 17 内の Production 次元

フォルダツリーの情報にアクセスします。この例は、プログラム ex30.sqr でビル

ドされており、SET-GENERATIONSを使用して、レポートの出力範囲が「Beer and

Wine」から「Beer」と「Wine」に分けて表示されるようにしています。

この例で、SET-GENERATIONSは次のような動作をします。

l 特定の世代の製品を要求します。

Production Reporting でのキューブコマンドの使用 173

Page 174: Hyperion SQR Production Reporting 開発者ガイド ボリューム …SQR Production Reporting Studio によるBAPI のレポート作成 ..... 129 SAP R/3 のProduction Reporting

SET-MEMBERSによって Product の階層を「all products.drink.alcoholic

beverages.beer and wine」に限定し、SET-GENERATIONSによって「Beer and

Wine」(Beer と Wine は個別に表示される)内の第五世代のメンバをすべて要

求します。

l 「Time」次元階層の第二世代に当たるメンバセットを返します。つまり、

「Time」階層の「1997.Q1」で、すべての「Q1」のメンバ(第二世代)を返し

ます。

プログラム ex31.sqrBegin-Setup Declare-Connection MSOLAP dsn=MSOLAP set-members=('product','all products.drink.alcoholic beverages.beer and wine','time','1997.Q1' ) set-generations= ('time',2,'product', 5) End-DeclareEnd-SetupBegin-Programprint 'Quarter' (+2,1)print 'Product' (0,15)print 'Profit' (0,48)print 'Sales' (0,64)print 'Cost' (0,75) do Read_Cubeend-program Begin-Procedure Read_CubeBegin-Execute Connection=MSOLAP Schema='FoodMart 2000' GetData='Sales'Begin-select loops=5000Time &time (+2,1)Product &prod (,15)Measures.Profit &prof (0,45) edit 999999.99"Measures.Store Cost" &cog (0,70) edit 999999.99"Measures.Store Sales" &sale (0,60) edit 999999.99From Rowsets=(1)End-selectEnd-ExecuteEnd-Procedure

プログラム ex31.sqr の SET-GENERATIONSコマンドにより、次の結果が返されま

す。

プログラム ex31.sqr の出力結果Quarter Product Profit Sales CostQ1 Beer 439.67 722.99 283.32Q1 Wine 1418.53 2359.01 940.48

174 Production Reporting DDO による MSOLAP キューブへのアクセス

Page 175: Hyperion SQR Production Reporting 開発者ガイド ボリューム …SQR Production Reporting Studio によるBAPI のレポート作成 ..... 129 SAP R/3 のProduction Reporting

SET-LEVELSSET-LEVELSは、既に宣言されている次元の次元階層を拡張します。SET-MEMBERS

で開始点を宣言したら、SET-LEVELSを使用して階層を下へ移動するレベルを指定

します。SET-LEVELSで定義する次元と階層は、l リテラル値だけです。

プログラム ex32.sqr は、SET-LEVELSを SET-MEMBERSと併用して、図 17 内の

Production 次元フォルダツリーの情報にアクセスします。

この例で、SET-LEVELSは次のような動作をします。

l 製品にレベルを追加します。

SET-MEMBERSによって開始点を「Beer and Wine」に設定し、SET-LEVELSに

よって「Beer」と「Wine」のリスト(レベル 2)および次の下位レベル

(Good、Pearl、Portermouth、Top Measure および Walrus)をそれぞれ要求しま

す。

l Time にレベルを追加します。

SET-MEMBERSによって開始点を「Q1」(レベル 1)に設定し、SET-LEVELSに

よって「Q1」と次の下位レベル(1、2、および 3)を要求します。

プログラム ex32.sqrBegin-Setup Declare-Connection MSOLAP dsn=MSOLAP set-members=('product','all products.drink.alcoholic beverages.beer and wine','time','1997.Q1' ) set-levels=('time', 1,'product', 2) End-DeclareEnd-Setup Begin-Programprint 'Quarter' (+2,1)print 'Product' (0,15)print 'Profit' (0,48)print 'Sales' (0,64)print 'Cost' (0,75)do Read_Cubeend-program Begin-Procedure Read_CubeBegin-Execute Connection=MSOLAP Schema='FoodMart 2000' GetData='Sales'Begin-select loops=5000Time &time (+2,1)Product &prod (0,15)Measures.Profit &prof (0,45) edit 999999.99"Measures.Store Cost" &cog (0,70) edit 999999.99"Measures.Store Sales" &sale (0,60) edit 999999.99From Rowsets=(1)End-selectEnd-ExecuteEnd-Procedure

Production Reporting でのキューブコマンドの使用 175

Page 176: Hyperion SQR Production Reporting 開発者ガイド ボリューム …SQR Production Reporting Studio によるBAPI のレポート作成 ..... 129 SAP R/3 のProduction Reporting

プログラム ex32.sqr で示すように、SET-LEVELSを追加すると、SET-MEMBERSを単

独で使用したときよりも大きなレポートが生成されます。

プログラム ex32.sqr の出力結果Quarter Product Profit Sales CostQ1 Beer and Wine 1858.19 3082.00 1223.811 Beer and Wine 592.31 981.88 389.572 Beer and Wine 553.40 919.27 365.873 Beer and Wine 712.48 1180.85 468.37Q1 Beer 439.67 722.99 283.321 Beer 132.59 219.11 86.522 Beer 138.25 229.08 90.833 Beer 168.82 274.80 105.98Q1 Wine 1418.53 2359.01 940.481 Wine 459.72 762.77 303.052 Wine 415.14 690.19 275.053 Wine 543.66 906.05 362.39Q1 Good 54.51 89.08 34.571 Good 21.38 33.64 12.262 Good 15.61 27.16 11.553 Good 17.51 28.28 10.77Q1 Pearl 78.40 130.39 51.991 Pearl 25.55 44.44 18.892 Pearl 26.88 43.45 16.573 Pearl 25.97 42.50 16.53Q1 Portsmouth 114.59 182.82 68.231 Portsmouth 35.02 56.85 21.832 Portsmouth 32.50 52.98 20.483 Portsmouth 47.07 72.99 25.92Q1 Top Measure 39.89 68.42 28.531 Top Measure 12.43 21.66 9.232 Top Measure 12.74 22.28 9.543 Top Measure 14.73 24.48 9.75Q1 Walrus 152.29 252.28 100.001 Walrus 38.22 62.52 24.302 Walrus 50.52 83.21 32.693 Walrus 63.54 106.55 43.01Q1 Good 277.60 456.28 178.681 Good 95.17 156.23 61.062 Good 70.06 116.43 46.373 Good 112.36 183.62 71.26Q1 Pearl 251.82 422.27 170.451 Pearl 84.69 143.66 58.982 Pearl 105.90 176.38 70.483 Pearl 61.23 102.23 41.00Q1 Portsmouth 342.06 571.62 229.561 Portsmouth 94.47 155.15 60.682 Portsmouth 85.34 144.29 58.953 Portsmouth 162.25 272.18 109.93Q1 Top Measure 235.53 391.27 155.741 Top Measure 93.79 155.60 61.812 Top Measure 66.78 109.40 42.623 Top Measure 74.95 126.27 51.32Q1 Walrus 311.52 517.57 206.051 Walrus 91.60 152.13 60.532 Walrus 87.06 143.69 56.633 Walrus 132.86 221.75 88.89

176 Production Reporting DDO による MSOLAP キューブへのアクセス

Page 177: Hyperion SQR Production Reporting 開発者ガイド ボリューム …SQR Production Reporting Studio によるBAPI のレポート作成 ..... 129 SAP R/3 のProduction Reporting

レポートデータの表示アクセス先のデータおよび使用するコマンドを指定すると、レポートに情報が表

示されます。レポートのレイアウトについては、次の項で説明します。

l 測定値

l 別名

l 列順

測定値レポートに表示される数値データです。一般的な測定値には、売上、経費、支出、

生産高があります。測定値は、ユーザのキューブへの問い合わせに対してデータ

をすばやく取得できるように格納される集合体です。各測定値はキューブのファ

クトテーブルの列に格納されます。測定値は式内で組み合わされた複数の列を含

めることができます。例えば、測定値 Profit は、2 つの数値列 Sales と Cost の差異

を示しています。

測定値列を選択するフォーマットは「measure」+ドット(.)+「測定値名」です

(例:measure.profit)。このフォーマットは、データソースで測定値を宣言すると

きに使用される名前とは無関係に使用します。

プログラム ex30.sqr は、SET-MEMBERS、SET-GENERATIONS、SET-LEVELSのいずれ

にも含めることができず、BEGIN-SELECTセクションに書き込まれる測定値を表示

します。

別名別名はメンバに付けたオプションのわかりやすい名前です。別名テーブルに保存

されます。メンバ名がわかりづらい場合は、レポートを出力するときにメンバ名

の代わりに別名を使用できます。例えば、メンバ名が数字である場合に、別名を

Sales などの名詞にすることができます。出力でユーザ名または別名を使用するか

を指定するには、Production Reporting プログラムの setup セクションでパラメー

タを正しく使用します。

ä 別名を Production Reporting の出力で使用するには、Production Reporting プログラ

ムの setup セクションで次の行を記述します。

Parameters=member.alias=true;

このステートメントを記述すると、出力のとき、Production Reporting DDO Query

Editor の[名前]列に別名が表示されます(詳しくは、170 ページの「キューブの

表示」を参照してください)。

ä Production Reporting の出力で名前を使用する場合は、Production Reporting のプロ

グラムに次のステートメントを記述しないでください。

Parameters=member.alias=true;

レポートデータの表示 177

Page 178: Hyperion SQR Production Reporting 開発者ガイド ボリューム …SQR Production Reporting Studio によるBAPI のレポート作成 ..... 129 SAP R/3 のProduction Reporting

このステートメントを記述しない場合、出力のとき、Production Reporting DDO

Query Editor の[Subtype Information]列にメンバの名前が表示されます。(詳しく

は、170 ページの「キューブの表示」を参照してください)。

注:

出力時に別名を表示するかどうかに関係なく、Production Reporting プログラムの

SET-UPセクションでメンバを指定する場合は、メンバ名を使用する必要がありま

す。

列順BEGIN-SELECTセクションに示された次元列の出現順序によって、複数の行セット

クエリでデータが表示されるデータの順序が決まります。プログラム ex33.sqr は、

選択した四半期と製品の Profit、Sales、および Costのレポートを示していま

す。

プログラム ex33.sqrBegin-Setup Declare-Connection MSOLAP dsn=MSOLAP set-members=('product','all products.drink.alcoholic beverages','time','1997.Q1' ) set-levels= ('time', 1,'product', 2) set-generations= ('time',2,'product', 3) End-DeclareEnd-Setup Begin-Programprint 'Quarter' (+2,1)print 'Product' (0,15)print 'Profit' (0,48)print 'Sales' (0,64)print 'Cost' (0,75)print '' (+1,1)do Read_Cubeend-program Begin-Procedure Read_CubeBegin-Execute Connection=MSOLAP Schema='FoodMart 2000' GetData='Sales'Begin-select loops=5000Product &prod (+1,15)Time &time (0,1)Measures.Profit &prof (0,45) edit 999999.99"Measures.Store Cost" &cog (0,70) edit 999999.99"Measures.Store Sales" &sale (0,60) edit 999999.99From Rowsets=(1)End-selectEnd-ExecuteEnd-Procedure

プログラム ex33.sqr によって次のように出力されます。

178 Production Reporting DDO による MSOLAP キューブへのアクセス

Page 179: Hyperion SQR Production Reporting 開発者ガイド ボリューム …SQR Production Reporting Studio によるBAPI のレポート作成 ..... 129 SAP R/3 のProduction Reporting

プログラム ex33.sqr の出力結果Quarter Product Profit Sales CostQ1 Alcoholic Beverages 1858.19 3082.00 1223.811 Alcoholic Beverages 592.31 981.88 389.572 Alcoholic Beverages 553.40 919.27 365.873 Alcoholic Beverages 712.48 1180.85 468.37Q1 Beer and Wine 1858.19 3082.00 1223.811 Beer and Wine 592.31 981.88 389.572 Beer and Wine 553.40 919.27 365.873 Beer and Wine 712.48 1180.85 468.37Q1 Beer 439.67 722.99 283.321 Beer 132.59 219.11 86.522 Beer 138.25 229.08 90.833 Beer 168.82 274.80 105.98Q1 Wine 1418.53 2359.01 940.481 Wine 459.72 762.77 303.052 Wine 415.14 690.19 275.053 Wine 543.66 906.05 362.39

出力の外見を変更するには、BEGIN-SELECTセクションの次元の順序を変えます。

プログラム ex34.sqr で示すように、次元 Time および Product の順序を逆にする

と、列の順序が異なるレポートが生成されます。

プログラム ex34.sqrBegin-select loops=5000Product &prod (+1,15)Time &time (0,1)Measures.Profit &prof (0,45) edit 999999.99"Measures.Store Cost" &cog (0,70) edit 999999.99"Measures.Store Sales" &sale (0,60) edit 999999.99From Rowsets=(1)End-selectEnd-ExecuteEnd-Procedure

プログラム ex34.sqr の出力では、「Quarter」によって行がソートされています。

Q1 列が 初で、次に行 1、2、3 が続きます。Quarter 列を基準に行の順序が決め

られるのは、BEGIN-SELECTセクションの 初に Time がリストされているからで

す。

プログラム ex34.sqr の出力結果Quarter Product Profit Sales CostQ1 Alcoholic Beverages 1858.19 3082.00 1223.81Q1 Beer and Wine 1858.19 3082.00 1223.81Q1 Beer 439.67 722.99 283.32Q1 Wine 1418.53 2359.01 940.481 Alcoholic Beverages 592.31 981.88 389.571 Beer and Wine 592.31 981.88 389.571 Beer 132.59 219.11 86.521 Wine 459.72 762.77 303.052 Alcoholic Beverages 553.40 919.27 365.872 Beer and Wine 553.40 919.27 365.872 Beer 138.25 229.08 90.832 Wine 415.14 690.19 275.053 Alcoholic Beverages 712.48 1180.85 468.373 Beer and Wine 712.48 1180.85 468.37

レポートデータの表示 179

Page 180: Hyperion SQR Production Reporting 開発者ガイド ボリューム …SQR Production Reporting Studio によるBAPI のレポート作成 ..... 129 SAP R/3 のProduction Reporting

3 Beer 168.82 274.80 105.983 Wine 543.66 906.05 362.39

キューブへのアクセス:例この項では、キューブの例を示し、キューブへのアクセスに必要な Production

Reporting コードについて説明します。この項では次の情報を扱います。

l キューブ

l Production Reporting キューブへのアクセスに必要なコード

l コードの説明

キューブ図 18 は、3 次元のキューブの例で、Product(Y 軸)、Time(X軸)および Accounts

(Z 軸)を示しています。この例で示しているのは、キューブ全体の一部だけで

す。例えば、ここでは 初の 1 つの四半期しか表示されていませんが、Time 次元

には 4 つの四半期があります。また、Location や Salesperson などの次元もこの

キューブに追加できます。

キューブの各セルが、データベース内のデータ値を表しています。例えば、1 つ

のセルは、1 月のビールの売上値を保持しています。セルで分けられているだけ

でなく、キューブをさらに小さなセグメントに分けて、全四半期にわたるビール

の売上やすべての製品(ビールとワイン)の 2 月の原価などを表すことができま

す。

図 18 3 次元のデータキューブ

図 19 は、上記の図 18 のキューブの次元とレベルを示したものです。Drink は次元

Product のメンバ、1997 は次元 Time のメンバ、および Sales と Cost は次元

Accounts のメンバです。各次元はキューブ軸に対応しています。

180 Production Reporting DDO による MSOLAP キューブへのアクセス

Page 181: Hyperion SQR Production Reporting 開発者ガイド ボリューム …SQR Production Reporting Studio によるBAPI のレポート作成 ..... 129 SAP R/3 のProduction Reporting

図 19 データキューブの階層

Production Reporting キューブへのアクセスに必要なコードこれまで説明してきた OLAP キューブには、プログラム ex35.sqr の Production

Reporting コードによってアクセスします。コードでは、次の 3 つのコマンドを使

用してキューブへアクセスします。SET-MEMBERS、SET-GENERATIONS、および

SET-LEVELS です。

プログラム ex35.sqrBegin-Setup Declare-Connection MSOLAP dsn=MSOLAP set-members=('product','all products.drink.alcoholic beverages','time','1997.Q1' ) set-levels= ('time', 1,'product', 2) set-generations= ('time',2,'product', 3) End-DeclareEnd-Setup Begin-Programprint 'Quarter' (+2,1)print 'Product' (0,15)print 'Profit' (0,48)print 'Sales' (0,64)print 'Cost' (0,75)print '' (+1,1)do Read_Cubeend-program Begin-Proced Read_CubeBegin-Execute Connection=MSOLAP Schema='FoodMart 2000' GetData='Sales'Begin-select loops=5000Time &time (+1,1)Product &prod (0,15)

キューブへのアクセス:例 181

Page 182: Hyperion SQR Production Reporting 開発者ガイド ボリューム …SQR Production Reporting Studio によるBAPI のレポート作成 ..... 129 SAP R/3 のProduction Reporting

Measures.Profit &prof (0,45) edit 999999.99"Measures.Store Cost" &cog (0,70) edit 999999.99"Measures.Store Sales" &sale (0,60) edit 999999.99From Rowsets=(1)End-selectEnd-ExecuteEnd-Procedure

注:

出力時の列と行の順序は、BEGIN-SELECTセクションにリストされた次元の順序に

基づいて表示されます。プログラム ex34.sqr 出力内の列は、Product ごと、Market

ごとの Year 順でリストされます。出力の外見を変更するには、BEGIN-SELECTセ

クションの次元の順序を変えます。

プログラム ex35.sqr の出力Quarter Product Profit Sales CostQ1 Alcoholic Beverages 1858.19 3082.00 1223.811 Alcoholic Beverages 592.31 981.88 389.572 Alcoholic Beverages 553.40 919.27 365.873 Alcoholic Beverages 712.48 1180.85 468.37Q1 Beer and Wine 1858.19 3082.00 1223.811 Beer and Wine 592.31 981.88 389.572 Beer and Wine 553.40 919.27 365.873 Beer and Wine 712.48 1180.85 468.37Q1 Beer 439.67 722.99 283.321 Beer 132.59 219.11 86.522 Beer 138.25 229.08 90.833 Beer 168.82 274.80 105.98Q1 Wine 1418.53 2359.01 940.481 Wine 459.72 762.77 303.052 Wine 415.14 690.19 275.053 Wine 543.66 906.05 362.39

コードの説明表 21 に、OLAP キューブの例へのアクセスに必要なコードを示します。

表 21 コードの説明

コード 説明

Begin-Setup

Declare-Connection MSOLAP

dsn=MSOLAP

User=

Password=

set-members=('product','all

products.drink.alcoholic

beverages','time','1997.Q1' )

set-levels= ('time', 1,

'product', 2)

Production Reporting プログラムの setup セクションです。

l Declare-Connection:ユーザが定義した名前で、

キューブへの接続を表します。この例では、OLAPを

使用しました。

l DSN:Essbase 接続です。DDO レジストリに DDO レジス

トリ名を入力します。

l User:MSOLAP 接続用のユーザ名です。

l PASSWORD:ユーザ用のパスワードです。

また、コマンドラインから次の構文を使用して接続することもできます。

SQR [program] DSN/[username]/[password]

182 Production Reporting DDO による MSOLAP キューブへのアクセス

Page 183: Hyperion SQR Production Reporting 開発者ガイド ボリューム …SQR Production Reporting Studio によるBAPI のレポート作成 ..... 129 SAP R/3 のProduction Reporting

コード 説明

set-generations= ('time',2,

'product', 3)

End-Declare

End-Setup

l Parameters:オプションのパラメータです。別名テー

ブルを使用するかどうかを宣言します。

このステートメントを記述すると、出力時に名前の代わりに別名が表示されます。

l set-members:特定の階層レベルの次元名を指定しま

す。

l set-levels:既に宣言されている次元の次元階層を

拡張します。

l set-generations:set-membersで宣言されている特

定の階層レベルを上書きします。

Begin-Program

print 'Quarter' (+2,1)

print 'Product' (0,15)

print 'Profit' (0,48)

print 'Sales' (0,64)

print 'Cost' (0,75)

do Read_Cube

end-program

Production Reporting プログラムのプログラムセクションで

す。

l print:列見出しを出力します。

この例では、Quarter、Product、Profit、Sales および Costになります。

l do Read_Cube:Production Reporting にキューブを読み

込ませます。

Begin-Procedure Read_Cube

Begin-Execute

Connection=MSOLAP

Schema='FoodMart 2000'

GetData='Sales'

新しい検索またはプロシージャの実行を開始します。

l Connection:Declare-Connection内の情報を指しま

す。

l schema:キューブの名前です。

l getdata:キューブ内のテーブル名です。

すべてのキューブには、Connection、schemaおよびGetDataを記述する必要があります。

Begin-select loops=5000

Time &time (+2,1)

Product &prod (0,15)

SELECT パラグラフを開始します。

l loops=5000:取得する行数を指定するためのオプショ

ンの引数です。指定された行数の処理が終了すると、SELECTループは終了します。

l &time,&prod:キューブ内の次元です。

Measures.Profit &prof (0,45) edit

999999.99

"Measures.Store Cost" &cog (0,70) edit

999999.99

"Measures.Store Sales" &sale (0,

60) edit 999999.99

数値データを取得するために必要です。

測定値は階層構造になっており、各ドットによって他のレベルやメンバが定義されます。

この例の測定値は、Profit、Store Cost、およびStore Salesです。

From MSOLAP From:Production Reporting で必要です。

MSOLAP:select ステートメントのデータソースを示すオ

プションです。

End-Select Begin-Selectを完了します。

End-Execute Begin-Executeを完了します。

キューブへのアクセス:例 183

Page 184: Hyperion SQR Production Reporting 開発者ガイド ボリューム …SQR Production Reporting Studio によるBAPI のレポート作成 ..... 129 SAP R/3 のProduction Reporting

コード 説明

End-Procedure Begin-Procedureを完了します。

184 Production Reporting DDO による MSOLAP キューブへのアクセス

Page 185: Hyperion SQR Production Reporting 開発者ガイド ボリューム …SQR Production Reporting Studio によるBAPI のレポート作成 ..... 129 SAP R/3 のProduction Reporting

第 I I I 部

付録

付録の内容:

l リソースファイルのサンプル

l HTTP 対応の XML DDO ドライバの使用

付録 185

Page 186: Hyperion SQR Production Reporting 開発者ガイド ボリューム …SQR Production Reporting Studio によるBAPI のレポート作成 ..... 129 SAP R/3 のProduction Reporting

186 付録

Page 187: Hyperion SQR Production Reporting 開発者ガイド ボリューム …SQR Production Reporting Studio によるBAPI のレポート作成 ..... 129 SAP R/3 のProduction Reporting

Aリソースファイルのサンプル

この付録の内容

SAP データソースのプロパティに関する説明 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 187

SAP データソースのメッセージ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 192

SAP データソースのプロパティに関する説明# Title: Production Reporting Objects -- SAP/R3 Access# Version:# Copyright: Copyright (c) 2005# Company: Oracle# Description: SAP/R3 Access Data Source Property Descriptions# logon.Name=Logonlogon.Description=Logon is required to establish a connection with an SAP R3data source. ¥The SAP R3data source takes a number of parameters as part of the connection string. ¥Included among these are the operator (or user) identification and the operator (or user) ¥password. The user identification and password are included as logon information. The remaining ¥connection attributes are part of the connection string provided with the data source ¥description (see the SAP R3 DataSource interface documentation for a complete description). ¥To summarize, the SAP R3 connection string may have a form similar to: ¥SAPR3:JNI:ASHOST=hs0311 SYSNR=53. ¥Where the ASHOST would be replaced by the data source host identifier; the SYSNR would be replaced by ¥the system number for the host. ¥The client (CLIENT=), user identification (USER=), password (PASSWD=) and language (LANG=) ¥are appended to the connection string. These are usually retained as properties. A user ¥interface will normally prompt for these values.logon.Indices=logon.client ¥user ¥password ¥logon.language ¥logon.gateway ¥logon.noloadbalancing ¥logon.loadbalancing ¥logon.advancedlogon.Required=true logon.client.Name=Client

SAP データソースのプロパティに関する説明 187

Page 188: Hyperion SQR Production Reporting 開発者ガイド ボリューム …SQR Production Reporting Studio によるBAPI のレポート作成 ..... 129 SAP R/3 のProduction Reporting

logon.client.Description=SAP logon client identifier.logon.client.ClassName=java.lang.Stringlogon.client.Required=true logon.language.Name=Languagelogon.language.Description=SAP logon language (1-byte SAP language or 2-byte ISO language).logon.language.ClassName=java.lang.String logon.gateway.Name=Gatewaylogon.gateway.Description=The attributes of this node provide gateway specifications.logon.gateway.Indices=logon.dest ¥logon.gwhost ¥logon.gwserv logon.loadbalancing.Name=Load Balancinglogon.loadbalancing.Description=The attributes of this node provide load balancing specifications.logon.loadbalancing.Indices=logon.mshost ¥logon.r3name ¥logon.group logon.noloadbalancing.Name=No Load Balancinglogon.noloadbalancing.Description=The attributes of this node provide additional no load balancing specifications.logon.noloadbalancing.Indices=logon.sysnr ¥logon.ashost logon.advanced.Name=Advancedlogon.advanced.Description=The attributes of this node provide advanced and diagnostic specifications.logon.advanced.Indices=logon.type ¥logon.check ¥logon.trace logon.type.Name=RFC Server Typelogon.type.Description=The RFC server type. This parameter should be left empty or set to 3, the default.logon.type.ClassName=java.lang.Stringlogon.type.ValidationType=2logon.type.Validator=com.sqribe.comutil.StringValidatorlogon.type.ValidationValues=3 E 2 logon.check.Name=SAP Logon Checklogon.check.Description=SAP logon check during Open. The default is 1. The default should always be used.logon.check.ClassName=java.lang.Stringlogon.check.ValidationType=2logon.check.Validator=com.sqribe.comutil.StringValidatorlogon.check.ValidationValues=1 0 logon.trace.Name=RFC Tracelogon.trace.Description=Establish an RFC trace log. The default is 0, do not establish a trace log.logon.trace.ClassName=java.lang.Stringlogon.trace.ValidationType=2logon.trace.Validator=com.sqribe.comutil.StringValidatorlogon.trace.ValidationValues=1 0 logon.dest.Name=SAP Logical Destinationlogon.dest.Description=Destination in saprfc.ini, when using saprfc.ini. If the RFC server is an R/2 system ¥

188 リソースファイルのサンプル

Page 189: Hyperion SQR Production Reporting 開発者ガイド ボリューム …SQR Production Reporting Studio によるBAPI のレポート作成 ..... 129 SAP R/3 のProduction Reporting

this destination must also be defined in the 'sideinfo' for the SAP gateway. This parameter value should ¥only be specified when an saprfc.ini file is being referenced; otherwise, it should be left empty.logon.dest.ClassName=java.lang.String logon.gwhost.Name=SAP Gateway Hostlogon.gwhost.Description=The host name of the SAP gateway, when the server is R/2 or External. ¥This parameter value should only be specified when the server is R/2 or External; otherwise, it should be left empty.logon.gwhost.ClassName=java.lang.String logon.gwserv.Name=SAP Gateway Servicelogon.gwserv.Description=The service of the SAP gateway, when the server is R/2 or External. ¥This parameter value should only be specified when the server is R/2 or External; otherwise, it should be left empty.logon.gwserv.ClassName=java.lang.String logon.mshost.Name=SAP Message Server Hostlogon.mshost.Description=The host name of the SAP message server, when using load balancing. ¥This parameter value should only be specified when the server is R/3 and load balancing is being used; ¥otherwise, it should be left empty.logon.mshost.ClassName=java.lang.String logon.r3name.Name=R/3 Load Balancing Server Namelogon.r3name.Description=The SAProuter string for the R/3 system, when using load balancing. ¥This parameter value should only be specified when the server is R/3 and load balancing is being used; ¥otherwise, it should be left empty.logon.r3name.ClassName=java.lang.String logon.group.Name=Application Server Group Namelogon.group.Description=The name of the group of application servers, when using load balancing. ¥This parameter value should only be specified when the server is R/3 and load balancing is being used; ¥otherwise, it should be left empty.logon.group.ClassName=java.lang.String logon.ashost.Name=External Server Namelogon.ashost.Description=The host name of a specific application server, when using R/3 without load balancing. ¥This parameter value should only be specified when the server is R/3, the server is an external application ¥server, and load balancing is not being used; ¥otherwise, it should be left empty.logon.ashost.ClassName=java.lang.String logon.sysnr.Name=External Server System Numberlogon.sysnr.Description=The SAP system number of a specific application server, when using R/3 without load balancing. ¥This parameter value should only be specified when the server is R/3, the server is an external application ¥server, and load balancing is not being used; ¥otherwise, it should be left empty.logon.sysnr.ClassName=java.lang.String

SAP データソースのプロパティに関する説明 189

Page 190: Hyperion SQR Production Reporting 開発者ガイド ボリューム …SQR Production Reporting Studio によるBAPI のレポート作成 ..... 129 SAP R/3 のProduction Reporting

filters.Name=SAP Hierarchy Filtersfilters.Description=SAP hierarchy filters provide a mechanism for controlling the amount ¥of information retrieved as part of the hierarchy. For example, the hierarchy may include ¥all business objects or only business objects with BAPIs. In another case, the hierarchy ¥may only include business objects with BAPIs that have a status of "released."filters.Indices=filters.BAPI ¥filters.Objects ¥filters.Interfaces ¥filters.Organization ¥filters.Implemented ¥filters.Released ¥filters.Modelled ¥filters.Obsolete ¥filters.Delegated filters.BAPI.Name=Object Type Filterfilters.BAPI.Description=When activated, this filter will restrict the hierarchy to business ¥objects to those containing BAPIs. When deactivated, the hierarchy, potentially, will contain ¥all business objects.filters.BAPI.ClassName=java.lang.Booleanfilters.BAPI.ValidationType=2filters.BAPI.Validator=com.sqribe.comutil.BooleanValidatorfilters.BAPI.ValidationValues=true false filters.Objects.Name=Object Filterfilters.Objects.Description=If this filter and the Interfaces filter are deactivated, i.e., ¥set to false, all SAP Business Object types and interface types are returned. When this ¥filter is activated, then only Business Object types are returned. ¥When not specified, this filter defaults to "false".filters.Objects.ClassName=java.lang.Booleanfilters.Objects.ValidationType=2filters.Objects.Validator=com.sqribe.comutil.BooleanValidatorfilters.Objects.ValidationValues=true false filters.Interfaces.Name=Object Filterfilters.Interfaces.Description=If this filter and the Objects filter are deactivated, i.e., ¥set to false, all SAP Business Object types and interface types are returned. When this ¥filter is activated, then only Interface type identifiers are returned. ¥When not specified, this filter defaults to "false".filters.Interfaces.ClassName=java.lang.Booleanfilters.Interfaces.ValidationType=2filters.Interfaces.Validator=com.sqribe.comutil.BooleanValidatorfilters.Interfaces.ValidationValues=true false filters.Organization.Name=Organizational Unit Filterfilters.Organization.Description=Filter of organizational unit object types. ¥A value of "true" indicates that all organizational unit object types are returned. ¥A value of "false" indicates that no organizational unit object types are returned. ¥When not specified, this filter defaults to "false".filters.Organization.ClassName=java.lang.Booleanfilters.Organization.ValidationType=2filters.Organization.Validator=com.sqribe.comutil.BooleanValidatorfilters.Organization.ValidationValues=true false

190 リソースファイルのサンプル

Page 191: Hyperion SQR Production Reporting 開発者ガイド ボリューム …SQR Production Reporting Studio によるBAPI のレポート作成 ..... 129 SAP R/3 のProduction Reporting

filters.Implemented.Name=With Implemented Filterfilters.Implemented.Description=Filter for implemented SAP Business Object types. Implmented ¥object types have not been officially released but can be used in a runtime environment. Use ¥this filter when the "Released" filter is set to "Released". The value, "true", means that object ¥types with status, "implemented", are also returned. The value, "false", means that objects ¥types with status, "implemented", are not returned. ¥When not specified, the default value is "true".filters.Implemented.ClassName=java.lang.Booleanfilters.Implemented.ValidationType=2filters.Implemented.Validator=com.sqribe.comutil.BooleanValidatorfilters.Implemented.ValidationValues=true false filters.Released.Name=Released Object Type Filterfilters.Released.Description=Filter for released SAP Business Object types. ¥The value, "true", means that "released" object types are returned. ¥The value, "false", means that "released" object types are not returned. ¥When not specified, the default value is "false".filters.Released.ClassName=java.lang.Booleanfilters.Released.ValidationType=2filters.Released.Validator=com.sqribe.comutil.BooleanValidatorfilters.Released.ValidationValues=true false filters.Modelled.Name=Modelled Object Type Filterfilters.Modelled.Description=Filter for modelled SAP Business Object types. ¥The value, "true", means that all modelled object types are returned. ¥The value, "false", means that no modelled object types are returned. ¥When not specified, the default value is "false".filters.Modelled.ClassName=java.lang.Booleanfilters.Modelled.ValidationType=2filters.Modelled.Validator=com.sqribe.comutil.BooleanValidatorfilters.Modelled.ValidationValues=true false filters.Obsolete.Name=With Obsolete Filterfilters.Obsolete.Description=Filter for obsolete SAP Business Object types. Use ¥this filter when the "Released" filter is set to "Released". The value, "true", means that object ¥types with status, "obsolete", are also returned. The value, "false", means that objects ¥types with status, "obsolete", are not returned. ¥When not specified, the default value is "false".filters.Obsolete.ClassName=java.lang.Booleanfilters.Obsolete.ValidationType=2filters.Obsolete.Validator=com.sqribe.comutil.BooleanValidatorfilters.Obsolete.ValidationValues=true false filters.Delegated.Name=With Delegated Object Type Filterfilters.Delegated.Description=Filter for delegated SAP Business Object types. ¥The value, "true", means that all object types, including delegated object types, are returned. ¥The value, "false", means that no delegated object types are returned. ¥When not specified, the default value is "true".filters.Delegated.ClassName=java.lang.Booleanfilters.Delegated.ValidationType=2filters.Delegated.Validator=com.sqribe.comutil.BooleanValidatorfilters.Delegated.ValidationValues=true false

SAP データソースのプロパティに関する説明 191

Page 192: Hyperion SQR Production Reporting 開発者ガイド ボリューム …SQR Production Reporting Studio によるBAPI のレポート作成 ..... 129 SAP R/3 のProduction Reporting

SAP データソースのメッセージ

# Title: Production Reporting Objects -- SAPR3acc# Version:# Copyright: Copyright (c) 1999# Company: SQRIBE Technologies# Description: SAP R3 Access Common Messages# # The connection string protocol value is not recognized by the SAP R3 DAO driver# 0 class name# 1 method name# 2 specified protocol name# 3 expected protocol name# 4 the connection stringInvalidProtocolName.text=The specified connection protocol, "{2}", is not supported by ¥this driver. This driver supports the "{3}" protocol. The connection string is: {4}.InvalidProtocolName.logtext={0}.{1}(): The specified connection protocol, "{2}", is not supported by ¥this driver. This driver supports the "{3}" protocol. The connection string is: {4}. # The connection string subprotocol value is not recognized by the SAP R3 DAO driver# 0 class name# 1 method name# 2 specified subprotocol name# 3 expected subprotocol name# 4 the connection stringInvalidSubProtocolName.text=The specified connection subprotocol, "{2}", is not supported by ¥this driver. This driver supports the "{3}" subprotocol. The connection string is: {4}.InvalidSubProtocolName.logtext={0}.{1}(): The specified connection subprotocol, "{2}", is not supported by ¥this driver. This driver supports the "{3}" subprotocol. The connection string is: {4}. # A parameter in the connection string was not recognized# 0 class name# 1 method name# 2 specified parameter key# 3 specified parameter value# 4 the connection stringUnknownLogonParameter.text=The specified parameter, "{2}={3}", is not recognized by ¥this driver. The connection string is: {4}. The parameter will be passed to the data source.UnknownLogonParameter.logtext={0}.{1}(): The specified parameter, "{2}={3}", is not recognized by ¥this driver. The connection string is: {4}. The parameter will be passed to the data source. # Unexpected SAP R3 RFC error occurred. It has been converted to an SAP R3 exception.# 0 class catching the exception# 1 method catching the exception# 2 error key# 3 error group# 4 error messageSAPR3Exception.text=SAP R3 message: key={2}, group={3}, and msg={4}.SAPR3Exception.logtext={0}.{1}(): SAP R3 exception caught: key={2}, group={3}, and msg={4}.

192 リソースファイルのサンプル

Page 193: Hyperion SQR Production Reporting 開発者ガイド ボリューム …SQR Production Reporting Studio によるBAPI のレポート作成 ..... 129 SAP R/3 のProduction Reporting

# SAPR3Field internal error set field with improper field type# 0 class catching the exception# 1 method catching the exception# 2 the string dump of the underlying fieldSAPR3FieldInternalError.text=Unexpected field instance of {2}.SAPR3FieldInternalError.logtext={0}.{1}(): Unexpected field instance of {2}. # BOR Tree retrieval error message# 0 class name# 1 method name# 2 the SAP R/3 message textBorTreeMsg.text={2}.BorTreeMsg.logtext={0}.{1}(): {2}. # ParameterException container message, indicating errors occurring during container marshalling# 0 class name# 1 method name# 2 messagesParameterException.text={2}ParameterException.logtext={0}.{1}(): {2} # There are too many parameters in the parameter list# 0 class name# 1 method name# 2 input parameter count from metadata# 3 parameter list countTooManyParameters.text=Too many parameters. There are {2} parameters in the metadata ¥but there are {3} parameters in the parameter list.TooManyParameters.logtext={0}.{1}: Too many parameters. There are {2} parameters in the metadata ¥but there are {3} parameters in the parameter list. # There are too few parameters in the parameter list# 0 class name# 1 method name# 2 input parameter count from metadata# 3 parameter list countTooFewParameters.text=Too few parameters. There are {2} parameters in the metadata ¥but there are {3} parameters in the parameter list.TooFewParameters.logtext={0}.{1}: Too few parameters. There are {2} parameters in the metadata ¥but there are {3} parameters in the parameter list. # Conflicting field types for the expected and actual parameters# 0 class name# 1 method name# 2 input parameter field type# 3 parameter list field typeConflictingParameterFieldTypes.text=Conflicting parameter field types. The metatdata ¥parameter field type is {2}. The input parameter field type is {3}.ConflictingParameterFieldTypes.logtext={0}.{1}: Conflicting parameter field types. The metatdata ¥parameter field type is {2}. The input parameter field type is {3}. # Parameter format error# 0 class name# 1 method name# 2 expected parameter name# 3 expected parameter field type

SAP データソースのメッセージ 193

Page 194: Hyperion SQR Production Reporting 開発者ガイド ボリューム …SQR Production Reporting Studio によるBAPI のレポート作成 ..... 129 SAP R/3 のProduction Reporting

# 4 received parameter name# 5 received parameter field type# 6 exceptionParameterFormatError.text=Expected parameter {2} has a field type of {3}. The parameter list ¥parameter {4} has a field type of {5}. The exception was {6}.ParameterFormatError.logtext={0}.{1}: Expected parameter {2} has a field type of {3}. The parameter list ¥parameter {4} has a field type of {5}. The exception was {6}. # Required parameter is null# 0 class name# 1 method name# 2 parameter list indexRequiredParameterEmpty.text=Parameter {2} is required parameter, but is empty.RequiredParameterEmpty.logtext={0}.{1}: Parameter {2} is required parameter, but is empty. # Invocation of object returned an error message# 0 class name# 1 method name# 2 object type# 3 error code# 4 error type# 5 workarea# 6 message# 7 textInvokeErrorMessage.text=Object, {2}, invocation returned error message: ¥Code: {3}, Type: {4}, Workarea: {5}, Message: {6}, Text: {7}.InvokeErrorMessage.logtext={0}.{1}: Object, {2}, invocation returned error message: ¥Code: {3}, Type: {4}, Workarea: {5}, Message: {6}, Text: {7}. # Handle is not invalid or null. This is mostly likely an internal processing error# 0 class name# 1 method name# 2 table object stateInvalidHandle.text=The RFC table handle is not valid or is null. ¥The handle either has not been created or was previously destroyed. ¥Table object state: {2}.InvalidHandle.logtext={0}.{1}: The RFC table handle is not valid or is null. ¥The handle either has not been created or was previously destroyed. ¥Table object state: {2}. # Rowset is null# 0 class name# 1 method name# 2 parameter nameRowsetIsNull.text=Expected rowset for parameter, {2}, is null.RowsetIsNull.logtext={0}.{1}: Expected rowset for parameter, {2}, is null. # Fetch of structure failed# 0 class name# 1 method name# 2 parent object name (e.g., the schema procedure name)# 3 structure name# 4 exception messageStructureFetchFailed.text=An exception was caught while retrieving the ¥description of the structure, {3}, for object, {2}. The exception message is: {4}.StructureFetchFailed.logtext={0}.{1}: An exception was caught while retrieving the ¥description of the structure, {3}, for object, {2}. The exception message is: {4}. # Field not found. This should not occur. It means that the metadata returned

194 リソースファイルのサンプル

Page 195: Hyperion SQR Production Reporting 開発者ガイド ボリューム …SQR Production Reporting Studio によるBAPI のレポート作成 ..... 129 SAP R/3 のProduction Reporting

# from SAP is not valid (or the permissions of the user are really messed up).# 0 class name# 1 method name# 2 column name# 3 field nameFieldNotFound.text=The field, {3}, for column, {2}, was not found.FieldNotFound.logtext={0}.{1}(): The field, {3}, for column, {2}, was not found. # CallResults failed for a HelpValues retrieval. This should not occur. # It means that the metadata returned from SAP is not valid (or the permissions # of the user are really messed up).# 0 class name# 1 method name# 2 object name# 3 procedure name# 4 parameter name# 5 field name# 6 exception messageHelpCallResultsFailed.text=The BAPI call to obtain help description ¥information for object type, {2}, procedure, {3}, parameter, {4}, and field, {5}, ¥failed. Exception: {6}.HelpCallResultsFailed.logtext={0}.{1}(): The BAPI call to obtain help description ¥information for object type, {2}, procedure, {3}, parameter, {4}, and field, {5}, ¥failed. Exception: {6}. # The help description metadata is invalid.# 0 class name# 1 method name# 2 column name# 3 exception messageHelpMetaDataInvalid.text=The help description metadata is invalid for ¥column, {2}. Exception: {3}.HelpMetaDataInvalid.logtext={0}.{1}(): The help description metadata is invalid for ¥column, {2}. Exception: {3}. # The help description values are invalid.# 0 class name# 1 method name# 2 column name# 3 exception messageHelpValuesInvalid.text=The help description values are invalid for ¥column, {2}. Exception: {3}.HelpValuesInvalid.logtext={0}.{1}(): The help description values are invalid for ¥column, {2}. Exception: {3}. # The Help description return value# 0 class name# 1 method name# 2 object name# 3 procedure name# 4 parameter name# 5 field name# 6 message text (dump of return value row)HelpReturnValue.text=The request for help description for ¥object={2}, procedure={3}, parameter={4}, field={5}, produced message: {6}.HelpReturnValue.logtext={0}.{1}(): The request for help description for ¥object={2}, procedure={3}, parameter={4}, field={5}, produced message: {6}. # Expected parameters based upon the metadata information# 0 class name# 1 method name# 2 parameter metadata dump

SAP データソースのメッセージ 195

Page 196: Hyperion SQR Production Reporting 開発者ガイド ボリューム …SQR Production Reporting Studio によるBAPI のレポート作成 ..... 129 SAP R/3 のProduction Reporting

ExpectedParameterMetadata.logtext={0}.{1}() The expected parameter metadata is: {2}. # Actual parameter list# 0 class name# 1 method name# 2 parameter list dumpActualParameterList.logtext={0}.{1}() The actual parameter list is: {2}.

196 リソースファイルのサンプル

Page 197: Hyperion SQR Production Reporting 開発者ガイド ボリューム …SQR Production Reporting Studio によるBAPI のレポート作成 ..... 129 SAP R/3 のProduction Reporting

BHTTP対応のXML DDOドライ

バの使用

この付録の内容

使用法 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 197

Production Reporting DDO クエリエディタを使用し、HTTP を介して XML ファイルへアクセス

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 199

制約事項 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 199

注:

Production Reporting での XML サポートについて詳しくは、『Hyperion SQR

Production Reporting 開発者ガイド』のボリューム 1 の「Production Reporting での

XML サポート」を参照してください。

使用法XML DDO ドライバはプロパティ URL が存在するかどうかを確認し、データが指

定されている場合は、データをその URL から読み取ります。URL プロパティが存

在しな場合は、XML DDO ドライバは接続文字列に指定されているディレクトリ

内の XML ファイルからデータを読み取ります。URL にアクセスするための特別

な DDO レジストリのエントリは不要です。代わりに、ローカルディレクトリを

指す DDO レジストリのエントリを作成し、Production Reporting プログラムでそ

のエントリを使って、URL を介して XML ファイルにアクセスできます。

ä XML DDO ドライバを使用するには、次の手順に従います。

1 レジストリのエントリを定義します。

2 接続を宣言します。

3 begin-execute セクションで Getdata=を使用します。

後続のセクションでは、上記のステップごとに詳しく説明していきます。また、

alter-connection コマンドを使って実行時の URL を指定する方法についても説明し

ます。

レジストリのエントリの定義XML DDO ドライバを使用する DDO レジストリのエントリを定義します。DDO

レジストリエディタを使ってレジストリを作成するか、properties¥Registry.properties

ファイルを手動で編集します。次のエントリが含まれます。

使用法 197

Page 198: Hyperion SQR Production Reporting 開発者ガイド ボリューム …SQR Production Reporting Studio によるBAPI のレポート作成 ..... 129 SAP R/3 のProduction Reporting

SampleXML.desc=Sample XML files SampleXML.class=com.sqribe.xmlacc.XMLDataSource SampleXML.lib= SampleXML.load= SampleXML.conn=D:¥¥XML_Data¥¥SampleXML

接続の宣言データソースへの接続は、Production Reporting プログラムの BEGIN-SETUPセク

ションで宣言します。次に例を示します。

begin-setup declare-connection xml DSN=SampleXML end-declare end-setup

これで、レジストリの接続文字列で指定されたディレクトリ内のファイルにアク

セスできるようになります。(この例では D:¥XML_Data¥SampleXML)。

ドライバの新しい HTTP 機能を使用するには、PARAMETERS= URL=<your_url>を

接続の宣言に含めます。

begin-setup declare-connection xml DSN=SampleXML PARAMETERS= URL=http://server/path/filename.xml; end-declare end-setup

Begin-Execute セクションでの Getdata=の使用

Production Reporting DDO プログラムの BEGIN-EXECUTEセクションで、接続を指

定します。GetData のスキーマ名パラメータには、拡張子のないファイル名を指定

します。

begin-execute connection=xml GetData='filename'

別の方法URL を DECLARE-CONNECTIONブロックではなく、ALTER-CONNECTIONブロックに

指定できます。次に例を示します。

alter-connection NAME=xml PARAMETERS= URL=http://server/path/filename.xml;

Production Reporting DDO コマンドラインで接続を指定する場合は、ALTER-

CONNECTIONメソッドが非常に便利です。この場合は、DECLARE-CONNECTIONス

テートメントには何も指定せずに、デフォルトの接続だけを変更します。

alter-connection NAME=default

198 HTTP 対応の XML DDO ドライバの使用

Page 199: Hyperion SQR Production Reporting 開発者ガイド ボリューム …SQR Production Reporting Studio によるBAPI のレポート作成 ..... 129 SAP R/3 のProduction Reporting

PARAMETERS= URL=http://server/path/filename.xml;

実行時の URL の指定

URL を変数から使用するには、「URL=」で始まり「,」で終了するパラメータ文字

列を作成して、alter-connection ステートメントで使用します。次に例を示します。

let $params = 'URL=' || $url || ';' alter-connection NAME=xml PARAMETERS=$params

Production Reporting DDO クエリエディタを使用し、HTTPを介して XML ファイルへアクセス

プロパティファイルを編集すると、Production Reporting DDO クエリエディタを

使ってこのテストドライバを簡単にテストできます。次のファイルを編集して、

ログオンプロパティを定義する行のコメントを解除します。

properties¥com_sqribe_xmlacc_XMLDataSource_PropertyDescriptions.properties

logon.Required=true設定も含め、ログオンプロパティをこの方法で定義する

と、実行時に URL の値を入力できるダイアログボックスが Production Reporting

DDO クエリエディタによって表示されます。

また、次のファイルを編集して URL=lineのコメントを解除すると、ダイアログ

ボックスにはデフォルトの値が表示されます。この値はユーザが更新できます。

properties¥com_sqribe_xmlacc_XMLDataSource_Properties.properties

こうすると、Production Reporting DDO クエリエディタを使ってテストするときの

入力の手間を省けます。ただし、XML ドライバを使って、接続文字列に指定され

たディレクトリのファイルにアクセスできなくなります。これは、URL プロパ

ティはすべての XML データソースに対して定義されるため、ドライバは常に指定

された URL を使用するためです。

注:

業務環境でのインストールでは、ファイルシステム上の XML ファイルにアクセス

する既存の Production Reporting DDO プログラムに影響が及ぶ可能性があるため、

ログオンプロパティを定義せずにデフォルトの URL を指定します。上記の方法

は、開発環境で Production Reporting DDO クエリエディタを使用して、構造、ス

キーマ名、HTTP から取得される XML ファイルの内容を参照する場合に便利で

す。

制約事項Oracle's Hyperion® SQR® Production Reporting と XML DDO ドライバを併用すると、

XML DDO ドライバは検証用に DOM パーサーを使用します。このため大量のメ

Production Reporting DDO クエリエディタを使用し、HTTP を介して XML ファイルへアクセス 199

Page 200: Hyperion SQR Production Reporting 開発者ガイド ボリューム …SQR Production Reporting Studio によるBAPI のレポート作成 ..... 129 SAP R/3 のProduction Reporting

モリが使用されます。つまり、XML ファイルのサイズが大きい(約 3MB)と、

JVM でメモリ不足エラーが発生する場合があります。

200 HTTP 対応の XML DDO ドライバの使用

Page 201: Hyperion SQR Production Reporting 開発者ガイド ボリューム …SQR Production Reporting Studio によるBAPI のレポート作成 ..... 129 SAP R/3 のProduction Reporting

索引

A - ZallocateFields()メソッド, 73

BEGIN-SELECT, 138

bwacc ドライバ, 135

call()メソッド, 47

CallResults インターフェイス, 16

close()メソッド, 64

createField()メソッド, 73

createSchemas()メソッド, 63

CSV

インターフェイス, 60

ドライバ, 57

ドライバテンプレート, 77

CSVFile クラスメソッド, 64

DataSourceManager, 22

DataSourceManagerAdmin, 24

DataSource インターフェイス, 61

DDO

API, 21

SDK, 12

他のプログラミング言語からのアクセス, 13

定義, 12

DDO の作成, 57

getData()メソッド, 68

getData を使用してデータを取得, 15

getDBTypeName()メソッド, 67

getField()メソッド, 67, 73

getFieldCount()メソッド, 73

getRow()メソッド, 73

getSchemaObjectColumns()メソッド, 64

listDir()メソッド, 63

next()メソッド, 73

open()メソッド, 61

open()呼び出し, 27

Production Reporting DDO ドライバ用のアーキ

テクチャ, 16

Registry, 23

registry.properties ファイル、データソースの追

加, 134

Registry でデータソースを検索, 22

rethrow 規則メソッド, 78

Rowset インターフェイス, 16

SAP BW

/lib ディレクトリへのファイルのコピー,

134

対応プラットフォーム, 133

データソースの追加, 134

SDK, 12

setSchemas()メソッド, 63

あ行新しいデータソースの登録, 13

アプリケーションのセキュリティ, 12

エラー通知, 79

オープンシステム, 12

か行階層および多次元データ, 50

基礎クラス, 11

機能, 30

機能、コード例, 31

機能ファイル, 58

共通接続の実装メソッド, 75

コマンドの実行, 45

コマンドを実行してデータを取得, 15

コード例

call ()メソッド, 47

CSV ドライバ, 57

セレクタを使用して特定の次元を選択, 53

データの取得と処理, 21

プロシージャの戻り値の確認, 39

メッセージへのアクセス、CSV ドライバ, 77

ユーザとパスワードの設定, 27

レジストリエントリ, 61

A - Z あ行 か行 さ行 た行 な行 は行 ま行 や行 ら行

索引 201

Page 202: Hyperion SQR Production Reporting 開発者ガイド ボリューム …SQR Production Reporting Studio によるBAPI のレポート作成 ..... 129 SAP R/3 のProduction Reporting

さ行サンプルコード、レジストリの読み込み, 23

処理

CallResults インターフェイスを使った結果,

16

Rowset インターフェイスを使った結果, 42

ログオンプロパティ, 28

新規データソースの定義, 24

次元のプロパティ、アクセス, 138

スキーマ, 14, 32

スキーマでのデータオブジェクトの一覧表

示, 35

スキーマのトラバース, 33

静的な rethrow()メソッド, 63

接続

インターフェイス, 14, 27

確立, 27

接続インターフェイス、実装, 62

接続の確立, 27

セレクタ、列の指定, 44

選択とフィルタ, 44

双方向ゲートウェイ, 75

た行多次元データ, 50

多次元データの取得

MDSelector の使用, 54

汎用セレクタの使用, 52

追加

接続仕様の情報, 76

レジストリの仕様, 90

データアクセスの戦略, 17

データオブジェクト

情報の取得, 36

定義, 14

データソース

機能, 30

仕様, 89

実装メソッド, 75

名前, 89

データの取得, 36

3 つの方法, 15

getData ()メソッド, 36

データの要求, 41

データベースカーソル, 46

トランザクション, 49

トランザクションインターフェイス, 14

ドライバマネージャ, 17

な行名前

機能ファイル, 59

プロパティファイル, 58

は行ファイルシステムへの IO アクセス, 62

複数の呼び出し, 22

複数のレジストリ, 24

複数レジストリの管理, 23

プラットフォーム、SAP BW 用, 133

プロシージャ, 15

プロシージャに関するメタデータの取得, 37

プロシージャの結果セット, 39

プロシージャの呼び出し, 47

プロシージャパラメータの一覧表示, 38

プロシージャを呼び出してデータを取得, 15

プロパティシート, 13

プロパティ説明ファイル, 58

プロパティファイル, 58

ま行メタデータ

アクセス, 12

機能, 15

取得, 32

メタデータの取得, 32

メッセージへのアクセス, 77

メッセージの規則, 78

メッセージファイル

demo_csv_CSV.properties, 59

作成, 59

メッセージファイルで使用されるクラス階層,

59

戻り値の指定, 39

や行ユーザメッセージ, 78

ら行リモートデータアクセス, 12

レジストリファイルの編集による新規データ

ソースの作成, 24

A - Z あ行 か行 さ行 た行 な行 は行 ま行 や行 ら行

202 索引

Page 203: Hyperion SQR Production Reporting 開発者ガイド ボリューム …SQR Production Reporting Studio によるBAPI のレポート作成 ..... 129 SAP R/3 のProduction Reporting

列, 40

列メタデータ

取得, 37

提供, 64

列メタデータの取得, 37

ログメッセージ, 78

A - Z あ行 か行 さ行 た行 な行 は行 ま行 や行 ら行

索引 203

Page 204: Hyperion SQR Production Reporting 開発者ガイド ボリューム …SQR Production Reporting Studio によるBAPI のレポート作成 ..... 129 SAP R/3 のProduction Reporting

A - Z あ行 か行 さ行 た行 な行 は行 ま行 や行 ら行

204 索引