Python 控制SAP时,无法通过引用SAP 代码对浮窗进行控制

各位高手大家好:

我尝试使用Python 控制SAP 完成一些常规操作:

根据网上的方法:使用 SAP 自带的 Record 功能。
图片说明
得到SAP 操作背后的代码,如下:

session.findById("wnd[0]/tbar[0]/okcd").text = "vk12"
    session.findById("wnd[0]").sendVKey (0)
    session.findById("wnd[0]/usr/ctxtRV13A-KSCHL").text = "YBC0"
    session.findById("wnd[0]/usr/ctxtRV13A-KSCHL").caretPosition = 4
    session.findById("wnd[0]").sendVKey (0)

    session.findById("wnd[1]/usr/sub:SAPLV14A:0100/radRV130-SELKZ[7,0]").select      # 目前 没有办法在这一步中实现功能,浮窗无法进行选择,之间跳进了浮窗中的第一个选项
    session.findById("wnd[1]/usr/sub:SAPLV14A:0100/radRV130-SELKZ[7,0]").setFocus    # 目前 没有办法在这一步中实现功能,浮窗无法进行选择,之间跳进了浮窗中的第一个选项
    session.findById("wnd[1]").sendVKey (0)
    session.findById("wnd[0]/usr/ctxtF001").text = "AU10"
    session.findById("wnd[0]/usr/ctxtF001").caretPosition = 4
    session.findById("wnd[0]/usr/btn%_F002_%_APP_%-VALU_PUSH").press
    session.findById("wnd[1]/usr/tabsTAB_STRIP/tabpSIVA/ssubSCREEN_HEADER:SAPLALDB:3010/tblSAPLALDBSINGLE/ctxtRSCSEL_255-SLOW_I[1,0]").text = number_pop

    session.findById("wnd[1]/tbar[0]/btn[8]").press
    session.findById("wnd[0]/tbar[1]/btn[8]").press
    session.findById("wnd[0]/usr/btnFCODE_MARL").press
    session.findById("wnd[0]/mbar/menu[0]/menu[5]/menu[0]").select
    session.findById("wnd[0]/mbar/menu[5]/menu[5]/menu[2]/menu[1]").select
    session.findById("wnd[1]/usr/subSUBSCREEN_STEPLOOP:SAPLSPO5:0150/sub:SAPLSPO5:0150/radSPOPLI-SELFLAG[1,0]").select
    session.findById("wnd[1]/usr/subSUBSCREEN_STEPLOOP:SAPLSPO5:0150/sub:SAPLSPO5:0150/radSPOPLI-SELFLAG[1,0]").setFocus
    session.findById("wnd[1]").sendVKey (0)
    session.findById("wnd[1]/usr/ctxtDY_FILENAME").text = "123.xls"
    session.findById("wnd[1]/usr/ctxtDY_FILENAME").caretPosition = 7
    session.findById("wnd[1]/tbar[0]/btn[0]").press

目前遇到了一个困难: 通过以上方法得到的代码没有办法对SAP 弹出的浮窗中的内容进行操作:

比如,对下图之中弹出的弹窗中的选项进行选择

图片说明

对弹窗进行选择的SAP代码如下。 但目前这两行代码并不能发挥功能

session.findById("wnd[1]/usr/sub:SAPLV14A:0100/radRV130-SELKZ[7,0]").select      # 目前 没有办法在这一步中实现功能,浮窗无法进行选择,之间跳进了浮窗中的第一个选项
session.findById("wnd[1]/usr/sub:SAPLV14A:0100/radRV130-SELKZ[7,0]").setFocus    # 目前 没有办法在这一步中实现功能,浮窗无法进行

请问各位有经验的高手,这种情况有没有解决的建议。

谢谢

https://blog.csdn.net/champaignwolf/article/details/82250620

尝试使用方向键进行选择,用回车键来确认看看。

不知道你这个文件解决了没有?你的record应该是记录下所有操作后在停止记录,这样就连浮窗的操作都一起记录了。
比如说,当你从“SAP Easy Access”按下“记录”按钮开始记录行为时,记录器会完整不间断地记录下你的所有SAP操作。
所以你应该在返回“SAP Easy Access”页面后,才停止记录SAP行为。这时候,你将记录了所有的操作,包括开关浮窗,并在浮窗内的点选。

我最近也遇到了这个问题,在将vbs转换成python语句时有的细节可能会有影响。

拿这个例子来说我是在session.FindById().setFocus的后面加个括号变成session.FindById().setFocus()就解决了。

楼主可以使用下面的工具来自动生成python代码https://tracker.stschnell.de/