【问题标题】:How to return SAP error message in excel cell through VBA?如何通过 VBA 在 excel 单元格中返回 SAP 错误消息?
【发布时间】:2020-02-11 10:05:49
【问题描述】:

我编写了一个使用以下 SAP GUI 的自动化脚本:

objSess.findById("wnd[0]").Maximize
objSess.findById("wnd[0]/tbar[0]/okcd").Text = "flqaf"
objSess.findById("wnd[0]").sendVKey 0
objSess.findById("wnd[0]").sendVKey 17
objSess.findById("wnd[1]/usr/cntlALV_CONTAINER_1/shellcont/shell").CurrentCellColumn = "TEXT"
objSess.findById("wnd[1]/usr/cntlALV_CONTAINER_1/shellcont/shell").SelectedRows = "0"
objSess.findById("wnd[1]/usr/cntlALV_CONTAINER_1/shellcont/shell").DoubleClickCurrentCell
objSess.findById("wnd[0]/usr/ctxtS_BELNR-LOW").Text = W_BPNumber
objSess.findById("wnd[0]/usr/ctxtS_BELNR-LOW").SetFocus
objSess.findById("wnd[0]/usr/ctxtS_BELNR-LOW").caretPosition = 10
objSess.findById("wnd[0]").sendVKey 8
objSess.findById("wnd[0]").sendVKey 0
objSess.findById("wnd[0]/tbar[0]/btn[3]").press

一切正常,但有时问题会在 SAP 中中止,而正是在发生这种情况时,我想通过将术语“错误”写入 excel 单元格来捕获它。

我尝试在 vba 中添加这一行

objSheet.Cells(iRow, 5) = GuiStatusbar.Text

还有

objSheet.Cells(iRow, 5) = objSessFindById("wnd[0]/sbar").Text 

代码仍然运行良好,但我在第 5 列中的单元格仍然为空。任何想法如何解决这个问题?

【问题讨论】:

  • 你能分享一张“在 SAP 中中止”的截图吗?你的代码在我的系统上失败了,你能发一个complete, minimal and reproducible code吗?我不明白你的问题是来自 Excel 还是来自 SAP GUI 脚本,你能找出问题的根源吗?

标签: vba sap-gui


【解决方案1】:

稍等片刻可能会有帮助。

例如:

...
objSess.findById("wnd[0]").sendVKey 0

waitTill = Now() + TimeValue("00:00:01")
While Now() < waitTill
 DoEvents
Wend

if objSess.findById("wnd[0]/sbar").messageType = "E" then 'other types: W, I, S, A
 objSheet.Cells(iRow, 5) = objSessFindById("wnd[0]/sbar").Text 
end if

objSess.findById("wnd[0]/tbar[0]/btn[3]").press
...

问候,脚本人

【讨论】:

    猜你喜欢
    • 2021-08-27
    • 1970-01-01
    • 1970-01-01
    • 2021-03-29
    • 2021-08-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多