Warnung: Veraltete Dokumentation!
Sie verwenden die alte Version der Online-Hilfe für ERPConnect.
Verwenden Sie die englischsprachige Dokumentation im neuen HelpCenter für ERPConnect.

Dieser Abschnitt zeigt, wie Sie die Transaction-Klasse verwenden, um SAP-Transaktionen sowohl direkt als auch als Hintergrundprozess (Batch Input) auszuführen.
Die Hintergrundverarbeitung eignet sich zur Verarbeitung und Sendung von Massendaten an Ihr SAP-System. Dieses Technik wird häufig verwendet, wenn es für die Datenerfassung kein geeignetes BAPI gibt.

SAP-Transaktionen aufrufen #

Die folgende Beispielanwendung zeigt, wie Sie die Transaction-Klasse verwenden, um SAP-Transaktionen direkt aus Ihrem .NET-Programm heraus ausführen.
In dieser Anwendung kann der Benutzer eine Artikelnummer und den Namen eines Werks eingeben. Über eine Schaltfläche wird die SAP GUI gestartet und die Transaktion MMBE (Bestandsübersicht) für die eingegebenen Artikel und Werke ausgeführt.

Call-Transaction-002

Tipp: Im Installatiionspaket von ERPConnect ist das Tool Transaction-Recorder enthalten. Das Tool zeichnet SAP-Transaktionen auf und erstellt automatisch einen entsprechenden VB- oder C#-Quellocde für die Transaktion, siehe Transaction-Recorder.

Der Beispielcode zeigt wie die einzelnen Batch-Schritte mit der Funktionen AddStep gesetzt werden. Wichtig ist, dass bei der Verbindung zu SAP die Eigenschaft UseGui auf true gesetzt wird. Der SAP GUI wird über die Methode Execute gestartet.

private void button1_Click(object sender, System.EventArgs e)
    {
    using (R3Connection con = new R3Connection("SAPServer", 00, "SAPUser", "Password", "EN", "800"))
        {
            Transaction transaction1 = new Transaction();
            transaction1.Connection = con;
            // Reset the batch steps
            transaction1.BatchSteps.Clear();
  
            // fill new steps
            transaction1.ExecutionMode = ERPConnect.Utils.TransactionDialogMode.ShowOnlyErrors;
            transaction1.TCode = "MMBE";
            transaction1.AddStepSetNewDynpro("RMMMBEST", "1000");
            transaction1.AddStepSetOKCode("ONLI");
            transaction1.AddStepSetCursor("MS_WERKS-LOW");
            transaction1.AddStepSetField("MS_MATNR-LOW", textBox1.Text);
            transaction1.AddStepSetField("MS_WERKS-LOW", textBox2.Text);
  
            // connect to SAP
            con.UseGui = true;
            con.Open(false);
            // Run
            transaction1.Execute();
        }
    }
```s

<!---
<details>
<summary>[VB]</summary>

<figure class="highlight"><pre><code class="language-visualbasic" data-lang="visualbasic"><span class="k">Private</span> <span class="k">Sub</span> <span class="nf">button1_Click</span><span class="p">(</span><span class="k">ByVal</span> <span class="n">sender</span> <span class="ow">As</span> <span class="n">System</span><span class="p">.</span><span class="n">Object</span><span class="p">,</span> <span class="k">ByVal</span> <span class="n">e</span> <span class="ow">As</span> <span class="n">System</span><span class="p">.</span><span class="n">EventArgs</span><span class="p">)</span> <span class="k">Handles</span> <span class="n">button1</span><span class="p">.</span><span class="n">Click</span>
    <span class="k">Dim</span> <span class="nv">R3Connection1</span> <span class="ow">As</span> <span class="n">R3Connection</span> <span class="o">=</span> <span class="k">New</span> <span class="n">R3Connection</span><span class="p">(</span><span class="s">"SAPServer"</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="s">"SAPUser"</span><span class="p">,</span> <span class="s">"Password"</span><span class="p">,</span> <span class="s">"EN"</span><span class="p">,</span> <span class="s">"800"</span><span class="p">)</span>
    <span class="k">Dim</span> <span class="nv">transaction1</span> <span class="ow">As</span> <span class="n">Transaction</span> <span class="o">=</span> <span class="k">New</span> <span class="n">Transaction</span><span class="p">()</span>
    <span class="n">transaction1</span><span class="p">.</span><span class="n">Connection</span> <span class="o">=</span> <span class="n">R3Connection1</span>
    <span class="c1">' Reset the batch steps</span>
    <span class="n">transaction1</span><span class="p">.</span><span class="n">BatchSteps</span><span class="p">.</span><span class="n">Clear</span><span class="p">()</span>
    <span class="c1">' fill new steps</span>
    <span class="n">transaction1</span><span class="p">.</span><span class="n">ExecutionMode</span> <span class="o">=</span> <span class="n">_</span>
       <span class="n">ERPConnect</span><span class="p">.</span><span class="n">Utils</span><span class="p">.</span><span class="n">TransactionDialogMode</span><span class="p">.</span><span class="n">ShowOnlyErrors</span>
    <span class="n">transaction1</span><span class="p">.</span><span class="n">TCode</span> <span class="o">=</span> <span class="s">"MMBE"</span>
    <span class="n">transaction1</span><span class="p">.</span><span class="n">AddStepSetNewDynpro</span><span class="p">(</span><span class="s">"RMMMBEST"</span><span class="p">,</span> <span class="s">"1000"</span><span class="p">)</span>
    <span class="n">transaction1</span><span class="p">.</span><span class="n">AddStepSetOKCode</span><span class="p">(</span><span class="s">"ONLI"</span><span class="p">)</span>
    <span class="n">transaction1</span><span class="p">.</span><span class="n">AddStepSetCursor</span><span class="p">(</span><span class="s">"MS_WERKS-LOW"</span><span class="p">)</span>
    <span class="n">transaction1</span><span class="p">.</span><span class="n">AddStepSetField</span><span class="p">(</span><span class="s">"MS_MATNR-LOW"</span><span class="p">,</span> <span class="s">"100-100"</span><span class="p">)</span>
    <span class="n">transaction1</span><span class="p">.</span><span class="n">AddStepSetField</span><span class="p">(</span><span class="s">"MS_WERKS-LOW"</span><span class="p">,</span> <span class="s">"100-200"</span><span class="p">)</span>
    <span class="c1">' connect to SAP</span>
 
 
    <span class="n">R3Connection1</span><span class="p">.</span><span class="n">UseGui</span> <span class="o">=</span> <span class="k">True</span>
    <span class="n">R3Connection1</span><span class="p">.</span><span class="n">Open</span><span class="p">(</span><span class="k">False</span><span class="p">)</span>
    <span class="c1">' Run</span>
    <span class="n">transaction1</span><span class="p">.</span><span class="n">Execute</span><span class="p">()</span>
 
<span class="k">End</span> <span class="k">Sub</span></code></pre></figure>

</details>
-->


{: .box-note }
**Note**: Falls Sie nur in eine Zieltransaktion abspringen möchten, ohne Schritte automatisch zu erledigen, reicht es, die Eigenschaft *TCode* zu füllen und die Transaktion zu starten.  

Der folgende Screenshot zeigt das Programm in Aktion. 

![Call-Transaction-003](/img/content/Call-Transaction-003.png){:class="img-responsive"}


### Batch Input Hintergrundverarbeitung

Das folgende Beispiel zeigt, wie man als Hintergrundverarbeitung (Batch Input) eine Lieferanten-Bestellung erstellt.
Die Transaktion zum Erstellen einer Lieferanten-Bestellung ist **ME21**.

 
Am Ende des Codes werden die *BatchReturn*-Objekte, die die Rückgabe-Nachrichten des Hintergrundprozesses beinhalten,
über eine Schleife auf die Returns-Collection ausgewertet.

```csharp
using (R3Connection con = new R3Connection("SAPServer", 00, "SAPUser", "Password", "EN", "800"))
    {
	con.Open(false);
   
	Transaction trans = new Transaction();
	trans.Connection = con;
	trans.TCode = "ME21";
   
	//Begin a new Dynpro
	trans.AddStepSetNewDynpro("SAPMM06E", "0100");
	trans.AddStepSetCursor("EKKO-EKGRP");
	trans.AddStepSetOKCode("/00"); // Enter
	trans.AddStepSetField("EKKO-LIFNR", "1070"); // Vendor
	trans.AddStepSetField("RM06E-BSART", "NB"); // Order Type
	trans.AddStepSetField("RM06E-BEDAT", "01.01.2006"); //Purch.Date
	trans.AddStepSetField("EKKO-EKORG", "1000"); // Purchase Org
	trans.AddStepSetField("EKKO-EKGRP", "010"); // Purchase Group
	trans.AddStepSetField("RM06E-LPEIN", "T");
   
	//Begin a new Dynpro
	trans.AddStepSetNewDynpro("SAPMM06E", "0120");
	trans.AddStepSetCursor("EKPO-WERKS(01)");
	trans.AddStepSetOKCode("=BU");
	trans.AddStepSetField("EKPO-EMATN(01)", "B-7000"); // Material
	trans.AddStepSetField("EKPO-MENGE(01)", "20"); // Quantity
	trans.AddStepSetField("EKPO-WERKS(01)", "1000"); // Plant
	trans.Execute();
   
	foreach (ERPConnect.Utils.BatchReturn br in trans.Returns)
		MessageBox.Show(br.Message);
	if (trans.Returns.Count == 0)
		MessageBox.Show("No Messages");
    }