如何使用win32com使用Python静默登录SAP

时间:2017-02-15 16:37:59

标签: python sap pywin32

我有一个关于Logon SAP的问题。现在我可以使用win32COM使用Python登录SAP。下面是代码。 在VB中,我可以使用R3.Conn.Logon(1,True)来轻松登录。但是在Python中,Logon似乎不是一种方法,不允许我将参数传递给它。

我尝试在Python中使用R3.Conn.Logon(1,True),但是它返回了一个错误,告诉我Logon不可调用。我应该如何在Python中静静地调用logon

由于

from win32com.client import Dispatch

R3 = Dispatch("SAP.Functions")
R3.Conn.System = 'xxx'
R3.Conn.Client = '100'
# other values needed to pass to R3.Conn
R3.Conn.logon #here is the problem

1 个答案:

答案 0 :(得分:0)

这对我有用。 仍在试验中,我想添加字段选择,当然还要向RFC_READ_TABLE添加过滤器。但是连接有效。

from win32com.client import Dispatch

Functions = Dispatch("SAP.Functions")

Functions.Connection.Client = "000"
Functions.Connection.ApplicationServer = "your server"
Functions.Connection.Language = "EN"
Functions.Connection.User = "you"
Functions.Connection.Password = "your pass"
Functions.Connection.SystemNumber = "00"
Functions.Connection.UseSAPLogonIni = False

if (Functions.Connection.Logon (0,True) == True):
    print("Logon OK")
    RfcCallTransaction = Functions.Add("RFC_READ_TABLE")
    strExport1 = RfcCallTransaction.exports("QUERY_TABLE")
    strExport2 = RfcCallTransaction.exports("DELIMITER")
    strExport3 = RfcCallTransaction.exports("ROWSKIPS")
    strExport4 = RfcCallTransaction.exports("ROWCOUNT")
    tblOptions = RfcCallTransaction.Tables("OPTIONS")
    #RETURNED DATA
    tblData = RfcCallTransaction.Tables("DATA")
    tblFields = RfcCallTransaction.Tables("FIELDS")


    strExport1.Value = 'AGR_DEFINE'
    strExport2.Value = ";"
    strExport3.Value = 0
    strExport4.Value = 10

    if RfcCallTransaction.Call == True:
        print ("Function call successful")
        #print (tblData.RowCount)
        j = 1
        while j < tblData.RowCount:
            print (tblData(j,"WA"))
            j = j + 1