MaoBisheng

Asp.Net(C#) & SQL & Oracle

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::

C# 登录SAP命令---已安装SAP GUI 640 WIN32

添加引用:SAPLogonCtrl

SAPLogonCtrl.SAPLogonControlClass sapLogon = new SAPLogonCtrl.SAPLogonControlClass();
sapLogon.User 
= strUser;                                      //Specify user
sapLogon.Password = strPassword;                         //Then password
sapLogon.Client = strClient;                                   //Client
sapLogon.ApplicationServer = strApplicationServer;    //Target server address
sapLogon.Language = strLanguage;                         //Language code
sapLogon.SystemNumber = iSystemNumber;              //SystemNumber

SAPLogonCtrl.Connection sapConn 
= (SAPLogonCtrl.Connection)sapLogon.NewConnection();

if (!sapConn.Logon(0true))
{
    Msg 
= "Cannot Log on to SAP";                           //Issue message if cannot logon
    return false;
}

 

登录进去了,但是不知如何调用(不用SAP.Connector 2.0),网上也找不到相关信息,只能到此为止。。。

C# 不行,那只能用VB.Net写类似Function了,打包成dll,在C#中调用。

以下是VB.Net调用C#例子:

 

Public Class QMSToSAP

    
Public strPostNO As String
    
Public strErrorMsg As String
    
Private strUser As String
    
Private strPassword As String
    
Private strClient As String
    
Private strApplicationServer As String
    
Private strLanguage As String
    
Private iSystemNumber As Integer

    
Public Sub New(ByVal user As StringByVal password As StringByVal client As String, _
            
ByVal applicationServer As StringByVal language As StringByVal systemNumber As Integer)
        strUser 
= user
        strPassword 
= password
        strClient 
= client
        strApplicationServer 
= applicationServer
        strLanguage 
= language
        iSystemNumber 
= systemNumber
    
End Sub

    
Public Function QMStoSAP(ByVal dt As DataTable) As Boolean
        QMStoSAP 
= False
        
Dim sapConn As Object ''Declare variant
        sapConn = CreateObject("SAP.Functions"''Create ActiveX object

        
''Specify user
        sapConn.Connection.user = strUser
        
''Then password
        sapConn.Connection.Password = strPassword
        
''Client
        sapConn.Connection.Client = strClient
        
''Target server address
        sapConn.Connection.ApplicationServer = strApplicationServer
        
''Language code
        sapConn.Connection.Language = strLanguage
        
''SystemNumber
        sapConn.Connection.SystemNumber = iSystemNumber

        
If sapConn.Connection.Logon(0True<> True Then
            QMStoSAP 
= False
            
MsgBox("Cannot Log on to SAP"''Issue message if cannot logon
            Exit Function
        
End If

        
'Define function
        Dim objRfcFunc As Object
        objRfcFunc 
= sapConn.Add("ZRFC_WO_AUTO_GR")

        
Dim objVBPA As Object
        objVBPA 
= objRfcFunc.Tables("ITABIN")
        strErrorMsg 
= ""
        strPostNO 
= ""
        
'set value for shipemnt
        For Each dr As DataRow In dt.Rows
            objVBPA.Rows.Add()
            objVBPA(objVBPA.RowCount, 
"ZPALLETID"= Trim(dr("ZPALLETID"))
            objVBPA(objVBPA.RowCount, 
"PLANT"= Trim(dr("PLANT"))
            objVBPA(objVBPA.RowCount, 
"COSTCENTER"= Trim(dr("COSTCENTER"))
            objVBPA(objVBPA.RowCount, 
"WO"= Trim(dr("WO"))
            objVBPA(objVBPA.RowCount, 
"QTY"= Trim(dr("QTY"))
            objVBPA(objVBPA.RowCount, 
"MATERIAL"= Trim(dr("MATERIAL"))
            objVBPA(objVBPA.RowCount, 
"REGION"= Trim(dr("REGION"))
            objVBPA(objVBPA.RowCount, 
"LOCA"= Trim(dr("LOCA"))
            objVBPA(objVBPA.RowCount, 
"REF1"= Trim(dr("REF1"))
            objVBPA(objVBPA.RowCount, 
"REF2"= Trim(dr("REF2"))
        
Next

        
If objRfcFunc.Call = False Then
            sapConn.Connection.Logoff()
            QMStoSAP 
= False
            
MsgBox("Error occured - " & objRfcFunc.Exception)
            
Exit Function
        
End If

        
''VB6.0 中的写法:strPostNO = objRfcFunc.Imports("POSTNO")
        ''在.Net中是不行的, 因.Net是强类型语言
        strPostNO = objRfcFunc.Imports("POSTNO").Value
        strErrorMsg 
= objRfcFunc.Imports("ERRORMSG").Value
        sapConn.Connection.Logoff()

        
If Trim(strPostNO) <> "" Then
            QMStoSAP 
= True
        
Else
            QMStoSAP 
= False
        
End If
    
End Function

End Class

 

成功调用!!!

 

 

posted on 2008-10-27 15:18  MaoBisheng  阅读(3360)  评论(4编辑  收藏  举报