首页 > 解决方案 > 从 VBA 返回 SAP 初始屏幕

问题描述

我有一个使用内置 sap 脚本创建的 SAP 代码的 excel 宏。它工作正常,但我需要在不同的表上多次执行这些步骤。我遇到的问题是我不能简单地触发第一步,因为当时给定屏幕的参考无效,首先我需要获取初始屏幕才能这样做,但我不知道该怎么做那。

我试图记录 SAP Gui 的“返回”动作,但这些动作似乎每次都不相同,我不能依赖它们。在 sap 相关网站上,我找到了如何引用屏幕,但我不知道如何在我的代码中使用它。其中一种方法是: session.findById("wnd[0]").Name

Sub SimpleSAPExport()
' attach to sap  session
Set SapGuiAuto = GetObject("SAPGUI")  'Get the SAP GUI Scripting object 
Set SAPApp = SapGuiAuto.GetScriptingEngine 'Get the currently running SAP 
GUI Set SAPCon = SAPApp.Children(0) 
Set session = SAPCon.Children(0)
If Not IsObject(session) Then   MsgBox "nok"
End If
'start transactiom
session.FindById("wnd[0]/tbar[0]/okcd").Text = "BPMDG/UTL_BROWSER" 
session.FindById("wnd[0]/tbar[0]/btn[0]").Press 
session.FindById("wnd[0]").Maximize
session.FindById("wnd[0]/usr/ctxtP_TABNAM").Text = "ska1"
'.
'.
session.FindById("wnd[1]/usr/ctxtDY_PATH").Text = "c:\vba\sapgui\"   
session.FindById("wnd[1]/usr/ctxtDY_FILENAME").Text = "ska1-oa01.txt"
' would need to go start transaction-part

标签: excelvbasap-gui

解决方案


您可以尝试以下方法:

...
session.FindById("wnd[0]/tbar[0]/okcd").Text = "/nBPMDG/UTL_BROWSER" 
session.FindById("wnd[0]/tbar[0]/btn[0]").Press 
...

问候, ScriptMan


推荐阅读