SAP脚本中的小姐错误

2020-09-13 14:24发布

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

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


嗨,我有问题。

我编写了一个脚本,用于从BA23下载文档,但是某些对象没有活动的附件字段。 因此,脚本停止了。

是否可以在脚本内创建算法,以便它忽略此错误并继续读取Excel?

下面是我的代码

感谢您的帮助。

如果不是IsObject(application),则
    设置SapGuiAuto = GetObject(" SAPGUI")
    设置应用程序= SapGuiAuto.GetScriptingEngine
 万一
 如果不是IsObject(connection)然后
    设置连接= application.Children(0)
 万一
 如果不是IsObject(session)然后
    设置会话= connection.Children(0)
 万一
 如果IsObject(WScript)然后
    WScript.ConnectObject会话,"打开"
    WScript.ConnectObject应用程序,"打开"
 万一


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






 昏暗的objExcel,objWorkbook,objSheet,i


 设置objExcel = CreateObject(" Excel.Application")


 设置objWorkbook = objExcel.Workbooks.Open(" C:\ Users \ Z003S0BF \ Desktop \ My_scripts \ VF03_mass_download \ Book3.xlsx")


 设置objSheet = objWorkbook.Sheets(" Sheet1")


 对于i = 2到objSheet.UsedRange.Rows.Count




 COL1 = Trim(CStr(objSheet.Cells(i,1).Value))'Column1
 COL2 = Trim(CStr(objSheet.Cells(i,2).Value))'Column2
 COL3 = Trim(CStr(objSheet.Cells(i,3).Value))'Column3






 session.findById(" wnd [0]")。maximize
 session.findById(" wnd [0]/tbar [0]/okcd")。text =" VA23"
 session.findById(" wnd [0]")。sendVKey 0
 session.findById(" wnd [0]/usr/ctxtVBAK-VBELN")。text = COL1
 session.findById(" wnd [0]")。sendVKey 0
 session.findById(" wnd [0]/titl/shellcont/shell")。pressContextButton"%GOS_TOOLBOX"
 session.findById(" wnd [0]/titl/shellcont/shell")。selectContextMenuItem"%GOS_VIEW_ATTA"
 session.findById(" wnd [1]/usr/cntlCONTAINER_0100/shellcont/shell")。selectedRows =" 0"
 session.findById(" wnd [1]/usr/cntlCONTAINER_0100/shellcont/shell")。pressToolbarButton"%ATTA_EXPORT"
 session.findById(" wnd [1]/usr/ctxtDY_PATH")。text = COL3
 session.findById(" wnd [1]/usr/ctxtDY_FILENAME")。text = COL2
 session.findById(" wnd [1]/usr/ctxtDY_FILENAME")。caretPosition = 5
 session.findById(" wnd [1]/tbar [0]/btn [11]")。按
 session.findById(" wnd [1]/tbar [0]/btn [0]")。按
 session.findById(" wnd [0]/tbar [0]/btn [3]")。按
 session.findById(" wnd [0]/tbar [0]/btn [3]")。按


 下一个


 msgbox"处理完成"
 
saperror.jpg (14.5 kB)

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

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


嗨,我有问题。

我编写了一个脚本,用于从BA23下载文档,但是某些对象没有活动的附件字段。 因此,脚本停止了。

是否可以在脚本内创建算法,以便它忽略此错误并继续读取Excel?

下面是我的代码

感谢您的帮助。

如果不是IsObject(application),则
    设置SapGuiAuto = GetObject(" SAPGUI")
    设置应用程序= SapGuiAuto.GetScriptingEngine
 万一
 如果不是IsObject(connection)然后
    设置连接= application.Children(0)
 万一
 如果不是IsObject(session)然后
    设置会话= connection.Children(0)
 万一
 如果IsObject(WScript)然后
    WScript.ConnectObject会话,"打开"
    WScript.ConnectObject应用程序,"打开"
 万一


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






 昏暗的objExcel,objWorkbook,objSheet,i


 设置objExcel = CreateObject(" Excel.Application")


 设置objWorkbook = objExcel.Workbooks.Open(" C:\ Users \ Z003S0BF \ Desktop \ My_scripts \ VF03_mass_download \ Book3.xlsx")


 设置objSheet = objWorkbook.Sheets(" Sheet1")


 对于i = 2到objSheet.UsedRange.Rows.Count




 COL1 = Trim(CStr(objSheet.Cells(i,1).Value))'Column1
 COL2 = Trim(CStr(objSheet.Cells(i,2).Value))'Column2
 COL3 = Trim(CStr(objSheet.Cells(i,3).Value))'Column3






 session.findById(" wnd [0]")。maximize
 session.findById(" wnd [0]/tbar [0]/okcd")。text =" VA23"
 session.findById(" wnd [0]")。sendVKey 0
 session.findById(" wnd [0]/usr/ctxtVBAK-VBELN")。text = COL1
 session.findById(" wnd [0]")。sendVKey 0
 session.findById(" wnd [0]/titl/shellcont/shell")。pressContextButton"%GOS_TOOLBOX"
 session.findById(" wnd [0]/titl/shellcont/shell")。selectContextMenuItem"%GOS_VIEW_ATTA"
 session.findById(" wnd [1]/usr/cntlCONTAINER_0100/shellcont/shell")。selectedRows =" 0"
 session.findById(" wnd [1]/usr/cntlCONTAINER_0100/shellcont/shell")。pressToolbarButton"%ATTA_EXPORT"
 session.findById(" wnd [1]/usr/ctxtDY_PATH")。text = COL3
 session.findById(" wnd [1]/usr/ctxtDY_FILENAME")。text = COL2
 session.findById(" wnd [1]/usr/ctxtDY_FILENAME")。caretPosition = 5
 session.findById(" wnd [1]/tbar [0]/btn [11]")。按
 session.findById(" wnd [1]/tbar [0]/btn [0]")。按
 session.findById(" wnd [0]/tbar [0]/btn [3]")。按
 session.findById(" wnd [0]/tbar [0]/btn [3]")。按


 下一个


 msgbox"处理完成"
 
saperror.jpg (14.5 kB)
付费偷看设置
发送
4条回答
N-Moskvin
1楼 · 2020-09-13 15:18.采纳回答

你好Svyatoslav,

我认为这是可能的。 您可以在状态栏中阅读该消息,并且可以根据消息中的信息来决定要执行的操作。 这里是一个例子:

 session.findById(" wnd [0]/tbar [0]/okcd")。text ="/img/nSE16"
 session.findById(" wnd [0]/tbar [0]/btn [0]")。按

 茶几
 arrTable = Array(" APPLE"," TADIR"," BANANA")

 对于i = 0到UBound(arrTable)

   session.findById(" wnd [0]/usr/ctxtDATABROWSE-TABLENAME")。text = arrTable(i)
   session.findById(" wnd [0]")。sendVKey 0

   如果InStr(session.findById(" wnd [0]/sbar/pane [0]")。Text," nicht aktiv im Dictionary vorhanden")然后
     MsgBox"表格"和" arrTable(i)和"不存在"
   其他
     session.findById(" wnd [0]/tbar [0]/btn [3]")。按
   万一

 下一个
 

我打开TAC SE16并用不同的表名定义一个数组,但是其中一些是虚构的。 我遍历数组并将表名设置为字段,并取决于状态栏中的文本(wnd [0]/sbar/pane [0]),然后决定要做什么。 如果该表存在,我会做一些活动,否则会弹出一个消息框。

让我们知道您的结果。

干杯
Stefan

灬番茄
2楼-- · 2020-09-13 15:07

你好Svyatoslav,

感谢您的回答和密码。

对于您的问题:UsedRange.Rows.Count是否有可能提供较高的行号(已填充数据)? 请尝试一下,并用作替代ActiveSheet.Range(" A65536")。End(xlUp).Row。

让我们知道您的结果。

干杯
Stefan

大简至美
3楼-- · 2020-09-13 15:21

此外,还可以进行小检查

zBool = session.FindById(" wnd [0]/mbar/menu [0]/menu [2]")。Changeable

如果zBool为false,请不要尝试单击它,脚本将终止,因为这不是该菜单项的有效操作

显然用要测试可用性的任何菜单项替换" wnd [0]/mbar/menu [0]/menu [2]"。 数组从零开始计数。



SKY徐
4楼-- · 2020-09-13 15:20

你好。 感谢您的帮助,一切正常。 只有一个小问题不会影响功能。 当脚本在读取完Excel的最后一行后完成工作时,该脚本将停止并显示错误,而不是提示该过程已准备就绪。

下面是我的代码

如果不是IsObject(application),则
    设置SapGuiAuto = GetObject(" SAPGUI")
    设置应用程序= SapGuiAuto.GetScriptingEngine
 万一
 如果不是IsObject(connection)然后
    设置连接= application.Children(0)
 万一
 如果不是IsObject(session)然后
    设置会话= connection.Children(0)
 万一
 如果IsObject(WScript)然后
    WScript.ConnectObject会话,"打开"
    WScript.ConnectObject应用程序,"打开"
 万一


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






 昏暗的objExcel,objWorkbook,objSheet,i


 设置objExcel = CreateObject(" Excel.Application")


 设置objWorkbook = objExcel.Workbooks.Open(" C:\ Users \ Z003S0BF \ Desktop \ My_scripts \ VF03_mass_download \ Book3.xlsx")


 设置objSheet = objWorkbook.Sheets(" Sheet1")




 对于i = 2到objSheet.UsedRange.Rows.Count




 COL1 = Trim(CStr(objSheet.Cells(i,1).Value))'Column1
 COL2 = Trim(CStr(objSheet.Cells(i,2).Value))'Column2
 COL3 = Trim(CStr(objSheet.Cells(i,3).Value))'Column3






 session.findById(" wnd [0]")。maximize
 session.findById(" wnd [0]/tbar [0]/okcd")。text =" VA23"
 session.findById(" wnd [0]")。sendVKey 0
 session.findById(" wnd [0]/usr/ctxtVBAK-VBELN")。text = COL1
 session.findById(" wnd [0]")。sendVKey 0
 session.findById(" wnd [0]/titl/shellcont/shell")。pressContextButton"%GOS_TOOLBOX"
 session.findById(" wnd [0]/titl/shellcont/shell")。selectContextMenuItem"%GOS_VIEW_ATTA"


  如果InStr(session.findById(" wnd [0]/sbar/pane [0]")。Text,"服务<'Attachment list'>不可用")然后


 session.findById(" wnd [0]/tbar [0]/btn [15]")。按


   其他
  
 session.findById(" wnd [1]/usr/cntlCONTAINER_0100/shellcont/shell")。selectedRows =" 0"
 session.findById(" wnd [1]/usr/cntlCONTAINER_0100/shellcont/shell")。pressToolbarButton"%ATTA_EXPORT"
 session.findById(" wnd [1]/usr/ctxtDY_PATH")。text = COL3
 session.findById(" wnd [1]/usr/ctxtDY_FILENAME")。text = COL2
 session.findById(" wnd [1]/usr/ctxtDY_FILENAME")。caretPosition = 5
 session.findById(" wnd [1]/tbar [0]/btn [11]")。按
 session.findById(" wnd [1]/tbar [0]/btn [0]")。按
 session.findById(" wnd [0]/tbar [0]/btn [3]")。按
 session.findById(" wnd [0]/tbar [0]/btn [3]")。按




   万一


 下一个


 msgbox"处理完成"
 

一周热门 更多>