Вход в сессию SAP по Python - PullRequest
       15

Вход в сессию SAP по Python

0 голосов
/ 01 февраля 2020

Я использовал этот скрипт для входа в сеанс 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)

однако он всегда возвращается с ошибкой:

hostname 'PRD' unknown
check you application server name

Кто-нибудь знает, как это исправить? спасибо

Ответы [ 2 ]

2 голосов
/ 01 февраля 2020

Имя переменной должно быть "PRD" (сама строка должна содержать двойные кавычки). Python считает Name = """PRD""" таким же, как Name = "PRD", поэтому это неверно, поскольку переменная Name будет содержать PRD (пропущенные двойные кавычки).

Следовательно, необходимо использовать строку backsla sh (Name = "\"PRD\"" или другие упомянутые возможности здесь ) для сохранения двойной кавычки в переменной Name.

Полный код:

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)
1 голос
/ 02 февраля 2020

Используйте этот простой однострочный для подключения:

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, сейчас предпочтительнее .

...