【问题标题】:How can I write SAP GUI SCRIPT for a SAP pop up window如何为 SAP 弹出窗口编写 SAP GUI SCRIPT
【发布时间】:2020-12-08 20:29:20
【问题描述】:

我希望得到您的帮助,以便找到以下问题的解决方案。 我想将 SAP 标准发票提取为 PDF 文件。 步骤是 VF03 - 插入开票单据 - 菜单:开票单据 - 签发输出 - 选择行 - 打印预览 - PDF! + 然后我有下面的弹出窗口。 在弹出窗口中,我想按“保存按钮”,然后使用我已经复制到剪贴板的特定文件名保存文件。

代码如下

 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

【问题讨论】:

  • 你有哪个 SAPGUI 版本?
  • 在哪里可以看到 SAPGUI 的版本?
  • 在您可以在 SAPLOGON Pad 或任何 SAPGUI 会话中找到的 About Box 中。您将看到版本、构建和补丁级别
  • Release 750。文件版本7500.2.5.3376.,build 1835159,补丁级别5。以上可以吗?
  • 我是因为这个hint而问的。

标签: excel vba pdf download sap


【解决方案1】:

我尝试了以下代码以将文档打印为 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

【讨论】:

    【解决方案2】:

    我会尝试以下方法:

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

    问候,脚本人

    【讨论】:

    • 此代码属于我的链接中的附加 VBS 文件,对吗?或者您可以将它添加到 VBA 脚本的末尾吗?
    • 它应该附加到脚本的末尾。
    • 好的,但是我们不是在谈论 VBA 或 Excel,对吧?
    • 如果您使用 Application.Wait (Now + TimeValue ("00:00:01")) 命令代替 wscript.sleep 200 或 wscript.sleep 1000,您也可以在 VBA 中使用它。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-02-08
    • 2019-06-16
    • 2022-10-20
    • 2021-09-23
    • 2016-01-16
    • 1970-01-01
    相关资源
    最近更新 更多