通过 Python 登录到 SAP 会话

Login to SAP session by Python

我使用此脚本登录 SAP 会话:

from subprocess import call
import win32com.client
import time
import os

GUIPath = 'C:/Program Files (x86)/SAP/FrontEnd/SAPgui/'
WinTitle = 'SAP'
Name = """PRD"""
SID = 'PRD'
InstanceNo = '01'

shell = win32com.client.Dispatch("WScript.Shell")
call(os.path.join(GUIPath, 'SAPgui.exe') + " " + Name + " " + InstanceNo)

然而,它总是 return 并出现错误:

hostname 'PRD' unknown
check you application server name

有人知道如何解决这个问题吗? 谢谢

变量名称需要是"PRD"(字符串本身必须包含双引号)。 Python 认为 Name = """PRD"""Name = "PRD" 相同,所以它是不正确的,因为变量名称将只包含 PRD(缺少双引号)。

因此,需要使用字符串反斜杠(Name = "\"PRD\""或提到的其他可能性here)来维护变量名称中的双引号。

完整代码:

from subprocess import call
import win32com.client
import time
import os

GUIPath = 'C:/Program Files (x86)/SAP/FrontEnd/SAPgui/'
WinTitle = 'SAP'
Name = "\"PRD\""
SID = 'PRD'
InstanceNo = '01'

shell = win32com.client.Dispatch("WScript.Shell")
call(os.path.join(GUIPath, 'SAPgui.exe') + " " + Name + " " + InstanceNo)

使用这个简单的单线连接:

import subprocess
subprocess.check_call(['C:\Program Files (x86)\SAP\FrontEnd\SAPgui\sapshcut.exe', '-system=DCG210', '-client=100', '-user=USERNAME', '-pw=PASSWORD'])

您应该使用 subprocess 模块而不是 os.call,现在是 preferred