Datenpakete mit der ReadTable-Klasse 
From Theobald Software
|
|
Ab einer gewissen Anzahl an Zeilen (je nach SAP-System zwischen 100.000 und 1.000.000) ist es nicht mehr möglich, alle gewünschten Zeilen mit der ReadTable-Klasse in einem Rutsch zu holen.
Aus diesem Grund bietet die ReadTable-Klasse eine so genannten Paketierung an, die wie folgt angewendet werden kann:
- Setzen Sie die Eigenschaft PackageSize auf einen Wert, der größer 0 ist, damit wird die Paketierung eingeschaltet.
- Setzen Sie RaiseIncomingPackageEvent auf true, um zu definieren, dass Sie die einzelnen Pakete über ein Ereignis verarbeiten möchten.
- Implementieren Sie das Ereignis IncomingPackage, um ein einzelnes Datenpaket zu prozessieren. Das Paket wird jeweils als DataTable übergeben.
Beispiel:
[C#]
static void Main(string[] args) { R3Connection con = new R3Connection("XXX", 11, "XXX", "XXX", "DE", "800"); con.Open(); ReadTable read = new ReadTable(con); read.PackageSize = 10000; read.RaiseIncomingPackageEvent = true; read.TableName = "MKPF"; read.IncomingPackage += new ReadTable.OnIncomingPackage(read_IncomingPackage); read.Run(); Console.WriteLine("Press enter to exit"); Console.ReadLine(); } static void read_IncomingPackage(ReadTable Sender, DataTable PackageResult) { Console.WriteLine("Processing data package with " + PackageResult.Rows.Count.ToString() + " rows"); }
[VB]
Imports ERPConnect Imports ERPConnect.Utils Module Module1 Dim con As New R3Connection("xxx", 7, "xxx", "xxx", "DE", "800") Dim WithEvents read As New ReadTable(con) Sub Main() con.Open() read.PackageSize = 10000 read.RaiseIncomingPackageEvent = True read.TableName = "MKPF" read.Run() Console.WriteLine("Press enter to exit") Console.ReadLine() End Sub Public Sub OnIncomingPackage(ByVal Sender As ERPConnect.Utils.ReadTable, _ ByVal PackageResult As System.Data.DataTable) Handles read.IncomingPackage Console.WriteLine("Processing data package with " + _ PackageResult.Rows.Count.ToString() + " rows") End Sub End Module


