You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

VBScript For Each循环错误处理:SAP事务异常跳过方案

SAP脚本错误处理与循环修正方案

问题分析

原代码存在两个核心问题:

  • 语法错误:Next语句被嵌套在If块内,VBScript不允许这种写法,导致脚本无法识别Next关键字。
  • 错误处理逻辑混乱:错误检查时机不对,无法有效捕获订单不存在的错误并跳过当前项处理。

修改后的代码

If Not IsObject(application) Then
   Set SapGuiAuto  = GetObject("SAPGUI")
   Set application = SapGuiAuto.GetScriptingEngine
End If
If Not IsObject(connection) Then
   Set connection = application.Children(0)
End If
If Not IsObject(session) Then
   Set session    = connection.Children(0)
End If
If IsObject(WScript) Then
   WScript.ConnectObject session,     "on"
   WScript.ConnectObject application, "on"
End If

'Variables
Dim order(2)

order(0)="xxx"
order(1)="yyy"
order(2)="zzz"

For Each x In order
    ' 重置错误状态,开启错误捕获
    On Error Resume Next
    Err.Clear ' 清除之前的错误记录
    
    ' 执行SAP查询操作,订单不存在时会在此触发错误
    session.findById("wnd[0]").maximize
    session.findById("wnd[0]/usr/ctxtRC29L-MATNR").text = x
    session.findById("wnd[0]/usr/ctxtRC29L-MATNR").caretPosition = 8
    session.findById("wnd[0]/tbar[1]/btn[8]").press

    ' 检查是否有错误发生
    If Err.Number <> 0 Then
        ' 可选:打印错误信息用于调试
        WScript.Echo "处理订单 " & x & " 时出错:" & Err.Description
        ' 跳过当前循环剩余操作,进入下一个订单处理
        On Error GoTo 0
        Continue For
    End If
    
    ' 无错误时继续执行导出流程
    session.findById("wnd[0]/tbar[1]/btn[45]").press
    session.findById("wnd[1]/usr/subSUBSCREEN_STEPLOOP:SAPLSPO5:0150/sub:SAPLSPO5:0150/radSPOPLI-SELFLAG[1,0]").select
    session.findById("wnd[1]/usr/subSUBSCREEN_STEPLOOP:SAPLSPO5:0150/sub:SAPLSPO5:0150/radSPOPLI-SELFLAG[1,0]").setFocus
    session.findById("wnd[1]/tbar[0]/btn[0]").press

    ' 设置导出路径
    session.findById("wnd[1]/usr/ctxtDY_PATH").text = "C:\Users\blabla"

    ' 设置导出文件名,用&替代+避免字符串拼接错误
    session.findById("wnd[1]/usr/ctxtDY_FILENAME").text = x & ".xls"
    session.findById("wnd[1]/usr/ctxtDY_FILENAME").caretPosition = 12
    session.findById("wnd[1]/tbar[0]/btn[0]").press
    session.findById("wnd[0]/tbar[0]/btn[3]").press
    
    ' 恢复默认错误处理
    On Error GoTo 0
Next

关键改动说明

  • 修正Next语法错误:将Next还原到For Each的对应位置,确保循环结构合法。
  • 优化错误捕获逻辑:在执行SAP查询前清除错误记录,查询后立即检查错误,用Continue For直接跳过当前出错订单的后续操作。
  • 字符串拼接优化:把x + ".xls"改为x & ".xls",避免x包含特殊内容时触发拼接错误。
  • 调试辅助:添加错误信息打印语句,方便定位具体出错的订单(可根据需求删除)。

内容的提问来源于stack exchange,提问作者Aleksi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.04 06:05:20