连接到 SAP GUI 时出现 win32com.client.GetObject 错误

问题描述 投票:0回答:3

亲爱的, 首先,这是我第一次在 Stackoverflow 上提问,所以如果我没有遵循正确的方法,请原谅我。

我遇到了 win32com 的问题,恳请您的帮助。 我正在尝试连接到 SAP GUI 以便自动执行某些任务。

import win32com.client

SapGuiAuto = win32com.client.GetObject('SAPGUI')

我收到以下错误(直到昨天一切正常..):

Traceback (most recent call last):
  File "C:/Users/xxxxx/AppData/Roaming/JetBrains/PyCharmCE2020.1/scratches/PySAPscript.py", line 157, in <module>
    SAP_OP()
  File "C:/Users/xxxxx/AppData/Roaming/JetBrains/PyCharmCE2020.1/scratches/PySAPscript.py", line 18, in SAP_OP
    SapGuiAuto = win32com.client.GetObject('SAPGUI')
  File "C:\Users\xxxxx\PycharmProjects\yyyyyy\venv\lib\site-packages\win32com\client\__init__.py", line 72, in GetObject
    return Moniker(Pathname, clsctx)    
  File "C:\Users\xxxxxx\PycharmProjects\yyyyyyy\venv\lib\site-packages\win32com\client\__init__.py", line 87, in Moniker
    moniker, i, bindCtx = pythoncom.MkParseDisplayName(Pathname)
pywintypes.com_error: (-2147221020, 'Invalid syntax.', None, None)

我找到了一些有关此问题的文档,建议使用 pythoncom.CoInitialize():

使用 win32com 进行多线程

但是我不知道如何使用这个功能来达到我的目的。

谢谢您的帮助!

win32com sap-gui pythoncom moniker
3个回答
1
投票

我最近也遇到这个问题了

sap和python的启动权限不一样。 例如,这两个都应该以管理员权限运行,或以普通用户权限运行。

我不保证这个方法能解决你的问题,但你可以尝试:)


0
投票

考虑到您有变量(SAP_Path、SAP_system_id、SAP_group)或(SAP_Path、 SAP_sid、SAP_instance_no)而不是...

shell = win32com.client.Dispatch("WScript.Shell")


call(SAP_Path + " /R/" + SAP_system_id + "/G/" + SAP_group)
OR: call(SAP_Path + " " + SAP_sid + " " + SAP_instance_no)

    
sap_gui_obj = win32com.client.GetObject("SAPGUI")
application = sap_gui_obj.GetScriptingEngine
connection = application.children(application.connections.count - 1)
session = connection.children(0)
session.findById("wnd[0]").maximize()

然后连接到您的底座。


0
投票

尝试运行从

SAP GUI
(桌面)应用程序触发的脚本时,我遇到了同样的问题。对我有用的解决方案是接受使用
Flask
SAP GUI
pythoncom.CoInitialize()
语句操作的代码:
pythoncom.CoUinitialize()

© www.soinside.com 2019 - 2024. All rights reserved.