Direktes Lesen auf SAP-Tabellen 
From Theobald Software
Eine oft wiederkehrende Aufgabe in der täglichen Arbeit mit .net und SAP ist das direkte Lesen von Daten aus der SAP-Datenbank.
Diesem Anspruch wird die Klasse ReadTable gerecht.
Wie das folgende Beispiel zeigt, ist es mit wenigen Zeilen Code möglich, eine Selektion auf eine Tabelle zu erstellen und die zurückgegebenen Daten in Form einer wohlbekannten ADO-DataTable auszuwerten.
Beispiel
Im folgenden Beispiel sollen Materialtexte ausgelesen werden. Diese befinden sich in der Tabelle MAKT. Benötigt werden die beiden Spalten MATNR (Materialnummer) und der Text (Spalte MAKTX). Da wir nur die deutschen Textbausteine auslesen möchten, schränken wir die Selektion mit dem Kriterium SPRAS = 'DE' ein. SPRAS ist die Spalte für den Sprachenschlüssel in der Tabelle MAKT. Das Bild unten zeigt die Konsolenausgabe des Beispielprogramms.
[C#]
using System; using ERPConnect; using System.Data; class Class1 { static void Main(string[] args) { R3Connection con = new R3Connection("hamlet",11,"theobald","pw","DE","800"); con.Open(false); ERPUtils.ReadTable table = new ERPUtils.ReadTable(con); table.AddField("MATNR"); table.AddField("MAKTX"); table.AddCriteria("SPRAS = 'DE'"); 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(); } }
[VB]
Imports ERPConnect Imports System.Data Module Module1 Sub Main() Dim con As New R3Connection con.Host = "Hamlet" con.SystemNumber = 11 con.UserName = "Theobald" con.Password = "pw" con.Client = "800" con.Language = "DE" con.Open(False) Dim table As New ERPUtils.ReadTable(con) table.AddField("MATNR") table.AddField("MAKTX") table.AddCriteria("SPRAS = 'DE'") table.TableName = "MAKT" table.RowCount = 10 table.Run() Dim resulttable As DataTable resulttable = table.Result Dim i As Integer For i = 0 To resulttable.Rows.Count - 1 Console.WriteLine( _ CStr(resulttable.Rows(i)(0)) + " " + _ CStr(resulttable.Rows(i)(1))) Next Console.ReadLine() End Sub End Module



