通过Win32 COM(Python)连接到SAP会话

2024-05-14 10:35:04 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试使用Win32 COM通过python建立与当前SAP会话的连接。 到目前为止,我找到的所有指南都是使用“saplogon.exe”来实现这一点的,但对于我们的系统,我们只能通过Sap登录板(“saplgpad.exe”)登录。任何文件夹中都不存在“saplogon.exe”

有人能帮我接通我的电话吗

使用“saplogon.exe”的代码如下所示:

import win32com.client
import sys
import subprocess
import time


# This function will Login to SAP from the SAP Logon window

def saplogin():

    try:

        path = r"C:\Program Files (x86)\SAP\FrontEnd\SAPgui\saplogon.exe"
        subprocess.Popen(path)
        time.sleep(10)

        SapGuiAuto = win32com.client.GetObject('SAPGUI')
        if not type(SapGuiAuto) == win32com.client.CDispatch:
            return

        application = SapGuiAuto.GetScriptingEngine
        if not type(application) == win32com.client.CDispatch:
            SapGuiAuto = None
            return
        connection = application.OpenConnection("DCG210", True)

        if not type(connection) == win32com.client.CDispatch:
            application = None
            SapGuiAuto = None
            return

        session = connection.Children(0)
        if not type(session) == win32com.client.CDispatch:
            connection = None
            application = None
            SapGuiAuto = None
            return

        session.findById("wnd[0]/usr/txtRSYST-BNAME").text = "USERNAME"
        session.findById("wnd[0]/usr/pwdRSYST-BCODE").text = "PASSWORD"
        session.findById("wnd[0]").sendVKey(0)

    except:
        print(sys.exc_info()[0])

    finally:
        session = None
        connection = None
        application = None
        SapGuiAuto = None


saplogin()

到目前为止,唯一对我有效的方法是通过快捷方式登录,但这样我就无法进入会话以进一步编写脚本:

import subprocess

# logs into SAP with auto choosing of PROD environment.
subprocess.check_call(['C:\Program Files (x86)\SAP\FrontEnd\SAPgui\\sapshcut.exe', '-system=PRD', '-client=010', '-user=XXXXXX', '-pw=XXXXXX'])

有没有一种方法可以将这两种方法结合起来让它工作

非常感谢你们提供的帮助


Tags: importclientnoneifapplicationsessiontypenot

热门问题