Python+SAP GUI Scripting连接报错:pywintypes.com_error(-2147221020)
SAP自动化脚本错误:Invalid syntax(-2147221020)
核心问题
win32com.client.GetObject("SAPGUI")的参数格式错误,导致无法正确绑定到已运行的SAPGUI COM实例。
修正步骤
修正GetObject调用
Win32com获取SAPGUI实例需要使用正确的参数格式,替换原代码中的对应行:sap_gui = win32com.client.GetObject(None, "SAPGUI")若上述写法仍报错,可尝试完整ProgID:
sap_gui = win32com.client.GetObject("", "SAPGUI.SAPGUI.1")补全方法调用的括号
SAP脚本引擎中的方法必须通过括号执行,否则仅为方法引用,无法触发操作:- 替换
application = sap_gui.GetScriptingEngine为:application = sap_gui.GetScriptingEngine() - 替换
session.findById("wnd[0]").maximize为:session.findById("wnd[0]").maximize()
- 替换
移除冗余的连接对象赋值
application.OpenConnection("QA", True)已返回有效连接对象,无需再通过application.Children(0)重新获取,这会覆盖之前的连接实例。
修正后完整代码
import pythoncom, win32com.client def sapLogin(): try: pythoncom.CoInitialize() sap_gui = win32com.client.GetObject(None, "SAPGUI") application = sap_gui.GetScriptingEngine() connection = application.OpenConnection("QA", True) session = connection.Children(0) session.findById("wnd[0]").maximize() finally: pythoncom.CoUninitialize() sapLogin()
额外验证项
- 确认SAP客户端已启动,且处于运行状态
- 确认SAP Scripting功能全量开启:
- 客户端:
选项 -> 辅助功能 -> 启用脚本 - 服务器端:事务码
RZ11设置sapgui/user_scripting为TRUE
- 客户端:
- 确保Python版本位数(32/64位)与SAP客户端位数完全匹配
内容的提问来源于stack exchange,提问作者Nqaba Melapi
相关产品推荐
相关产品推荐

