Teilen über


Behandeln von Problemen mit dem Datenanbieter für SAP

In diesem Abschnitt wird die Verwendung von Problembehandlungstechniken zum Beheben von Betriebsfehlern erläutert, die bei der Verwendung .NET Framework-Datenanbieters für mySAP Business Suite auftreten können.

Unbekannter Parameterfehler beim Verwenden des Datenanbieters für SAP

Problem

Der Datenanbieter für SAP gibt den folgenden Fehler aus:

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

Ursache

Die benutzerdefinierte RFC-Z_EXTRACT_DATA_OO, die in Ihrem SAP-System installiert ist, ist nicht die neueste. Der Datenanbieter für SAP verwendet einen benutzerdefinierten RFC Z_EXTRACT_DATA_OO, um SELECT-Vorgänge für die SAP-Tabelle auszuführen.

Lösung

Sie müssen den benutzerdefinierten RFC auf die neueste verfügbare Version aktualisieren. Dieser RFC, Z_EXTRACT_DATA_OO, ist mit der adapterpacknoversion verfügbar. Weitere Informationen zum Installieren und Deinstallieren des benutzerdefinierten RFC finden Sie unter Installieren von benutzerdefinierten RFCs für den Datenanbieter für SAP.

Ausnahmen mit nicht genügend Arbeitsspeicher beim Auswählen von Daten aus einer SAP-Tabelle

Problem

Der Datenanbieter für SAP löst beim Auswählen von Daten aus einem SAP-System eine Ausnahme ohne Arbeitsspeicher aus.

Ursache

Standardmäßig ruft der Datenanbieter für SAP 10.000 Zeilen gleichzeitig ab. Außerdem wird jeder Batch von Zeilen, die aus dem SAP-System abgerufen werden, im Arbeitsspeicher gespeichert. Also:

  • Wenn die Tabelle, aus der Daten abgerufen werden, eine große Anzahl von Zeilen enthält, oder

  • Wenn die Tabelle Spalten von Datentypen enthält, die eine erhebliche Menge an Arbeitsspeicher verbrauchen,

    Der Arbeitsspeicherverbrauch des Datenanbieters für SAP nimmt erheblich zu und kann zu einer Ausnahme ohne Arbeitsspeicher führen.

    Auflösung

    Sie können die maximale Anzahl von Zeilen ändern, die aus dem SAP-System abgerufen werden. Hierzu können Sie eine Option "batchsize" mit der SELECT-Anweisung angeben. Beispiel:

SELECT * FROM <tablename> OPTION 'batchsize 1000'  

Der Datenanbieter für SAP ruft jetzt nur noch 1.000 Zeilen gleichzeitig ab und verbraucht daher keine große Arbeitsspeichermenge.

Ausnahme beim Ausführen einer Abfrage, die Parameter mit Datumswerten akzeptiert

Problem

Sie erhalten die folgende Ausnahme, wenn Sie eine Abfrage mit dem EXECQUERY-Befehl ausführen, der über einen Parameter verfügt, der einen Datumswert annimmt:

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

Ursache

Beim Ausführen von Abfragen mit dem EXECQUERY-Befehl müssen Sie immer Datumswerte im JJJJMMDD-Format angeben.

Auflösung

Stellen Sie sicher, dass Sie Datumswerte im JJJJMMDD-Format angeben. Beispiel:

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

NO_VARIANT Ausnahme, die Abfragen mithilfe des EXECQUERY-Befehls ausführt

Problem

Die folgende Ausnahme wird angezeigt, wenn Sie eine Abfrage mit dem EXECQUERY-Befehl ausführen:

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

Ursache

Es kann zwei mögliche Ursachen für diese Ausnahme geben:

  1. Die Abfrage, die Sie ausführen möchten, verfügt über im SAP-System definierte Varianten. Varianten beziehen sich auf einen gespeicherten Satz von Auswahlkriterien, die Sie beim Ausführen einer SAP-Abfrage angeben können. Sie können beispielsweise Varianten verwenden, um Standardwerte für Abfragen anzugeben.

  2. Für die Abfrage, die Sie ausführen möchten, ist weder eine Variante definiert, noch wird erwartet, dass ein Parameterwert übergeben wird.

    Auflösung

  3. Stellen Sie für Grund 1 sicher, dass Sie den Namen der Variante angeben, die der Abfrage zugeordnet ist. Beispiel:

    EXECQUERY ZTEST3 @USERGROUP='SYSTQV000024', @variant =  ‘variant1’  
    
  4. Stellen Sie für Grund 2 sicher, dass Sie einen Dummyparameternamen und -wert angeben, während Sie den Abfragebefehl angeben. Wenn für die Abfrage "myquery" beispielsweise kein Parameter für die Ausführung erforderlich ist, muss der EXECQUERY-Befehl wie folgt angegeben werden:

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

Weitere Informationen

Problembehandlung für den SAP-Adapter