VBA 定义 SAP 在哪个屏幕中(防止出错)
VBA to define in which screen SAP is (preventing errors)
目前运行遇到一个错误问题:通过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/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 对此采取行动。
您可以尝试以下方法。
例如:
If Session.findById("wnd[0]").text = "Delivery screen" then
...
end if
您必须使用真实的屏幕名称而不是 "Delivery screen"。
此致,
脚本人
目前运行遇到一个错误问题:通过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/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 对此采取行动。
您可以尝试以下方法。
例如:
If Session.findById("wnd[0]").text = "Delivery screen" then
...
end if
您必须使用真实的屏幕名称而不是 "Delivery screen"。
此致, 脚本人