Dieser Abschnitt beschreibt die Verwendung der ReadTable-Klasse.
Eine oft wiederkehrende Aufgabe bei der Arbeit mit .NET und SAP ist das direkte Lesen von Daten aus der SAP-Datenbank.
Die Klasse ReadTable ermöglicht den Zugriff auf diese Daten.
Hinweis: Der SAP-Standardbaustein RFC_READ_TABLE zur Tabellenextraktion ist nicht für Massendatenextraktion geeignet, siehe Einschränkungen beim Tabellenzugriff.
Daten aus Tabellen auslesen #
Das folgende Beispiel zeigt, wie Sie die ReadTable-Klasse verwenden, um eine Selektion auf eine Tabelle zu erstellen und die zurückgegebenen Daten in Form einer ADO-DataTable auswerten.
- Im dem Beispiel werden Materialtexte aus der Tabelle MAKT ausgelesen. Benötigt werden die beiden Spalten MATNR (Materialnummer) und MAKTX (Materialtext).
- Um nur die englischen Textbausteine auszulesen, schränken Sie die Selektion mit dem WHERE-Kriterium
SPRAS = 'EN'
ein (SPRAS ist die Spalte für den Sprachenschlüssel).
static void Main(string[] args)
{
using (R3Connection con = new R3Connection("SAPServer", 00, "SAPUser", "Password", "EN", "800"))
{
ERPConnect.LIC.SetLic("LicenseNumber");
con.Open(false);
ReadTable table = new ReadTable(con);
table.AddField("MATNR");
table.AddField("MAKTX");
table.WhereClause = "SPRAS = 'EN' AND MATNR LIKE '%23'";
table.TableName = "MAKT";
table.RowCount = 10;
table.Run();
DataTable resulttable = table.Result;
for (int i = 0; i < resulttable.Rows.Count; i++)
{
Console.WriteLine(
resulttable.Rows[i]["MATNR"].ToString() + " " +
resulttable.Rows[i]["MAKTX"].ToString());
}
Console.ReadLine();
}
}
Der folgende Screenshot zeigt die Konsolenausgabe des Beispielprogramms.
Einschränkungen beim Tabellenzugriff #
Bei der Extraktion von Tabellen aus älteren SAP-Systemen können Sie bei der Verwendung des SAP-Standardfunktionsbausteins (RFC_READ_TABLE) auf folgende Einschränkungen stoßen:
- Die Gesamtbreite der zu extrahierenden Spalten darf 512 Bytes nicht überschreiten
- Fehler können auftreten bei der Extraktion von Tabellen, die eine oder mehrere Spalten vom Typ f (FLTP, floating point), DEC (Decimal und Prozentzahl z.B.) oder x (RAW, LRAW) haben.
- Schlechte Extraktionsperformance bei Extraktion großer Tabellen.
Warnung! Error while converting value ‘*.0’ of row 1530, column 3
Der SAP-Standardbaustein RFC_READ_TABLE zur Tabellenextraktion kann den ABAP-Datentyp DEC nur bedingt extrahieren. Dies führt zu dem genannten Beispielfehler bei der Extraktion.