如何处理另存为对话框?

2020-09-16 18:50发布

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

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


你好

我是脚本专家,特别是将SAP GUI脚本复制到excel VBA,但是SAP会弹出-save as-窗口,该窗口未记录在脚本记录器中:这可能是我不知道的窗口弹出窗口: 如何自动输入路径和文件名,而不必在该弹出窗口中按SAVE?

我也想重写此文件,因为我将此任务重复使用。 我看到有关该主题的一些聊天,但无法获取正确的VBA代码。 tx

以下是SAP GUI中的典型脚本:

  1. session.findById(" wnd [0]")。maximize
  2. session.findById(" wnd [0]/usr/cntlIMAGE_CONTAINER/shellcont/shell/shellcont [0]/shell")。doubleClickNode" F00007"
  3. session.findById(" wnd [0]/usr/ctxtCHARG-LOW")。Text =" 4552872B"
  4. session.findById(" wnd [0]/usr/ctxtBWART-LOW")。Text =" 101"
  5. session.findById(" wnd [0]/usr/txtMJAHR-LOW")。Text =" 2000"
  6. session.findById(" wnd [0]/usr/txtMJAHR-HIGH")。Text =" 2015"
  7. session.findById(" wnd [0]/usr/ctxtALV_DEF")。Text ="/img/CPS"
  8. session.findById(" wnd [0]/usr/ctxtALV_DEF")。SetFocus
  9. session.findById(" wnd [0]/usr/ctxtALV_DEF")。caretPosition = 4
  10. session.findById(" wnd [0]/tbar [1]/btn [8]")。按

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

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


你好

我是脚本专家,特别是将SAP GUI脚本复制到excel VBA,但是SAP会弹出-save as-窗口,该窗口未记录在脚本记录器中:这可能是我不知道的窗口弹出窗口: 如何自动输入路径和文件名,而不必在该弹出窗口中按SAVE?

我也想重写此文件,因为我将此任务重复使用。 我看到有关该主题的一些聊天,但无法获取正确的VBA代码。 tx

以下是SAP GUI中的典型脚本:

  1. session.findById(" wnd [0]")。maximize
  2. session.findById(" wnd [0]/usr/cntlIMAGE_CONTAINER/shellcont/shell/shellcont [0]/shell")。doubleClickNode" F00007"
  3. session.findById(" wnd [0]/usr/ctxtCHARG-LOW")。Text =" 4552872B"
  4. session.findById(" wnd [0]/usr/ctxtBWART-LOW")。Text =" 101"
  5. session.findById(" wnd [0]/usr/txtMJAHR-LOW")。Text =" 2000"
  6. session.findById(" wnd [0]/usr/txtMJAHR-HIGH")。Text =" 2015"
  7. session.findById(" wnd [0]/usr/ctxtALV_DEF")。Text ="/img/CPS"
  8. session.findById(" wnd [0]/usr/ctxtALV_DEF")。SetFocus
  9. session.findById(" wnd [0]/usr/ctxtALV_DEF")。caretPosition = 4
  10. session.findById(" wnd [0]/tbar [1]/btn [8]")。按
付费偷看设置
发送
5条回答
宇峰Kouji
1楼-- · 2020-09-16 19:12

你好丹,

您应该应用SAP Note 1974590-脚本编写过程中的文件保存对话框。

使用此SAP注意,文件保存对话框将显示为ABAP对话框,可通过SAP GUI脚本进行访问。

最诚挚的问候,
弗兰克

哎,真难
2楼-- · 2020-09-16 19:17

你好丹,

欢迎使用SAP社区。

我们在这里经常与本机对话框讨论此问题。 首先,请设置您的SAP登录名自定义设置,以避免使用本机对话,此处。 您可以在该社区找到许多解决本地对话的解决方案,例如 此处 这里,等等。请使用搜索。

最诚挚的问候
Stefan

南山jay
3楼-- · 2020-09-16 18:58

tx,弗兰克,

由于我只是SAP的新用户,所以无权添加NOTES,

或者这可能在SETTINGS等中。

您能否提供有关如何实现此操作的说明?

我必须在此处联系公司的帮助台以添加此内容。

我认为这将使GUI脚本编码器能够实际记录所有弹出窗口中的所有动作。

我将其复制到Excel VBA中以作为宏运行。 第一部分在Excel中工作正常,但是

直接在"另存为"窗口弹出窗口...

tx,以帮助您。.

干杯

DAN

梦想连接
4楼-- · 2020-09-16 19:05

嗨,丹,

解决方案取决于SAP GUI版本。 如果您使用的是7.5版,则可以立即查看Martin Luedecke的建议。

否则,它将更加复杂但仍可解决。 ;-)

https://archive.sap.com/discussions/thread/1487670

此致

ScriptMan

spaceman01
5楼-- · 2020-09-16 19:16

嗨,

不确定是否仍然需要提示,无论如何让我分享我自己如何解决对话框问题。

要求是从发票的其中一个输出中创建发票的附件(大多数输出​​已配置为存档模式,但由于某些原因,其中一些没有,并且没有更快的方法每月添加100个以上附件 大约,直到此问题解决为止)。 输出到假脱机,从那里将其作为PDF导出到临时位置,然后从那里作为发票附件上载。

在此代码之前的
'会处理输出并进入假脱机-在这里我们在命中之前就结束了
 '"导出为pdf"按钮
 session.findById(" wnd [0]/usr/chk [1,3]")。selected = true
 session.findById(" wnd [0]/usr/chk [1,3]")。setFocus

 在这里,我在后台启动另一个脚本来处理对话框:
 设置Wshell = CreateObject(" WScript.Shell")
 Wshell.run" C:\ tmp \ script_dialog.vbs",1,否

 '现在您运行"导出为pdf"
 session.findById(" wnd [0]/mbar/menu [0]/menu [2]/menu [2]")。select
 session.findById(" wnd [0]/tbar [0]/okcd")。text ="/img/nvf02"
 session.findById(" wnd [0]")。sendVKey 0
 session.findById(" wnd [0]/usr/ctxtVBRK-VBELN")。text = yourVariable

 睡眠是可选的,我需要它,因为我的实例花了很长时间来处理一些文档
 WScript.Sleep 2 * 1000

 session.findById(" wnd [0]")。sendVKey 0

 '再次运行后台脚本(最后一个脚本在处理对话框结束时停止运行),这次是为了
 '文件上传

 设置Wshell = CreateObject(" WScript.Shell")
 Wshell.run" C:\ tmp \ script_dialog.vbs",1,否

 "以及上传对话框完成后的其他代码

 session.findById(" wnd [0]/titl/shellcont/shell")。pressContextButton"%GOS_TOOLBOX"
 session.findById(" wnd [0]/titl/shellcont/shell")。selectContextMenuItem"%GOS_PCATTA_CREA"
 session.findById(" wnd [0]/tbar [0]/btn [11]")。按
 session.findById(" wnd [0]/tbar [0]/btn [3]")。按
 

这是背景脚本:

'我正在使用excel存储我的变量-如果要覆盖文件,则可能不需要
 昏暗的objExcel
 昏暗的objSheet,intRow,我
 设置objExcel = GetObject(," Excel.Application")
 设置objSheet = objExcel.ActiveWorkbook.ActiveSheet

 docName = objSheet.Cells(2,3).Value
 FileName = docName&"。pdf"

 设置Wshell = CreateObject(" WScript.Shell")
 做
  bWindowFound = Wshell.AppActivate("另存为")
  wscript.sleep 1000
  cWindowFound = Wshell.AppActivate("导入文件")
  wscript.sleep 1000
 循环直到bWindowFound或cWindowFound

 ",这可能是最不优雅的解决方案-使用标签上的sendkey访问必需的输入字段。
 标签页的数量取决于您要访问的内容-您可能会有所不同。 建议反复试验;)

 如果(bWindowFound)然后

 Wshell.appActivate"另存为"
 Wshell.SendKeys" {TAB}"
 WScript.Sleep 100
 Wshell.SendKeys" {TAB}"
 WScript.Sleep 100
 Wshell.SendKeys" {TAB}"
 WScript.Sleep 100
 Wshell.SendKeys" {TAB}"
 WScript.Sleep 100
 Wshell.SendKeys" {TAB}"
 WScript.Sleep 100
 Wshell.SendKeys文件名
 WScript.Sleep 100
 Wshell.SendKeys" {ENTER}"
 万一

 如果(cWindowFound)然后

 Wshell.appActivate"导入文件"
 Wshell.SendKeys" {TAB}"
 WScript.Sleep 100
 Wshell.SendKeys" {TAB}"
 WScript.Sleep 100
 Wshell.SendKeys" {TAB}"
 WScript.Sleep 100
 Wshell.SendKeys文件名
 WScript.Sleep 1000
 Wshell.SendKeys" {ENTER}"
 万一
 

希望这会有所帮助。 如果您有任何问题,请告诉我。

干杯

迈克

一周热门 更多>