BW Queries ausführen 
From Theobald Software
Dieses Kapitel enthält Informationen und Beispiele rund um das Thema BW-Datenextraktion. Die entsprechenden ERPConnect-Klassen sind im Namensraum ERPConnect.BW zu finden.
Die Beispiele basieren auf einer BW-Query, die auf dem Cube 0D_DECU basiert und ZSIMPLEQUERY heißt. Bitte beachten Sie, dass bei der Query in Ihren Einstellungen das Häkchen ‚Externen Zugriff zulassen‘ gesetzt sein muss.
Die Abbildung zeigt die Query im Designer. Es sind die Dimensionen ‚Material‘ und ‚Auftraggeber‘, sowie die Kennzahlen ‚Fakturierte Menge‘ und ‚Kosten‘ in die Ergebnismenge gezogen. Die Dimension hat eine Variable namens MAT01, die die Einschränkung auf Materialnummer erlaubt.
Beispiel
Das folgende Beispiel zeigt die Ausführung der Query unter .NET. Zunächst wird ein BWCube-Objekt mit Hilfe der CreateCube-Funktion gebildet. Der Name setzt sich dabei aus dem Cubenamen und dem Querynamen zusammen.
Das Cube-Objekt bietet eine Collection für alle enthaltenen Dimensionen (‚Dimensions‘) und für alle enthaltenen Kennzahlen (‚Measures‘). Die Eigenschaft SelectForFlatMDX definiert, ob die jeweilige Komponente in der Ergebnismenge enthalten sein soll. Sie wird im Beispiel auf true gesetzt. Bitte beachten Sie, dass die Benennung der Kennzahlen durch die Query-Generierung im Designer nicht den originalen, technischen Namen folgt, daher werden die Kennzahlen hier im Beispiel über die Ordinalzahl und nicht über den Namen angesprochen.
Um die Variable mit Werten zu füllen, wird sie über die Variables-Collection angesprochen. Hinter einer Variablen liegen immer Range-Tabellen, die wir bereits aus dem SAP Query Kapitel kennen. Die BW-Query kann über Execute() ausgeführt werden und liefert eine Tabelle vom Typ DataTable zurück. Der Screenshot des Beispiels zeigt die Ergebnismenge im Grid.
C#
private void Go_Click(object sender, System.EventArgs e) { R3Connection con = new R3Connection(); if (!con.AskUserAndOpen(true)) return; BWCube query = con.CreateBWCube("0D_DECU/ZSIMPLEQUERY"); query.Dimensions["0D_MATERIAL"].SelectForFlatMDX = true; query.Dimensions["0D_SOLD_TO"].SelectForFlatMDX = true; query.Measures[0].SelectForFlatMDX = true; query.Measures[1].SelectForFlatMDX = true; query.Variables["MAT01"].SingleRange.LowValue = this.txtMatNr.Text; this.dataGrid1.DataSource = query.Execute(); }
[VB]
Private Sub Go_Click(ByVal sender As Object, ByVal e As System.EventArgs) Dim con As R3Connection = New R3Connection If Not con.AskUserAndOpen(true) Then Return End If Dim query As BWCube = con.CreateBWCube("0D_DECU/ZSIMPLEQUERY") query.Dimensions("0D_MATERIAL").SelectForFlatMDX = true query.Dimensions("0D_SOLD_TO").SelectForFlatMDX = true query.Measures(0).SelectForFlatMDX = true query.Measures(1).SelectForFlatMDX = true query.Variables("MAT01").SingleRange.LowValue = Me.txtMatNr.Text Me.dataGrid1.DataSource = query.Execute End Sub



