Share via


SAP Business Warehouse 連接器疑難解答

本文提供使用 SAP Business Warehouse (BW) 連接器的疑難解答情況(以及可能的解決方案)。

收集 SAP BW 進階追蹤

注意

收集傳送至 SAP BW 伺服器的查詢追蹤,需要一些只能使用 Power BI Desktop 提供的選項和設定。 如果您還沒有 Power BI Desktop 的複本,您可以在 Microsoft 下載中心取得複本。 您可以使用這個免費版本來設定進階追蹤的所有必要選項和設定。

錯誤發生多次時,收集傳送至 SAP BW 伺服器及其回應的查詢追蹤可能很有利。 下列程式示範如何針對使用 SAP BW 連接器所發生的問題設定進階追蹤。

  1. 如果 Power BI Desktop 正在執行,請關閉它。

  2. 建立新的環境變數:

    1. 從 Windows 控制台,選取 [系統>進階系統 設定]。

      您也可以開啟 命令提示字元 並輸入 sysdm.cpl

    2. [系統屬性] 中,選取 [進階] 索引標籤,然後選取 [環境變數]。

    3. 在 [環境變數] 的 [系統變數] 底下,選取 [新增]。

    4. [新增系統變數] 的 [變數名稱] 下,輸入 PBI_EnableSapBwTracing,然後在 [變數] 值輸入 true

    5. 選取 [確定]。

    啟用此進階追蹤時,將會在 Traces 資料夾中建立名為 SapBw 的其他資料夾。 如需 Traces 資料夾的位置,請參閱此程式的其餘部分

  3. 開啟 Power BI Desktop。

  4. 在擷取之前清除快取。

    1. 在 Power BI Desktop 中,選取 [ 檔案] 索引標籤
    2. 選取 [選項和設定>選項]。
    3. 在 [全域設定] 下,選擇 [數據載入]。
    4. 選取清除快取
  5. 當您仍在 [選項] 和 [設定] 中時,請啟用追蹤。

    1. 在 [全域設定] 下,選擇 [診斷]。
    2. 選取 [ 啟用追蹤]。
  6. 當您仍在 [選項] 和 [全域>診斷] 設定>時,請選取 [開啟損毀傾印/追蹤] 資料夾。 在擷取新的追蹤之前,請確定資料夾已清除。

  7. 重現問題。

  8. 完成後,請關閉 Power BI Desktop,以便將記錄排清到磁碟。

  9. 您可以在 SapBw 資料夾下檢視新擷取的追蹤(包含 SapBw 資料夾的 Traces 資料夾,方法是在 Power BI Desktop 的 [診斷] 頁面上選取 [開啟損毀傾印/追蹤] 資料夾

  10. 拿掉環境變數或將PBI_EnableSapBwTracing設定為 false,請務必停用此進階追蹤。

使用 CPIC 追蹤收集 SAP BW 進階追蹤

如果您要調查驗證或單一登錄問題,請使用與收集 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 連接器:

  1. 拿掉 SAP .NET 連線 or。

  2. 移除之後,請確認 SAP .NET 連線 or 未安裝在全域程式集緩存 (GAC),方法是確定下列路徑不存在或不包含 DLL:

    • 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

  3. 確認二進位檔不在 Program Files。 請確定下列位置不存在或空白:

    C:\Program Files\SAP\SAP_DotNet連線 or3_Net40_x64

    C:\Program Files (x86)\sap\SAP_DotNet連線 or3_Net40_x86

  4. 重新安裝連接器,並記得選取 [ 將元件安裝至 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 連接器已安裝兩次,一次安裝在全域程式集緩存中,一次不在 GAC 中。

請依照執行 SAP.NET 連接器全新安裝下的指示重新安裝連接器。

這無法解決問題,但會提供實際的錯誤訊息。

例外狀況:'Microsoft.Mashup.Engine1.Library.SapBusinessWarehouse 的類型初始化表達式。
SapBwMicrosoftProviderFactoryService' 擲回例外狀況。

請依照執行 SAP.NET 連接器全新安裝下的指示重新安裝連接器。

此連接器需要一或多個額外的元件

如果您收到此錯誤訊息,請使用下列疑難解答步驟:

  1. 確認 SAP .NET 連接器的版本已安裝在正確的位長度中。 如果您已安裝 Power BI Desktop 64 位,請確定您已安裝 64 位 SAP .NET 連接器。

  2. 確認在安裝 SAP .NET 連線 or 時,已檢查 [將元件安裝至 GAC]。 若要確認 GAC 已安裝,請開啟 Windows 檔案總管並移至:

          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 的另一種方式是使用 gacutil(停用強名稱簽署的選項之一)。 您必須從 64 位命令提示字元執行它。 您可以開啟命令提示字元,瀏覽至gacutil.exe路徑並執行,以檢查 GAC 的內容:

      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 需要存取下列 BAPIs。 若要解決此問題,請連絡 SAP Basis 小組,並要求使用者對這些 BAPIs 和 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 的方法。中間件。連線 or。RfcBaseException.get_ErrorCode()

確認 SAP .NET 連接器已正確安裝。 請參閱執行 SAP.NET 連接器的全新安裝。

當 GAC 中已安裝的版本低於預期的 3.0.18.0 版本時,就會出現此錯誤。 SAP 附註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)

具有內部的 <MDX 命令無效>

此錯誤直接來自 SAP BW 伺服器。 以 Netweaver RFC 為基礎的連接器實作 1 並未向使用者公開這些錯誤,而是傳回空的結果集。

此問題會在下列 SAP 附注中討論。 存取這些附註需要 S-user。 請連絡您的 SAP Basis 小組,以套用此問題的相關修正程式。

此外,針對其他類似的錯誤,您可以檢閱下列 SAP 附注的內容,並根據您的環境適當套用它們:

問題和限制

變更 SAP Cube 上的變數名稱會使 DirectQuery 報表處於中斷且無法復原的狀態

發生下列徵兆:

  • 錯誤訊息—[Expression.Error] The import [XXXX] matches no exports.

  • 在記錄中-Message: [Expression.Error] The key didn't match any rows in the table.

  • 堆疊追蹤:

    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 檔案的複本(因為情況可能會中斷)。

  2. 新增名為 PBI_AlwaysEnableQueryEditor 且值為 true 的環境變數。 即使在 DirectQuery 模式中,此設定也會允許存取查詢編輯器。

    注意

    不支援此環境變數,因此應該只如這裡所述使用。

  3. 以滑鼠右鍵按兩下 [Cube] 查詢,然後選取 [進階編輯器]。

  4. 查詢應該有一行開頭為 “{Cube.ApplyParameter,”[!V000004]“ (遺漏的參數)”。 拿掉該行。

  5. 選取完成

  6. 關閉 Power Query 編輯器。

  7. 重新整理受影響的視覺效果。

如果上述因應措施無法運作,唯一的替代修正是讓您重新建立報表。

SAP BW 的數值數據

注意

下列資訊僅適用於使用 SAP BW 連接器的實作 1.0 或 SAP BW 連接器的實作 2.0 搭配扁平化模式時(當 ExecutionMode=67 時)。

SAP BW 中的使用者帳戶對於在 SAP GUI 中向使用者顯示時,如何格式化十進位或日期/時間值的預設設定。

默認設定會保留在帳戶使用者配置檔的 SAP 系統中,而且使用者可以使用 [系統>使用者配置檔>擁有資料] 選單路徑,在 SAP GUI 中檢視或變更這些設定。

十進位表示法設定功能表。

Power BI Desktop 會查詢 SAP 系統以取得連線使用者的十進位表示法,並使用該表示法來格式化 SAP BW 數據中的十進位值。

SAP BW 會以 , (逗號) 或 . [點] 作為小數分隔符傳回十進位數據。 若要指定哪些 SAP BW 應該用於小數分隔符,Power BI Desktop 所使用的驅動程式會呼叫 BAPI_USER_GET_DETAIL。 此呼叫會傳回名為 DEFAULTS的結構,其具有稱為 DCPFM 的字段,其會儲存 十進位格式表示法。 欄位會採用下列其中一個值:

  • ' ( 空格 ) = 小數點為逗號:N.NNN,NN
  • 'X' = 小數點為句點:N,NNN.NN
  • 'Y' = 小數點為 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>

若要解決此錯誤,用戶必須要求其 SAP 系統管理員授與 Power BI 中使用的 SAP BW 使用者執行 BAPI_USER_GET_DETAIL許可權。 也值得確認使用者具有必要 DCPFM 值,如此疑難解答解決方案稍早所述。

SAP BEx 查詢的 連線 性

您可以啟用特定屬性,在 Power BI Desktop 中執行 BEx 查詢,如下圖所示:

啟用外部存取的發行。

MDX 介面限制

MDX 介面的限制是,長變數會遺失其技術名稱,並以 V00000#取代。

[導覽器] 視窗中沒有數據預覽

在某些情況下,[ 導覽器 ] 對話框不會顯示數據預覽,而是提供 未設定為物件錯誤訊息實例的對象 參考。

SAP 使用者需要存取特定的 BAPI 函式模組,以取得元數據,並從 SAP BW 的 InfoProviders 擷取數據。 這些模組包括:

  • 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 中的指示 :P ower BI 存取 BW 或 BW/4HANA 的常見問題,並查看這是否解決了您的問題。

因為 Power Query SAP Business Warehouse 連接器使用 SAP 所提供的 MDX 介面進行第三方存取,所以您必須連絡 SAP 以取得可能的解決方案,因為它們擁有 MDX 介面與 SAP BW 伺服器之間的層。 詢問如何為特定案例指定「長文字為 XL」。

顯示要設定長文字的位置為 xl 設定的影像。

儘管 SAP BW 中有「長文字」,但 CHAR 限制為 60

有一個已知的限制,其中 SAP BW 中的「長文字」特性在 Power BI 中出現 60 個字元的限制。 此字元限制是由於 MDX 介面的限制,而且沒有已知的因應措施可用。 SAP 已記錄此 SAP 附註中的此 MDX 限制。

使用直接查詢時移轉至實作 2.0

由於 SAP Business Warehouse 連接器的實作 1.0 已淘汰,您可能需要更新查詢,以利用實作 2.0。 當您使用直接查詢時,查詢編輯器的存取會受到限制。 因此,您無法輕鬆地轉換至實作 2.0,而不需要重新建立整個查詢。 因應措施是新增系統環境變數,以允許存取查詢編輯器。 請注意,下列步驟並未正式支援,且只應如這裡所述使用。

  1. 流覽至 [檔案總管>],建立新的環境變數:[計算機>屬性>][進階系統設定>][環境變數>系統變數>新增],或開啟命令提示字元,然後選取 sysdm.cpl[系統變數] 下的 [新增]。
  2. 將環境變數 PBI_AlwaysEnableQueryEditor 命名為 ,並設定值 true。 此變數設定允許即使在直接查詢模式中存取查詢編輯器。
  3. 在 Power BI Desktop 的 [首頁] 索引標籤中,選取 [轉換數據] 以開啟 Power Query 編輯器。
  4. 遵循下列 指示,從該文章中的步驟 2 開始,更新查詢以使用實作 2.0。

您的結束查詢看起來應該類似 SapBusinessWarehouse.Cubes("server", "system", "clientId", [Implementation = "2.0"])