通过win32comPython连接到SAP会话

问题描述

我正在尝试使用win32com与python建立到当前SAP会话的连接。 到目前为止,我发现的所有指南都使用“ saplogon.exe”来执行此操作,但是对于我们的系统,我们只能通过Sap Logon Pad(“ 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'])

也许有一种方法可以将这两种方法结合起来以使其正常工作吗?

非常感谢你们提供的任何帮助。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)