Как я могу написать SAP GUI SCRIPT для всплывающего окна SAP - PullRequest
0 голосов
/ 21 января 2020

Я хотел бы получить вашу помощь, чтобы найти решение для следующего. Я хотел бы извлечь стандартные счета SAP в файлы PDF. Шаги VF03 - вставка фактуры c - Меню: документ фактуры - выходной выпуск - выберите строку - предварительный просмотр - PDF! + и у меня есть всплывающее окно ниже. Во всплывающем окне я хотел бы нажать кнопку «Сохранить», а затем сохранить файл с указанным c именем файла, который я уже скопировал в буфер обмена.

enter image description here

enter code here

Код следующий

 SESSION.findById("wnd[0]").maximize
SESSION.findById("wnd[0]/tbar[0]/okcd").Text = "/NVF03"
SESSION.findById("wnd[0]").sendVKey 0
SESSION.findById("wnd[0]/usr/ctxtVBRK-VBELN").Text = invoice ' "1094542982"
SESSION.findById("wnd[0]/usr/ctxtVBRK-VBELN").caretPosition = 10
SESSION.findById("wnd[0]/mbar/menu[0]/menu[11]").Select
SESSION.findById("wnd[1]/usr/tblSAPLVMSGTABCONTROL").getAbsoluteRow(0).Selected = True
SESSION.findById("wnd[1]/tbar[0]/btn[37]").press
SESSION.findById("wnd[0]/tbar[0]/okcd").Text = "PDF!"
SESSION.findById("wnd[0]").sendVKey 0

Ответы [ 2 ]

0 голосов
/ 24 января 2020

Я бы попробовал следующее:

...
Set wshell = CreateObject("WScript.Shell")

n = 1
do
 bWindowFound = wshell.AppActivate("Save as")
 n = n + 1
 wscript.sleep 1000 
Loop Until bWindowFound or n > 10

if bWindowFound then
   wshell.SendKeys "myDocument.pdf"
   wscript.sleep 200
   wshell.SendKeys "{TAB 3}"
   wscript.sleep 200
   wshell.SendKeys "{ENTER}"
end if

С уважением, ScriptMan

0 голосов
/ 22 января 2020

Я попробовал следующий код, чтобы напечатать документ в pdf. Control + P были нажаты в окне VBA, а не в окне SAP, как я хочу.

    Option Explicit
Public SapGui, App, Connection, Session, SapGuiAuto, wshell, wscript, bWindowFound

Sub SAP()
If Not IsObject(App) Then
   Set SapGuiAuto = GetObject("SAPGUI")
   Set App = SapGuiAuto.GetScriptingEngine
End If
If Not IsObject(Connection) Then
   Set Connection = App.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 App, "on"
End If

Set wshell = CreateObject("WScript.Shell")

    Do
     bWindowFound = wshell.AppActivate("PDF Preview")
    Loop Until bWindowFound
    bWindowFound = wshell.AppActivate("PDF Preview")
    'MsgBox ("window found")
     wshell.SendKeys "{CAPSLOCK}"
     MsgBox ("ddd")
     bWindowFound = wshell.AppActivate("PDF Preview")
     wshell.SendKeys "^(p)"
End Sub
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...