SAP Business Warehouse コネクタのトラブルシューティング
この記事では、SAP Business Warehouse (BW) コネクタを使用する場合のトラブルシューティングの状況 (および解決方法) について説明します。
SAP BW の高度なトレースを収集する
Note
SAP BW サーバーに送信されるクエリのトレースを収集するには、Power BI Desktop を使用した場合にのみ提供されるいくつかのオプションと設定が必要です。 Power BI Desktop をまだお持ちでない場合は、Microsoft ダウンロードセンターから入手できます。 この無料バージョンを使用して、高度なトレースに必要なオプションと設定をすべて指定できます。
多くの場合、エラーが発生した際には、SAP BW サーバーに送信されたクエリのトレースとその応答を収集すると有効です。 次の手順は、SAP BW コネクタを使用する際に発生する問題の高度なトレースを設定する方法を示しています。
実行されている場合は、Power BI Desktop を閉じます。
次の手順に従って、新しい環境変数を作成します。
Windows コントロール パネルで、[システム] > [システムの詳細設定] を選択します。
または、コマンド プロンプトを開き、「sysdm.cpl」と入力します。
[システムのプロパティ] ウィンドウで、[詳細設定] タブを選択し、[環境変数] を選択します。
[環境変数] の [システム環境変数] で [新規] をクリックします。
[新しいシステム変数] の [変数名] に「PBI_EnableSapBwTracing」、[変数値] に「true」と入力します。
[OK] を選択します。
この高度なトレースがアクティブになると、トレース フォルダーに SapBw という名前の追加フォルダーが作成されます。 トレース フォルダーの場所については、この手順の残りの部分を参照してください。
Power BI Desktop を開きます。
キャプチャする前にキャッシュをクリアします。
- Power BI desktop で [ファイル] タブを選択します。
- [オプションと設定] > [オプション] の順に選択します。
- [グローバル] 設定で [データの読み込み] を選択します。
- キャッシュのクリア を選択します。
[オプションと設定] で、トレースを有効にします。
- [グローバル] 設定で [診断] を選択します。
- [トレースを有効にする] を選択します。
[オプションと設定] > [グローバル] > [診断] で、[クラッシュ ダンプ/トレース フォルダーを開く] を選択します。 新しいトレースをキャプチャする前に、フォルダーがクリアされていることを確認します。
問題を再現します。
完了したら、Power BI Desktop を閉じて、ログをディスクにフラッシュします。
SapBw フォルダーにある、新しくキャプチャしたトレースを 表示できます (SapBw フォルダーを含むトレース フォルダーを表示するには、Power BI Desktop の [診断] ページで [クラッシュ ダンプ/トレース フォルダーを開く] を選択します)。
完了したら、環境変数を削除するか、PBI_EnableSapBwTracing を false に設定して、この高度なトレースを非アクティブ化してください。
CPIC トレースを使用して SAP BW の高度なトレースを収集する
認証またはシングル サインオン (SSO) の問題を調査している場合は、「SAP BW の高度なトレースを収集する」で説明されている手順 (手順 2d を除く) を使用して、次の追加システム変数と値を入力します。
- CPIC_TRACE—3
- CPIC_TRACE_DIR— E:\traces\CPIC などの有効なフォルダー
残りの手順は変わりません。 CPIC_TRACE_DIR 環境変数で指定したフォルダーにある CPIC トレースを表示できます。 SapBw フォルダーにある通常のトレースを表示することもできます。
また、完了したら、環境変数を削除するか、BI_EnableSapBwTracing を false に、CPIC_TRACE を 0 に設定して、この高度なトレースを非アクティブ化してください。
SAP .NET コネクタのクリーン インストールを実行する
SAP .NET コネクタの再インストールが必要になった場合は、以下を行います。
SAP .NET コネクタを削除 (アンインストール) します。
削除した後、次のパスが存在しないか DLL が含まれていないことを確認して、SAP .NET コネクタがグローバル アセンブリ キャッシュ (GAC) にインストールされていないことを確認します。
32 ビット GAC:
C:\Windows\Microsoft.NET\assembly\GAC_32\sapnco\v4.0_3.0.0.42__50436dca5c7f7d23
C:\Windows\Microsoft.NET\assembly\GAC_32\sapnco_utils\v4.0_3.0.0.42__50436dca5c7f7d23
64 ビット GAC:
C:\Windows\Microsoft.NET\assembly\GAC_64\sapnco\v4.0_3.0.0.42__50436dca5c7f7d23
C:\Windows\Microsoft.NET\assembly\GAC_64\sapnco_utils\v4.0_3.0.0.42__50436dca5c7f7d23
バイナリが Program Files に含まれていないことを確認します。 次の場所が存在しないか、空であることを確認します。
C:\Program Files\SAP\SAP_DotNetConnector3_Net40_x64
C:\Program Files (x86)\sap\SAP_DotNetConnector3_Net40_x86
コネクタを再インストールします。このとき、[GAC にアセンブリをインストールする] オプションを必ず選択します。 最新の 3.0.23 を使用することをお勧めします。
エラー メッセージのトラブルシューティング
SAP BW ErrorCode メソッドが見つかりません
Method not found: 'Int32 SAP.Middleware.Connector.RfcBaseException.get_ErrorCode()'
このエラーは、SAP BW サーバーでエラーが発生し、SAP .NET コネクタがそのエラーに関する情報を取得しようとした場合にスローされます。 ただし、このエラーによって実際のエラーが隠されている可能性があります。 このエラーは、以下のような場合に発生します。
以前のバージョンの SAP .NET コネクタを使用している。
複数のバージョンの SAP .NET コネクタがインストールされている。
SAP .NET コネクタが 2 回 (グローバル アセンブリ キャッシュ (GAC) に 1 回、GAC 以外に 1 回) インストールされている。
「SAP .NET コネクタのクリーン インストールを実行する」の手順に従って、コネクタを再インストールします。
問題は解決されませんが、実際のエラーメッセージが表示されます。
例外: 'Microsoft.Mashup.Engine1.Library.SapBusinessWarehouse.
SapBwMicrosoftProviderFactoryService' のタイプ初期化子が例外をスローしました。
「SAP .NET コネクタのクリーン インストールを実行する」の手順に従って、コネクタを再インストールします。
このコネクタには、1 つまたは複数の追加コンポーネントが必要です
このエラーメッセージが表示された場合は、次のトラブルシューティング手順を実行します。
SAP .NET コネクタのバージョンが正しいビット長でインストールされていることを確認します。 Power BI Desktop 64 ビットがインストールされている場合は、64 ビットの SAP .NET コネクタがインストールされていることを確認してください。
SAP .NET コネクタのインストール中に、[GAC にアセンブリをインストールする] チェックボックスがオンになっていることを確認します。 GAC がインストールされていることを確認するには、エクスプローラーを開いて、次の場所に移動します。
C:\Windows\Microsoft.NET\assembly\GAC_64\sapnco
たとえば、完全パスは次のようになります。
C:\Windows\Microsoft.NET\assembly\GAC_64\sapnco\v4.0_3.0.0.42__50436dca5c7f7d23\sapnco.dll
32 ビット版の SAP .NET コネクタをインストールした場合は、C:\Windows\Microsoft.NET\assembly\GAC_32\sapnco\v4.0_3.0.0.42__50436dca5c7f7d23\sapnco.dll になります (32 ビット版の Power BI Desktop が必要です)。
GAC を確認するもう 1 つの方法は、gacutil (厳密な名前の署名を無効にするためのオプションの 1 つ) を使用することです。 これは、64 ビットのコマンド プロンプトから実行する必要があります。 GAC の内容を確認するには、コマンド プロンプトを開き、gacutil.exe パスに移動して次を実行します。
gacutil -l
たとえば、出力には以下が表示されます。
sapnco, Version=3.0.0.42, Culture=neutral, PublicKeyToken=50436dca5c7f7d23, processorArchitecture=AMD64 sapnco_utils, Version=3.0.0.42, Culture=neutral, PublicKeyToken=50436dca5c7f7d23, processorArchitecture=AMD64
"関数に対する RFC 認証がありません... *
実装 2.0 では、次の BAPI へのアクセス権が必要です。 解決するには、SAP Basis チームに連絡して、これらの BAPI と RFC に対するユーザーのアクセス許可を要求します。
接続:
- RFC_PING
- RFC_METADATA_GET
MDX の実行:
- RSR_MDX_CREATE_OBJECT
- BAPI_MDDATASET_CREATE_OBJECT
- BAPI_MDDATASET_SELECT_DATA
- BAPI_MDDATASET_DELETE_OBJECT
- RSR_MDX_GET_AXIS_INFO
- RSR_MDX_GET_AXIS_DATA
- RSR_MDX_GET_CELL_DATA
- BAPI_MDDATASET_GET_AXIS_INFO
- BAPI_MDDATASET_GET_AXIS_DATA
- BAPI_MDDATASET_GET_CELL_DATA
ExecutionMode のフラット化:
- RSR_MDX_GET_FLAT_DATA
- RSR_MDX_GET_FS_DATA
- BAPI_MDDATASET_GET_FLAT_DATA
- BAPI_MDDATASET_GET_FS_DATA
ExecutionMode のストリーミング:
- BAPI_MDDATASET_GET_STREAMDATA
- BAPI_MDDATASET_GET_STREAMINFO
ExecutionMode BasXml:
- RSR_MDX_BXML_GET_DATA
- RSR_MDX_BXML_GET_GZIP_DATA
- RSR_MDX_BXML_GET_INFO
- RSR_MDX_BXML_SET_BINDING
メタデータ:
- BAPI_MDPROVIDER_GET_DIMENSIONS
- BAPI_MDPROVIDER_GET_CATALOGS
- BAPI_MDPROVIDER_GET_CUBES
- BAPI_MDPROVIDER_GET_MEASURES
- BAPI_MDPROVIDER_GET_HIERARCHYS
- BAPI_MDPROVIDER_GET_LEVELS
- BAPI_MDPROVIDER_GET_PROPERTIES
- BAPI_MDPROVIDER_GET_MEMBERS
- BAPI_MDPROVIDER_GET_VARIABLES
[情報]:
- BAPI_IOBJ_GETDETAIL (型指定されたディメンション (DATS、TIMS) に必要)
- BAPI_USER_GET_DETAIL (インターフェイスのフラット化にのみ使用)
- RFC_READ_TABLE (カタログ名と特定の変数値呼び出しに必要)
基になる SAP .NET コネクタによって呼び出される場合がある:
- RFC_GET_FUNCTION_INTERFACE
- FUNCTION_IMPORT_INTERFACE
- DDIF_FIELDINFO_GET
- SYSTEM_FINISH_ATTACH_GUI
- BGRFC_DEST_CONFIRM
- BGRFC_CHECK_UNIT_STATE_SERVER
- BGRFC_DEST_SHIP
- ARFC_DEST_SHIP
- RFC_FUNCTION_SEARCH
- RFC_SYSTEM_INFO
- RFC_SET_REG_SERVER_PROPERTY
- RFC_DOCU
- SEO_GET_CLIF_REMOTE
- SYSTEM_PREPARE_ATTACH_GUI
- API_CLEAR_TID
- ARFC_DEST_CONFIRM
メソッドが見つかりません 'Int32 SAP.Middleware.Connector.RfcBaseException.get_ErrorCode()
SAP .NET コネクタが正しくインストールされていることを確認します。 「SAP .NET コネクタのクリーン インストールを実行する」を参照してください。
このエラーは、GAC にインストールされているバージョンが、期待される 3.0.18.0 バージョンよりも古い場合に表示されます。 このシナリオについては、SAP Note 2417315 で説明しています。
コネクタによって設定される接続文字列のプロパティ
SNC パートナー名 と SNC ライブラリの 両方 を指定すると、SAP BW アプリケーション サーバー コネクタ (実装 2.0) によって、次のプロパティが接続文字列に設定されます。
- SNC_MODE—SncModeApply
- SNC_LIB— 指定されたライブラリのパス: 環境変数の場合は、この時点で展開されます
- SNC_PARTNERNAME— 指定された値
- SNC_QOP = RfcConfigParameters.RfcSncQOP.Default
これらは、SAP BW アプリケーション サーバーと SAP BW メッセージ サーバーの両方の接続で使用されます。
どちらの接続の種類でも、コネクタによって次のように設定されます。
- LANG (言語)
- クライアント
SAP BW アプリケーション サーバー接続の場合、コネクタによって次のように設定されます。
- ASHOST (AppServerHost)
- SYSNR (SystemNumber)
SAP BW メッセージ サーバー接続の場合、コネクタによって次のように設定されます。
- MSHOST (MessageServerHost)
- SYSID (SystemID)
- GROUP (LogonGroup)
<internal> を含む無効な MDX コマンド
このエラーは、SAP BW サーバーから直接取得されます。 Netweaver RFC に基づくコネクタの実装 1 では、これらのエラーはユーザーに公開されていないため、代わりに空の結果セットが返されます。
この問題については、次の SAP Note で説明します。 これらの Note にアクセスするには、S-user である必要があります。 この問題に関連する修正プログラムを適用するには、SAP Basis チームに問い合わせてください。
- 1084454—MDX: 「<internal> を含む無効な MDX コマンド」というシステム エラー
- 1282785—MDX: 「<internal> を含む無効な MDX コマンド」というシステム エラー
- 401607— スライサーに CROSSJOIN を含む MDX コマンドで発生するエラー
- 1786009— 特殊文字を含むメンバー公式を使用した際の無効な MDX
また、その他の同様のエラーについては、次の SAP Note の内容を確認して、必要に応じて環境に適用することができます。
問題と制限事項
SAP キューブの変数名を変更すると、DirectQuery レポートが破損した回復不能な状態になる
次の症状が発生します。
エラー メッセージ —
[Expression.Error] The import [XXXX] matches no exports.
ログ内 —
Message: [Expression.Error] The key didn't match any rows in the table.
StackTrace:
at Microsoft.Mashup.Engine1.Runtime.TableValue.get_Item(Value key) at Microsoft.Mashup.Engine1.Library.Cube.CubeParametersModule.Cube.ApplyParameterFunctionValue.GetParameterValue(CubeValue cubeValue, Value parameter) at Microsoft.Mashup.Engine1.Library.Cube.CubeParametersModule.Cube.ApplyParameterFunctionValue.TypedInvoke(TableValue cube, Value parameter, Value arguments) Detail: [Key = [Id = \"[!V000004]\"], Table = #table({...}, {...})]
考えられる回避策の 1 つは次のとおりです。
PBIX ファイルのコピーを作成します (破損する可能性があるため)。
値を true に設定して PBI_AlwaysEnableQueryEditor という環境変数を追加します。 この設定により、DirectQuery モードでもクエリ エディターへのアクセスが許可されます。
Note
この環境変数はサポートされていないため、ここで説明されている方法でのみ使用してください。
"Cube" クエリを右クリックし、[詳細エディター] を選択します。
クエリには、"{Cube.ApplyParameter, "[!V000004]" (不足パラメーター)" で始まる行があります。 その行を削除します。
完了 を選択します。
Power Query エディターを閉じます。
影響を受けるビジュアルを更新します。
前述の回避策が機能しない場合、レポートを再作成する必要があります。
SAP BW の数値データ
Note
次の情報は、SAP BW コネクタの実装 1.0 またはフラット化モード (ExecutionMode = 67 の場合) で SAP BW コネクタの実装 2.0 を使用する場合にのみ適用されます。
SAP BW のユーザー アカウントには、SAP GUI でユーザーに表示する際に 10 進数または日付/時刻の値をどのように書式設定するかに関する既定の設定があります。
既定の設定は、SAP システム内のアカウントのユーザー プロファイルに保持されます。ユーザーは、メニュー パス [システム] > [ユーザー プロファイル] > [データ] を指定することで、これらの設定を SAP GUI に表示したり、変更したりできます。
Power BI Desktop では、接続されているユーザーの 10 進数表記が SAP システムに照会され、その表記を使用して、SAP BW のデータの 10 進値が書式設定されます。
SAP BW は、小数点として ,
(カンマ) または .
(ドット) のいずれかを使用して、10 進数データを返します。 これらの SAP BW のどれを小数点として使用するかを指定するには、Power BI Desktop が使用するドライバーを BAPI_USER_GET_DETAIL
に呼び出します。 この呼び出しは、Decimal Format 表記を格納する DCPFM
というフィールドを持つ、DEFAULTS
という構造を返します。 フィールドは、次のいずれかの値を取得します。
- ' ' (space) = Decimal point is comma: N.NNN,NN
- 'X' = Decimal point is period: N,NNN.NN
- 'Y' = Decimal point is N NNN NNN,NN
この問題を報告した顧客は、特定のユーザーによる BAPI_USER_GET_DETAIL
の呼び出しが失敗し、不正なデータと次のようなエラー メッセージが表示されることを示しています。
You are not authorized to display users in group TI:
<item>
<TYPE>E</TYPE>
<ID>01</ID>
<NUMBER>512</NUMBER>
<MESSAGE>You are not authorized to display users in group TI</MESSAGE>
<LOG_NO/>
<LOG_MSG_NO>000000</LOG_MSG_NO>
<MESSAGE_V1>TI</MESSAGE_V1>
<MESSAGE_V2/>
<MESSAGE_V3/>
<MESSAGE_V4/>
<PARAMETER/>
<ROW>0</ROW>
<FIELD>BNAME</FIELD>
<SYSTEM>CLNTPW1400</SYSTEM>
</item>
このエラーを解決するには、Power BI で使用されている SAP BW ユーザーに BAPI_USER_GET_DETAIL
の実行権限を付与するよう、SAP 管理者に依頼する必要があります。 また、このトラブルシューティング ソリューションで前述したように、必要な DCPFM
値をユーザーが保持していることを確認します。
SAP BEx クエリの接続
次の図に示すように、Power BI Desktop で特定のプロパティを有効にすることで、BEx クエリを実行できます。
MDX インターフェイスの制限
MDX インターフェイスの制限は、長い変数が技術名を失い、V00000# に置き換えられるという点です。
[ナビゲーター] ウィンドウにデータ プレビューがない
[ナビゲーター] ダイアログ ボックスにデータ プレビューが表示されず、代わりに オブジェクト参照がオブジェクトのインスタンスに設定されていません というエラー メッセージが表示される場合があります。
SAP ユーザーは、メタデータを取得し、SAP BW の InfoProviders からデータを取得するために、特定の BAPI 関数モジュールにアクセスする必要があります。 これらのモジュールは次のとおりです。
- BAPI_MDPROVIDER_GET_CATALOGS
- BAPI_MDPROVIDER_GET_CUBES
- BAPI_MDPROVIDER_GET_DIMENSIONS
- BAPI_MDPROVIDER_GET_HIERARCHYS
- BAPI_MDPROVIDER_GET_LEVELS
- BAPI_MDPROVIDER_GET_MEASURES
- BAPI_MDPROVIDER_GET_MEMBERS
- BAPI_MDPROVIDER_GET_VARIABLES
- BAPI_IOBJ_GETDETAIL
この問題を解決するには、ユーザーがさまざまな MDPROVIDER モジュールと BAPI_IOBJ_GETDETAIL
にアクセスできることを確認します。 この問題または同様の問題をさらにトラブルシューティングするには、トレースを有効にします。 ファイル>オプションと設定>オプション の順に選択します。 [オプション] で、[診断] > [トレースを有効化] の順に選択します。 トレースがアクティブなときに SAP BW からデータを取得し、トレース ファイルで詳細を調べます。
メモリの例外
場合によっては、次のいずれかのメモリ エラーが発生することがあります。
Message: No more memory available to add rows to an internal table.
Message: [DataSource.Error] SAP Business Warehouse: The memory request for [number] bytes could not be complied with.
Message: The memory request for [number] bytes could not be complied with.
これらのメモリ例外は SAP BW サーバーから発行され、サーバーでクエリの処理に使用可能なメモリが不足していることによります。 これは、クエリによって大きな結果セットが返される場合や、サーバーが処理するにはクエリが複雑すぎる場合 (クエリに多数のクロス結合があるときなど) に発生する可能性があります。
このエラーを解決するには、クエリを簡略化するか小さなクエリに分割することをお勧めします。 可能であれば、さらに集計をサーバーにプッシュします。 または、SAP Basis チームに連絡して、サーバーで使用可能なリソースを増やしてください。
Power BI Desktop で 60 文字を超えるテキスト文字列の読み込みが失敗する
場合によっては、Power BI Desktop でテキスト文字列が 60 文字に切り詰められることがあります。
最初に、「2777473 - MDX: Power BI による BW または BW/4HANA へのアクセスに関するよくあるご質問」の手順に従って、問題が解決されるかどうかを確認します。
Power Query SAP Business Warehouse コネクタでは、サードパーティのアクセスに、SAP によって提供される MDX インターフェイスが使用されます。このため、MDX インターフェイスと SAP BW サーバーの間のレイヤーを所有している SAP に、考えられるソリューションについて問い合わせる必要があります。 特定のシナリオに [long text is XL] を指定する方法を確認します。
SAP BW の "Long Text" に関わらず CHAR 制限は 60
SAP BW の「Long Text」特性が Power BI で 60 文字の制限で表示されるという既知の制限があります。 この文字制限は MDX インターフェイスの制限によるものです。現在発表されている有効な回避策はありません。 SAP は、この MDX の制限事項をこの SAP Note に記載しています。
Direct Query を使用する場合の実装 2.0 への移行
SAP Business Warehouse コネクターの実装 1.0 の廃止により、実装 2.0 を利用するためにクエリの更新が必要になる場合があります。 Direct Query を使用する場合、クエリ エディターへのアクセスは制限されます。 そのため、クエリ全体を再作成しないと、実装 2.0 に簡単に移行することはできません。 回避策として、クエリ エディターへのアクセスを許可するシステム環境変数の追加が挙げられます。 次の手順は公式にはサポートされていないため、ここで説明するとおりにのみ使用してください。
- 新しい環境変数を作成するには、[ファイル エクスプローラー]> > [この PC]> > [プロパティー]> > [詳細なシステム設定]> > [環境変数]> > [システム変数]> > [新規作成] の順に選択するか、コマンド プロンプトを開き、
sysdm.cpl
を入力して、[システム変数] の [新規作成] を選択します。 - 環境変数
PBI_AlwaysEnableQueryEditor
に名前を付けて、値true
を設定します。 この変数設定により、Direct Query モードでもクエリ エディターにアクセスできます。 - Power BI Desktop の[ホーム] タブで、[データを変換] を選択して、Power Query エディターを開きます。
- 次の手順 (この記事の手順 2) を実行して、実装 2.0 を使用してクエリを更新します。
End クエリは、SapBusinessWarehouse.Cubes("server", "system", "clientId", [Implementation = "2.0"])
のようになります。