Eメールを送信する

このチュートリアルでは、VB.NET関数(Eメールの送信)を、SAP GUIスクリプティングの呼び出しと組み合わせます。
ここでは、発注データ(トランザクションVA03)を簡単な概要としてEメールで送信します。

まず、InputScriptを処理するプッシュボタンを新たに追加します。

pushbutton (3,22) “@J8\QSend order as e-mail@Send order as e-mail ”

process=“send_email_order_va03.txt”

InputScript send_email_order_va03.txt:

// Copy to
Set V[ccRef] “pascal@synactive.com”

// Send order overview as e-mail
callvbasync tutorials.utilities.send_order_html “&F[Order]””office@synactive.com” “Synactive employee” “ccRef” “Order &F[Order]”

 

: 発注品目の読み込みでは、guinet.dll(SAP GUIスクリプティング)を使用します。そのため、callVBコマンドの非同期版であるcallVBAsyncを呼び出す必要があります。

関数“send_order”の実装:
(完全なソースコードはsend_order.txtからダウンロードできます)

手順1: VB.NETプロジェクトにguinet.dllへの参照を追加します(このファイルはGuiXTのセットアップに付属しています):

手順2: 型のオブジェクトを作成します:

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

手順3: 要求されたデータを読み出します:
(使用できる全コマンドを網羅したリストが掲載されたドキュメント: Synactive docu -> GUI Scripting in VBを参照してください)

 ‘ Start transaktion VA03
g.GuiSession.Enter(“/nVA03”)

 ‘ Enter number of order
g.GuiSession.SetField(“VBAK-VBELN”, orderno)
g.GuiSession.Enter()

‘ Get some data of order
HTML &= “Nettowert: “ & g.GuiSession.GetField(“VBAK-NETWR”) & ” “
HTML &= g.GuiSession.GetField(“VBAK-WAERK”) & “<br>”

手順4: テーブル全体を容易に読み込むことができます。これは、発注品目に対してg.GuiSession.ReadTable コマンドを実行することで行います:

‘ 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: テーブル読み込みのデータ型はDataTableであり、Eメールで表示できるようにHTMLに変換する必要があります

‘ Format table with HTML
For i = 0 To dt.Rows.Count – 1
HTML &= “<tr>”
HTML &= “<td>” & dt.Rows(i)(0) & “</td>”
HTML &= “<td>” & dt.Rows(i)(1) & “</td>”
HTML &= “</tr>”
Next 

手順6: これで、HTMLの文字列をEメールとして送信できます:

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

結果: