0

亲爱的,首先这是我第一次在 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

但是我不知道如何为我的目的使用此功能。

谢谢您的帮助!

4

2 回答 2

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()

然后连接到您的基地。

于 2020-12-04T14:47:13.170 回答
0

我最近也遇到了这个问题。

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

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

于 2021-09-07T05:18:54.277 回答