共用方式為


針對 Data Provider for SAP 的問題進行疑難排解

本節討論如何使用疑難排解技術來解決您在使用 mySAP Business Suite .NET Framework Data Provider 時可能會遇到的操作錯誤。

使用 Data Provider for SAP 的未知參數錯誤

問題

Data Provider for SAP 提供下列錯誤:

Microsoft.Data.SAPClient.SAPException: Failed to retrieve data from SAP server --- > Microsoft.ServiceModel.Channels.Common.XmlReaderParsingException: Unknown Parameter OUT_ZDATATABLE.  

原因

SAP 系統中安裝的自訂 RFC Z_EXTRACT_DATA_OO不是最新的。 適用于 SAP 的資料提供者會使用自訂 RFC Z_EXTRACT_DATA_OO,在 SAP 資料表上執行 SELECT 作業。

解決方法

您必須將自訂 RFC 更新為最新的可用版本。 此 RFC Z_EXTRACT_DATA_OO可搭配 adapterpacknoversion 使用。 如需如何安裝和卸載自訂 RFC 的詳細資訊,請參閱 安裝適用于 SAP 的資料提供者的自訂 RFC

從 SAP 資料表選取資料時記憶體不足例外狀況

問題

從 SAP 系統選取資料時,適用于 SAP 的資料提供者會擲回記憶體不足例外狀況。

原因

根據預設,適用于 SAP 的資料提供者一次擷取 10,000 個數據列。 此外,從 SAP 系統擷取的每個資料列批次都會儲存在記憶體中。 所以,

  • 如果要從中擷取資料的資料表包含大量資料列,或

  • 如果資料表包含耗用大量記憶體之資料類型的資料行,

    Data Provider for SAP 的記憶體耗用量會大幅增加,而且可能會導致記憶體不足例外狀況。

    解決方法

    您可以變更從 SAP 系統擷取的資料列數目上限。 您可以使用 SELECT 語句來指定 'batchsize' 選項來執行此動作。 例如:

SELECT * FROM <tablename> OPTION 'batchsize 1000'  

適用于 SAP 的資料提供者現在一次只會擷取 1000 個數據列,因此不會耗用大量的記憶體。

執行採用日期值之參數的查詢時發生例外狀況

問題

當您使用 EXECQUERY 命令執行查詢時,會取得下列例外狀況,該命令具有採用日期值的參數:

ErrorCode=RFC_SYS_EXCEPTION. ErrorGroup=RFC_ERROR_SYSTEM_FAILURE.   
SapErrorMessage=Enter date in the format __.__.____.  

原因

使用 EXECQUERY 命令執行查詢時,您必須一律以 YYYYMMDD 格式指定日期值。

解決方法

請務必以 YYYYMMDD 格式指定日期值。 例如:

EXECQUERY ZTEST3 @USERGROUP='SYSTQV000024', @P1='20080606'  

使用 EXECQUERY 命令執行查詢NO_VARIANT例外狀況

問題

當您使用 EXECQUERY 命令執行查詢時,會收到下列例外狀況:

Exception: Details: ErrorCode=RFC_EXCEPTION. ErrorGroup=RFC_ERROR_APPLICATION_EXCEPTION. SapErrorMessage=NO_VARIANT.  
AdapterErrorMessage=Error returned by RfcCallReceiveEx while calling RFC: <RFC name>  

原因

此例外狀況可能有兩個原因:

  1. 您嘗試執行的查詢在 SAP 系統中定義了變體。 Variant 是指在執行 SAP 查詢時可以指定的一組已儲存選取準則。 例如,您可以使用變體來指定查詢的預設值。

  2. 您嘗試執行的查詢未定義變體,也不會預期會傳遞參數值。

    解決方法

  3. 基於原因 1,請確定您指定與查詢相關聯的變體名稱。 例如:

    EXECQUERY ZTEST3 @USERGROUP='SYSTQV000024', @variant =  ‘variant1’  
    
  4. 基於原因 2,請確定您在指定查詢命令時提供虛擬參數名稱和值。 例如,如果 「myquery」 查詢不需要執行任何參數,則必須將 EXECQUERY 命令指定為:

    EXECQUERY myquery @usergroup='mygroup',@P1 = 'dummy_value'  
    

另請參閱

針對 SAP 配接器進行疑難排解