我必须自动从SAP导出多个xls文件以创建特定报告。到目前为止,我使用SAP GUI Scripting输入事务代码和DIR-Number(每个文档都是唯一的)。当我只下载一个xls文件时,这非常有效。我必须下载多个xls。
正如您在图像中看到的那样,xls文件位于第二个位置,这意味着我的脚本只会导出位于第二个位置的所有文件。例如,如果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
最后两行是重要的一行,因为在这里你选择第二行" Node"出口。在这里,我需要检查是否xls文件。
答案 0 :(得分:-1)
您可以尝试以下解决方法。 例如:
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/cntlCTL_FILES1/shellcont/shell/shellcont[1]/shell").itemContextMenu " 2"
session.findById("wnd[0]/usr/tabsTAB_MAIN/tabpTSMAIN/ssubSCR_MAIN:SAPLCV110:0102/cntlCTL_FILES1/shellcont/shell/shellcont[1]/shell").selectContextMenuItem "&FIND"
myText = session.findById("wnd[1]/usr/txtLVC_S_SEA-STRING").text
session.findById("wnd[1]/tbar[0]/btn[12]").press
if myText = "xyz" then
session.findById("wnd[0]/usr/tabsTAB_MAIN/tabpTSMAIN/ssubSCR_MAIN:SAPLCV110:0102/btnPB_DISPLAY").press
end if
可能是脚本中的相应段落必须重新录制。
此致 ScriptMan