VBA, чтобы определить, на каком экране SAP (предотвращение ошибок) - PullRequest
0 голосов
/ 22 января 2019

В настоящее время возникает проблема с ошибкой: при переносе заказов в SAP через VBA может потребоваться повторное подтверждение заказа. Тем не менее, это не всегда так.

Я уже встроил цикл ошибок в начале кода, поэтому я больше не получаю объектные ошибки. Тем не менее, я бы хотел, чтобы VBA ВЫБИРАЛ между 2 результатами.

Я собрал код (который приведет к переходу в следующий порядок, если возникнет ошибка):

'Press "full delivery (build a if function that if field delivery exists and is >1, press f6)
If Session.findById("wnd[0]/usr/tbl/SAPAPO/SAPLATP4CTR_FINAL/txt/SAPAPO/ATP4CSD-BMNGL[6,0]").Text <> "" 
Then Session.findById("wnd[0]/tbar[1]/btn[6]").press
End If

Затем, если его нет на этом экране, он должен просто проверить, находится ли он на исходном экране:

    if Session.findById("wnd[0]/usr/tabsTAXI_TABSTRIP_OVERVIEW/tabpT\01/ssubSUBSCREEN_BODY:SAPMV45A:4400/subSUBSCREEN_TC:SAPMV45A:4900/tblSAPMV45ATCTRL_U_ERF_AUFTRAG/ctxtVBAP-WERKS[11,0]").Text <>"" then
'Save order
Session.findById("wnd[0]/tbar[0]/btn[11]").press
End if

К сожалению, это вызывает ошибку, если она не переходит к экрану доставки (он просто остается на экране обычного заказа). То, что я хочу сделать, это пройти через код. Есть ли способ, с помощью которого я могу определить, на каком экране я сейчас нахожусь, чтобы VBA предприняла какие-то действия.

1 Ответ

0 голосов
/ 23 января 2019

Вы можете попробовать следующее.

например:

If Session.findById("wnd[0]").text = "Delivery screen" then 
...
end if

Вы должны будете использовать реальное имя экрана вместо «Экран доставки».

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...