Как вернуть сообщение об ошибке SAP в ячейке Excel через VBA? - PullRequest
0 голосов
/ 11 февраля 2020

Я написал скрипт автоматизации, который использует следующие 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 остаются пустыми. Есть идеи как это решить?

1 Ответ

0 голосов
/ 11 февраля 2020

Это может помочь, если вы немного подождете.

для примера:

...
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
...

С уважением, ScriptMan

...