脚本录制不会保存文件路径

2020-08-17 01:00发布

         点击此处--->   EasySAP.com群内免费提供SAP练习系统(在群公告中)

加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)


我是的,我使用sapGui 7.40,并尝试通过sq01中的查询创建用于提取数据的自动脚本。

一切正常,但我无法保存文件路径和名称。

这是我的示例脚本:

如果不是IsObject(application),则
设置SapGuiAuto = GetObject(" SAPGUI")
设置应用程序= SapGuiAuto.GetScriptingEngine
如果,如果不是IsObject(connection),则
结束 连接= application.Children(0)
如果不是IsObject(session),则结束

设置会话= connection.Children(0)
如果,如果是IsObject(WScript),则结束。 br> WScript.ConnectObject会话,"在"上
WScript.ConnectObject应用程序,"在"上结束If
session.findById(" wnd [0]")。maximize
session.findById(" wnd [0]/tbar [0]/okcd")。text =" sq01"
session.findById(" wnd [0]")。sendVKey 0
session.findById(" wnd [0]/mbar /menu[5]/menu[0]").select
session.findById(" wnd [1]/usr/radRAD1")。select
session.findById(" wnd [1]/tbar [0 ]/btn [2]")。press
session.findById(" wnd [0]/tbar [1]/btn [19]")。press
session.findById(" wnd [1]/usr /cntlGRID1/shellcont/shell").currentCellRow = 28
session.findById(" wnd [1]/usr/cntlGRID1/shellcont/shell")。firstVisibleRow = 18
session.findById(" wnd [1]/usr/cntlGRID1/shellcont/s 地狱")。selectedRows=" 28"
session.findById(" wnd [1]/usr/cntlGRID1/shellcont/shell")。doubleClickCurrentCell
session.findById(" wnd [0]/usr/cntlGRID_CONT0050/shellcont/shell")。selectedRows =" 0"
session.findById(" wnd [0]/usr/cntlGRID_CONT0050/shellcont/shell")。doubleClickCurrentCell
session.findById(" wnd [0]/tbar [ 1]/btn [8]")。press
session.findById(" wnd [0]/usr/ctxtSP $ 00005-LOW")。text =" zpf"
session.findById(" wnd [0] /usr/ctxtSP$00006-LOW").text =" mp01"
session.findById(" wnd [0]/usr/ctxtSP $ 00006-LOW")。setFocus
session.findById(" wnd [0] /usr/ctxtSP$00006-LOW").caretPosition = 4
session.findById(" wnd [0]/tbar [1]/btn [8]")。press
session.findById(" wnd [0 ]/usr/cntlCONTAINER/shellcont/shell")。pressToolbarContextButton"&MB_EXPORT"
session.findById(" wnd [0]/usr/cntlCONTAINER/shellcont/shell")。selectContextMenuItem"&XXL"
session.findById( " wnd [1]/usr/radRB_OTHERS")。setFocus
session.findById(" wnd [1]/usr/radRB_OTHERS")。select
session.findById(" wnd [1]/usr/cmbG_LISTBOX" ) .key =" 10"
session.findById(" wnd [1]/tbar [0]/btn [0]")。按

谁能帮助我?

         点击此处--->   EasySAP.com群内免费提供SAP练习系统(在群公告中)

加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)


我是的,我使用sapGui 7.40,并尝试通过sq01中的查询创建用于提取数据的自动脚本。

一切正常,但我无法保存文件路径和名称。

这是我的示例脚本:

如果不是IsObject(application),则
设置SapGuiAuto = GetObject(" SAPGUI")
设置应用程序= SapGuiAuto.GetScriptingEngine
如果,如果不是IsObject(connection),则
结束 连接= application.Children(0)
如果不是IsObject(session),则结束

设置会话= connection.Children(0)
如果,如果是IsObject(WScript),则结束。 br> WScript.ConnectObject会话,"在"上
WScript.ConnectObject应用程序,"在"上结束If
session.findById(" wnd [0]")。maximize
session.findById(" wnd [0]/tbar [0]/okcd")。text =" sq01"
session.findById(" wnd [0]")。sendVKey 0
session.findById(" wnd [0]/mbar /menu[5]/menu[0]").select
session.findById(" wnd [1]/usr/radRAD1")。select
session.findById(" wnd [1]/tbar [0 ]/btn [2]")。press
session.findById(" wnd [0]/tbar [1]/btn [19]")。press
session.findById(" wnd [1]/usr /cntlGRID1/shellcont/shell").currentCellRow = 28
session.findById(" wnd [1]/usr/cntlGRID1/shellcont/shell")。firstVisibleRow = 18
session.findById(" wnd [1]/usr/cntlGRID1/shellcont/s 地狱")。selectedRows=" 28"
session.findById(" wnd [1]/usr/cntlGRID1/shellcont/shell")。doubleClickCurrentCell
session.findById(" wnd [0]/usr/cntlGRID_CONT0050/shellcont/shell")。selectedRows =" 0"
session.findById(" wnd [0]/usr/cntlGRID_CONT0050/shellcont/shell")。doubleClickCurrentCell
session.findById(" wnd [0]/tbar [ 1]/btn [8]")。press
session.findById(" wnd [0]/usr/ctxtSP $ 00005-LOW")。text =" zpf"
session.findById(" wnd [0] /usr/ctxtSP$00006-LOW").text =" mp01"
session.findById(" wnd [0]/usr/ctxtSP $ 00006-LOW")。setFocus
session.findById(" wnd [0] /usr/ctxtSP$00006-LOW").caretPosition = 4
session.findById(" wnd [0]/tbar [1]/btn [8]")。press
session.findById(" wnd [0 ]/usr/cntlCONTAINER/shellcont/shell")。pressToolbarContextButton"&MB_EXPORT"
session.findById(" wnd [0]/usr/cntlCONTAINER/shellcont/shell")。selectContextMenuItem"&XXL"
session.findById( " wnd [1]/usr/radRB_OTHERS")。setFocus
session.findById(" wnd [1]/usr/radRB_OTHERS")。select
session.findById(" wnd [1]/usr/cmbG_LISTBOX" ) .key =" 10"
session.findById(" wnd [1]/tbar [0]/btn [0]")。按

谁能帮助我?

付费偷看设置
发送
7条回答
Nir深蓝
1楼-- · 2020-08-17 01:41

你好罗伯托,

SAP GUI脚本无法处理本机Windows对话框。

首先,请确保SAP登录中的本机对话框选项已禁用。

如果禁用它,则可以使用AutoIt,或者需要棘手的VBScript机制来处理本机对话框。 您可以在此处找到不同的示例 此处

让我们知道您的结果。

干杯
斯特凡

jovirus
2楼-- · 2020-08-17 01:40

你好罗伯托,

这里是如何使用GOS的示例

子Test1()

   昏暗的SapGuiAuto作为对象
   Dim App作为SAPFEWSELib.GuiApplication
   昏暗的连接为SAPFEWSELib.GuiConnection
   昏暗的会话作为SAPFEWSELib.GuiSession
    
   设置SapGuiAuto = GetObject(" SAPGUI")
   设置应用程序= SapGuiAuto.GetScriptingEngine
   设置连接= App.Children(0)
   设置会话= connection.Children(3)

   session.FindById(" wnd [0]/tbar [0]/okcd")。Text ="/img/nsgostest"
   session.FindById(" wnd [0]")。SendVKey 0
   session.FindById(" wnd [0]/tbar [1]/btn [8]")。按
   session.FindById(" wnd [0]/titl/shellcont/shell")。PressContextButton"%GOS_TOOLBOX"
   session.FindById(" wnd [0]/titl/shellcont/shell")。SelectContextMenuItem"%GOS_PCATTA_CREA"
   session.FindById(" wnd [1]/usr/ctxtDY_FILENAME")。Text =" Test.txt"

 结束Sub 

对于我来说,我会看到一个可编写脚本的对话框来导入文件。

这是带有本机Windows对话框的示例。

 Sub Test2()

   昏暗的SapGuiAuto作为对象
   Dim App作为SAPFEWSELib.GuiApplication
   昏暗的连接为SAPFEWSELib.GuiConnection
   昏暗的会话作为SAPFEWSELib.GuiSession
    
   设置SapGuiAuto = GetObject(" SAPGUI")
   设置应用程序= SapGuiAuto.GetScriptingEngine
   设置连接= App.Children(0)
   设置会话= connection.Children(3)

   session.FindById(" wnd [0]/tbar [0]/okcd")。Text ="/img/nsgostest"
   session.FindById(" wnd [0]")。SendVKey 0
   session.FindById(" wnd [0]/tbar [1]/btn [8]")。按
   session.FindById(" wnd [0]/titl/shellcont/shell")。PressContextButton"%GOS_TOOLBOX"
  
   '-启动异步过程-
   昏暗的WshShell作为对象
   设置WshShell = CreateObject(" WScript.Shell")
   WshShell.Run" C:\ Dummy \ FillFileName.vbs"
  
   session.FindById(" wnd [0]/titl/shellcont/shell")。SelectContextMenuItem"%GOS_PCATTA_CREA"

 结束Sub 

如您所见,在打开本机对话框之前,我先启动一个异步VB脚本来填充对话框。

'-Begin --------------------------------------------  ---------------------

 设置wshShell = CreateObject(" WScript.Shell")

 做
   WScript.Sleep 500
 循环直到wshShell.AppActivate(" Datei importieren")= True

 wshShell.Sendkeys"%nTest.txt"
 'wshShell.Sendkeys"%nTest.txt%f"

 '-结束 -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  - -  -------------------- 

如您所见,AppActivate搜索标题" Datei importieren"(德语为文件导入),并且Sendkeys类型为Alt + n(这表示Dateiname(文件名)的下划线)和文件名Test.txt。 注释行还按Alt + f(这表示Öffnen(打开)的下划线)以关闭对话框。

此后,您的VBA代码将在%GOS_PCATTA_CREA之后继续运行。

让我们知道您的结果。
干杯
Stefan

哎,真难
3楼-- · 2020-08-17 01:50

感谢Stefan。 我已经取消选中对话框中的选项。

您知道是否可以通过脚本进行操作或我需要:

Excel VBA->调用sap事务--->设置名称文件的保存路径?

您有什么例子吗? 在您的链接,我看到打印或导入文件。 我可以吸引人,但会自动设置一条路径。

对不起,我的英语不好

亦是此间程序员
4楼-- · 2020-08-17 01:45

你好罗伯托,

抱歉,我的回复延迟。

对您的问题:

  1. 这是Excel中的VBA。< br>
  2. 否,最后一行是
    session.FindById(" wnd [0]/titl/shellcont/shell")。SelectContextMenuItem"%GOS_PCATTA_CREA"
    fillfilename启动并行任务< br>是,这是fillfilename。
    如果您的GOS使用可编写脚本的对话框,则可以使用第一个示例,否则可以使用第二个示例。

让我们知道您的结果。

干杯
斯特凡

打个大熊猫
5楼-- · 2020-08-17 01:30

感谢斯特凡

我有2个问题:

1-您的示例是写在摘要上还是Excel宏内?

2-fillfilename.vbs是您的最后一个代码?

这是fillfilename吗?

'-Begin ------------------------------------------------------------ ---------------------
设置wshShell = CreateObject(" WScript.Shell")
执行
WScript.Sleep 500 <循环> 直到wshShell.AppActivate(" Datei importieren")= True
wshShell.Sendkeys"%nTest.txt"
'wshShell.Sendkeys"%nTest.txt%f"
'-结束----- -------------------------------------------------- ------------

如果我尝试您的第一个示例,则对此" session.FindById(" wnd [1]/usr/ctxtDY_FILENAME")。Text =" Test.txt""

有问题

而且我不知道我必须将其放在脚本中的哪个位置。

谢谢

me_for_i
6楼-- · 2020-08-17 01:52

一周热门 更多>