点击此处---> 群内免费提供SAP练习系统(在群公告中)
加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)
大家好,
我在使用VBA/VBScript在SAP中自动执行流程时有一个疑问。
因此提供概述:
我正在对t代码VA42中的合同执行几个标准化更改。 有时会出现一个消息框,该脚本停止我的脚本:
在这些情况下,我只希望脚本单击"保存"并继续进行常规工作。
您能帮我吗?
我已经尝试使用Application.DisplayAllerts = False,但是它不起作用。 我考虑过错误处理程序,但这基本上不是错误。 您能建议一种管理方法吗?
我想可以用IF语句来完成,但是我不知道如何格式化我的代码。
提前谢谢!
代码:
子更改() 今天=格式(日期," dd.mm.yyyy") Application.DisplayAlerts = False '我们在Excel中声明了while函数的变量 Dim cont as String 昏暗的行作为整数 Dim rep As String Dim j作为整数 j = 2 '这些是我们使SAP可用于VBA代码的命令 设置SapGuiAuto = GetObject(" SAPGUI") 设置SAPApp = SapGuiAuto.GetScriptingEngine 设置SAPCon = SAPApp.Children(0) 设置会话= SAPCon.Children(0) 如果IsObject(WScript)然后 WScript.ConnectObject会话,"打开" WScript.ConnectObject应用程序,"打开" 万一 Session.findById(" wnd [0]")。maximize 'Session.findById(" wnd [0]/tbar [0]/btn [3]")。press 'Session.findById(" wnd [0]/tbar [0]/btn [3]")。press Session.findById(" wnd [0]/tbar [0]/okcd")。Text =" va42" Session.findById(" wnd [0]")。sendVKey 0 '我们开始在宏书内循环,并为变量赋值 使用本工作簿 而单元格(j,1)<>"" 续=单元格(j,1)。值 行=单元格(j,3)。值 rep =单元格(j,4)。值 '输入VBS代码 '在这一部分中,我们将仪器更改为REMV Session.findById(" wnd [0]")。maximize Session.findById(" wnd [0]/usr/ctxtVBAK-VBELN")。Text =续 Session.findById(" wnd [0]/usr/ctxtVBAK-VBELN")。caretPosition = 8 Session.findById(" wnd [0]")。sendVKey 0 Session.findById(" wnd [0]/usr/tabsTAXI_TABSTRIP_OVERVIEW/tabpT \ 01/ssubSUBSCREEN_BODY:SAPMV45A:4426/subSUBSCREEN_TC:SAPMV45A:4908/tblSAPMV45ATCTRL_U_ERF_KONTRAKT")。verticalrowbar.Position = Session.findById(" wnd [0]/usr/tabsTAXI_TABSTRIP_OVERVIEW/tabpT \ 01/ssubSUBSCREEN_BODY:SAPMV45A:4426/subSUBSCREEN_TC:SAPMV45A:4908/tblSAPMV45ATCTRL_U_ERF_KONTRAKT/ctxtVBAPFOO" [Set.5]。 Session.findById(" wnd [0]/usr/tabsTAXI_TABSTRIP_OVERVIEW/tabpT \ 01/ssubSUBSCREEN_BODY:SAPMV45A:4426/subSUBSCREEN_TC:SAPMV45A:4908/tblSAPMV45ATCTRL_U_ERF_KONTRAKT/ctxtVBAP-KDMAT [5]。)。 Session.findById(" wnd [0]")。sendVKey 2 '改变日期 Session.findById(" wnd [0]/usr/tabsTAXI_TABSTRIP_ITEM/tabpT \ 03")。选择 Session.findById(" wnd [0]/usr/tabsTAXI_TABSTRIP/tabpT \ 03/ssubSUBSCREEN_BODY:SAPLV45W:4201/ctxtVEDA-VDEMDAT")。文本=今天 Session.findById(" wnd [0]/usr/tabsTAXI_TABSTRIP/tabpT \ 03/ssubSUBSCREEN_BODY:SAPLV45W:4201/ctxtVEDA-VDEMDAT")。SetFocus Session.findById(" wnd [0]/usr/tabsTAXI_TABSTRIP/tabpT \ 03/ssubSUBSCREEN_BODY:SAPLV45W:4201/ctxtVEDA-VDEMDAT")。caretPosition = 10 '将INST更改为REMV Session.findById(" wnd [0]/usr/tabsTAXI_TABSTRIP/tabpT \ 10")。选择 Session.findById(" wnd [0]/usr/tabsTAXI_TABSTRIP_ITEM/tabpT \ 10/ssubSUBSCREEN_BODY:SAPMV45A:4454/ctxtVBAP-KDMAT")。Text = rep '删除技术对象中的第一行并保存更改 Session.findById(" wnd [0]/mbar/menu [3]/menu [9]")。选择 Session.findById(" wnd [0]/usr/tblSAPLIWOLOBJK_220")。getAbsoluteRow(0).Selected = True Session.findById(" wnd [0]/tbar [1]/btn [19]")。press Session.findById(" wnd [1]/usr/btnSPOP-OPTION1")。press Session.findById(" wnd [0]/tbar [0]/btn [3]")。press Session.findById(" wnd [0]/tbar [0]/btn [11]")。press '我们确保循环遍历每一行,然后结束 j = j + 1 温德 结束于 结束子
(61.7 kB)
你好Mihail,
请首先在SAP登录选项中禁用本机Windows对话框的使用,如下图所示。
如果已执行此操作,并且对话框进一步出现,而不是SAP对话框,则可以使用AutoItX轻松处理对话框。 如果您无法使用AutoItX,则可以使用VBScript命令AppActivate和SendKeys,但这有点棘手,您可以找到示例此处。
让我们知道您的结果。
干杯
Stefan
一周热门 更多>