Sie finden den Code dieses Beispiels im ERPConnect-Installationsverzeichnis im Verzeichnis LINQQuery

Neben der Tabellenintegration aus den letzten beiden Teilkapiteln unterstützt LINQ to SAP auch SAP-Queries als LINQ-fähige Datenquelle (Achtung! Bitte nicht mit BW-Queries verwechseln). Das folgende Beispiel demonstriert die Ansteuerung einer Demo-Query namens ZVV01 in der Benutzergruppe ZTHEO. Der folgende Screenshot zeigt den Selection Screen der Query, sowie die Listausgabe. Inhaltlich gibt die Query Vertriebsdaten aus (Join aus VBAK und VBAP).

LINQToERP-Queries_001

LINQToERP-Queries_002

Um eine Query auf .NET-Seite anzusteuern, ziehen Sie das Query-Symbol aus der Toolbox auf den Datenkontext. Nach der Anmeldung steht Ihnen die Suchmaske zur Verfügung.

LINQToERP-Queries_003

Im Dialog kann dann angegeben werden, ob die Werte der jeweiligen Select Option im Code ansteuerbar sein sollen (Pass ist angekreuzt) und falls ja, wie der Variablenname lauten soll (ggfs. ist der Default-Name aus dem SAP recht kryptisch). Außerdem kann noch eine Variante angewendet werden. Im oberen rechten Bereich wird definiert, wie die spätere Methode des DataContext heißen soll (Method), wie die Klasse heißen soll, die eine einzelne Zeile repräsentiert (Object) und wie die Klasse heißen soll, die die komplette Ergebnismenge repräsentiert (Collection).

LINQToERP-Queries_004

Im Fields-Reiter können nicht benötigte Felder ausgeklammert oder umbenannt werden.

LINQToERP-Queries_005

Wie der folgende Code-Ausschnitt zeigt, bietet die DataContext-Klasse nun eine Funktion an, um die Query auszuführen. Als Übergabeparameter erkennen wir im Intellisense die beiden Select Options wieder.

LINQToERP-Queries_006

Die beiden Übergabe-Parameter entsprechen den Range-Objekten wie sie bereits in Kapitel Beispiel für das Aufrufen einer Query vorgestellt wurden. Hier folgt nun der Code für die Ansteuerung. Als Variable dienen Textboxen (siehe folgender Screenshot).

[C#]
private void btnGo_Click(object sender, EventArgs e) 
{ 
   SAPContext sc = new SAPContext("TestUser", "SECRET01"); 
  
   QuerySelectionParameter SoldTo = new QuerySelectionParameter(); 
   SoldTo.AddRange(Sign.Include,RangeOption.Between, 
      txtCustomerLow.Text,txtCustomerHigh.Text); 
  
   QuerySelectionParameter MatNr = new QuerySelectionParameter(); 
   MatNr.AddRange(txtMatnr.Text); 
  
   var MyQueryResult = from res in sc.ZVV01(SoldTo, MatNr) select res; 
   this.dataGridView1.DataSource = MyQueryResult.ToList(); 
}

LINQToERP-Queries_007