VBA定义SAP在哪个屏幕上(防止错误)

时间:2019-01-22 19:47:09

标签: excel vba sap

当前遇到错误问题:通过VBA在SAP中迁移订单时,可能需要重新确认订单。然而,这并非总是如此。

我已经在代码的开始部分建立了一个错误循环,所以我不再遇到对象错误。但是,我希望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 :(得分:1)

您可以尝试以下操作。

例如:

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

您必须使用真实的屏幕名称,而不是“交货屏幕”。

关于, 脚本人