特定のレポートを作成するには、SAP から複数の xls ファイルを自動的にエクスポートする必要があります。ここまでは、SAP GUI スクリプトを使用して、トランザクション コードと DIR 番号 (ドキュメントごとに一意) を入力しました。xlsファイルを1つだけダウンロードすると、これは完全に機能します。ただし、複数のxlsをダウンロードする必要があります。
画像でわかるように、xls ファイルは 2 番目の位置にあります。つまり、私のスクリプトでは、2 番目の位置にあるすべてのファイルをエクスポートするだけです。たとえば、2 番目に PDF がある場合、自動的に PDF がエクスポートされ、レポートを作成できません。
Set xmlDoc = CreateObject("MSXML.DomDocument")
xmlDoc.Load "C:\Users\famichalsk\AppData\Roaming\KPI Report\DIS.xml"
For Each testNode In xmlDoc.selectNodes("/Reports/Report")
Number_PDP = testNode.SelectSingleNode("DIS_PDP").Text
If Not IsObject(application) Then
Set SapGuiAuto = GetObject("SAPGUI")
Set application = SapGuiAuto.GetScriptingEngine
End If
If Not IsObject(connection) Then
Set connection = application.Children(0)
End If
If Not IsObject(session) Then
Set session = connection.Children(0)
End If
If IsObject(WScript) Then
WScript.ConnectObject session, "on"
WScript.ConnectObject application, "on"
End If
session.findById("wnd[0]").iconify
session.findById("wnd[0]").resizeWorkingPane 132,31,false
session.findById("wnd[0]/tbar[0]/okcd").text = "/n cv04n"
session.findById("wnd[0]").sendVKey 0
session.findById("wnd[0]/usr/tabsMAINSTRIP/tabpTAB1/ssubSUBSCRN:SAPLCV100:0401/s subSCR_MAIN:SAPLCV100:0402/ctxtSTDOKNR-LOW").text = Number_PDP
session.findById("wnd[0]/usr/tabsMAINSTRIP/tabpTAB1/ssubSUBSCRN:SAPLCV100:0401/ssubSCR_MAIN:SAPLCV100:0402/ctxtSTDOKNR-LOW").caretPosition = 12
session.findById("wnd[0]/tbar[1]/btn[8]").press
session.findById("wnd[0]/usr/cntlGRID1/shellcont/shell").doubleClickCurrentCell
session.findById("wnd[0]/usr/tabsTAB_MAIN/tabpTSMAIN/ssubSCR_MAIN:SAPLCV110:0102/cntlCTL_FILES1/shellcont/shell/shellcont[1]/shell").selectNode " 2"
session.findById("wnd[0]/usr/tabsTAB_MAIN/tabpTSMAIN/ssubSCR_MAIN:SAPLCV110:0102/btnPB_DISPLAY").press
Next
ここではエクスポートする 2 番目の「ノード」を選択するため、最後の 2 行が重要です。ここで、xls ファイルかどうかを確認する必要があります。