In diesem Tutorial kombinieren wir VB.NET Funktionen (Versenden einer E-Mail) mit dem Aufruf von SAP GUI Scripting.

WIr wollen einige Auftragsdaten (Transaktion VA03) in einer Zusammenfassung als E-Mail versenden:

Wir fügen zunächst einen pushbutton ein, der ein Inputscript aktiviert:

GuiXT
pushbutton (3,22) "@J8\QSend order as e-mail@Per E-Mail versenden " process="send_email_order_va03.txt"

Inputscript send_email_order_va03.txt:

// Kopie der E-Mail an
Set V[ccRef] "pascal@synactive.com"

// Versende Zusammenfassung des Auftags per E-Mail
callvbasync tutorials.utilities.send_order_html "&F[Auftrag]" "office@synactive.com" "Synactive Mitarbeiter" "ccRef" "Auftrag &F[Auftrag]"


Hinweis: Wir verwenden für das Einlesen der Positionen des Auftrags die guinet.dll Schnittstelle (SAP GUI Scripting) und müssen daher die asynchron arbeitende Variante von callVB verwenden: callVBAsync

Implementierung der Funktion "send_order":
(Die kompletten Code können Sie hier herunterladen: send_order.txt)

1. Fügen Sie dem VB.NET Projekt eine Referenz auf guinet.dll hinzu. Die Datei wird beim Setup von GuiXT mit installiert.



2. Erstellen Sie ein Objekt vom Typ guinet.guixt:

 VB.NET

' Create instance of guixt
 Dim g As New guinet.guixt


3. Lesen Sie die benötigten Daten aus:
(Für eine vollständige Liste aller Befehle siehe Synactive Doku -> GUI Scripting in VB)

 VB.NET

4. Sie können auch komfortabel ganze Tabellen einlesen, wir werden dies mit dem Befehl g.GuiSession.ReadTable für die Positionen des Auftrags tun:

VB.NET
' Define table for ReadTable()
Dim dt As DataTable = New DataTable("Orders")
dt.Columns.Add("POSNR")
dt.Columns.Add("MABNR")

' Read table with guinet.dll (SAP GUI Scripting)
g.GuiSession.ReadTable(dt)


5. Die eingelesene Tabelle ist vom Typ DataTable und muss für die Anzeige in der E-Mail noch in HTML-Format umgewandelt werden:

VB.NET

6. Schließlich versenden wir den HTML-String als E-Mail:

VB.NET
' Send e-mail with SMTP
Dim e As New email
e.send_order(toEmail, toName, ccRef, subject, HTML)


Ergebnis: