Datenpakete mit der BWQuery-Klasse 
From Theobald Software
|
|
Bei größeren BW-Queries kann es aus speichertechnischen Gründen sinnvoll sein, die Ergebnismenge nicht an einem Stück zu empfangen und weiterzuverarbeiten, sondern in einzelnen Paketen (analog der ReadTable-Klasse, siehe auch Datenpakete mit der ReadTable-Klasse).
Der folgende Code-Ausschnitt zeigt die Verwendung der Eigenschaft 'PackageSize' und des Events 'OnIncomingPackage'. Das Beispiel ist gekürzt und basiert auf dem Artikel BW Queries ausführen.
Setzen Sie die PackageSize auf einen sinnvollen Wert (z.B. 1000) und verarbeiten Sie die einzelnen Pakete nacheinander im IncomingPackage-Ereignis. Vor dem Aufruf der Execute()-Funktion muss natürlich der Eventhandler entsprechend definiert sein, damit das Ereignis ausgelöst werden kann.
Achtung! Diese Paketierung ist aus technischen Gründen von SAP-Seite aus auf 1.000.000 Zeilen beschränkt
C#
private void Go_Click(object sender, System.EventArgs e) { // Open R3Connection and create BWQuery object query.PackageSize = 1000; query.IncomingPackage += new BWCube.OnIncomingPackage(query_IncomingPackage); query.Execute(); } void query_IncomingPackage(BWCube Sender, MDXExecuter mdxexecuter, DataTable PackageResult) { MessageBox.Show("A new data package has arrived"); this.dataGrid1.DataSource = PackageResult; }

