'-Begin-----------------------------------------------------------------
'-
'- TAC STRUSTSSO2
'-
'-----------------------------------------------------------------------
'-Directives----------------------------------------------------------
Option Explicit
'-Constants-----------------------------------------------------------
Const RFC_OK = 0
'-RfcGetPartnerSSOTicket----------------------------------------------
Function RfcGetPartnerSSOTicket(SAP, hRFC, UserID, PassWd)
'-Variables-------------------------------------------------------
Dim rc, hFuncDesc, hFunc, Ticket
hFuncDesc = SAP.RfcGetFunctionDesc(hRFC, "SUSR_CHECK_LOGON_DATA")
If hFuncDesc = 0 Then
rc = SAP.RfcCloseConnection(hRFC)
Exit Function
End If
hFunc = SAP.RfcCreateFunction(hFuncDesc)
If hFunc = 0 Then
rc = SAP.RfcCloseConnection(hRFC)
Exit Function
End If
rc = SAP.RfcSetChars(hFunc, "AUTH_METHOD", "P")
rc = SAP.RfcSetChars(hFunc, "USERID", UserID)
rc = SAP.RfcSetChars(hFunc, "PASSWORD", PassWd)
Ticket = Space(2048)
If SAP.RfcInvoke(hRFC, hFunc) = RFC_OK Then
rc = SAP.RfcGetChars(hFunc, "TICKET", Ticket, 2048)
End If
rc = SAP.RfcDestroyFunction(hFunc)
RfcGetPartnerSSOTicket = Trim(Ticket)
End Function
'-Main----------------------------------------------------------------
Sub Main()
'-Variables-------------------------------------------------------
Dim SAP, UserID, PassWd, hRFC, rc, Ticket
Set SAP = CreateObject("COMNWRFC")
If Not IsObject(SAP) Then
Exit Sub
End If
SAP.GetUserPasswordDialog " for NSP", UserID, PassWd
hRFC = SAP.RfcOpenConnection("ASHOST=NSP, SYSNR=00, CLIENT=001, " & _
"USER=" & UserID & ", PASSWD=" & PassWd)
If hRFC = 0 Then
Set SAP = Nothing
Exit Sub
End If
'rc = SAP.RfcGetPartnerSSOTicket(hRFC, Ticket, 2048)
'Delivers RFC_ILLEGAL_STATE error
Ticket = RfcGetPartnerSSOTicket(SAP, hRFC, UserID, PassWd)
rc = SAP.RfcCloseConnection(hRFC)
SAP.UsePwdRequest = 0
hRFC = SAP.RfcOpenConnection("ASHOST=NST, SYSNR=01, CLIENT=001, " & _
"MYSAPSSO2=" & Ticket)
If hRFC Then
MsgBox "Connected to NST via SSO"
rc = SAP.RfcCloseConnection(hRFC)
End If
hRFC = SAP.RfcOpenConnection("ASHOST=NSP, SYSNR=00, CLIENT=001, " & _
"MYSAPSSO2=" & Ticket)
If hRFC Then
MsgBox "Connected to NSP via SSO"
rc = SAP.RfcCloseConnection(hRFC)
End If
Set SAP = Nothing
End Sub
'-Main----------------------------------------------------------------
Main
'-End-------------------------------------------------------------------
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
User | Count |
---|---|
7 | |
6 | |
4 | |
4 | |
3 | |
3 | |
2 | |
2 | |
2 |