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
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)