简体   繁体   English

使用 SAP GUI 脚本和 VBA 处理 SAP 错误

[英]SAP Error handling using SAP GUI scripting and VBA

I am trying to automate some of my SAP tasks using VBA.我正在尝试使用 VBA 自动化我的一些 SAP 任务。

In case of SAP error, I want my VBA to show error as shown in error bar (in SAP).如果出现 SAP 错误,我希望我的 VBA 显示错误,如错误栏中所示(在 SAP 中)。

If case of no error, proceed with Scripting code and end with message box "Process completed".如果没有错误,继续执行脚本代码并以消息框“处理完成”结束。

Please check my code.请检查我的代码。 It is not working.它不工作。 Any suggestion or debugging would be highly appreciated.任何建议或调试将不胜感激。

col1 = Trim(CStr(objSheet.Cells(2, 1).Value))
col2 = Trim(CStr(objSheet.Cells(2, 2).Value))
col3 = Trim(CStr(objSheet.Cells(2, 3).Value))
  
'Scripting for VA03 data extraction

Session.FindById("wnd[0]").maximize

Session.FindById("wnd[0]/tbar[0]/okcd").Text = "/nxxxx"
Session.FindById("wnd[0]/tbar[0]/btn[0]").press

Session.FindById("wnd[0]/usr/ctxtVBAK-VBELN").Text = col1
Session.FindById("wnd[0]/usr/ctxtVBAK-VBELN").caretPosition = 10
Session.FindById("wnd[0]/tbar[0]/btn[0]").press

If Session.FindById("wnd[0]/sbar").Text = "SD Document" & "col1" & "is not in the database or has been archived" Then

  ' SAP GUI error processing
  objSheet.Cells(2, 3).Value = Session.FindById("wnd[0]/sbar").Text

Else

  Session.FindById("wnd[0]/usr/tabsTAXI_TABSTRIP_OVERVIEW/tabpT\01/" _
      & "ssubSUBSCREEN_BODY:SAPMV45A:4400/subSUBSCREEN_TC:SAPMV45A:4900/" _
      & "subSUBSCREEN_BUTTONS:SAPMV45A:4050/btnBT_PKON").press
  Session.FindById("wnd[0]/usr/tabsTAXI_TABSTRIP_ITEM/tabpT\03").Select
  objSheet.Cells(2, 2).Value = Session.FindById( "wnd[0]/usr/tabsTAXI_TABSTRIP_ITEM/" _
      & "tabpT\03/ssubSUBSCREEN_BODY:SAPMV45A:4452/ctxtVBAP-VSTEL").Text

  MsgBox "Process Completed"

End If

You could check the SAP status bar like that您可以像这样检查 SAP 状态栏

Function StatusBarError(Session as object) As Boolean

Dim objSapStatusBar As Object

   Set objSapStatusBar = Session.findById("wnd[0]/sbar")
   If objSapStatusBar.messagetype = "E" Then
       StatusBarError = True
   Else
       StatusBarError = False
   End If

End Function

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM