PARTE 2
A segunda parte do tutorial trata da conexão com SAP utilizando as bibliotecas que incorporamos em nosso projeto.
De forma bem direta iremos iniciar criando em nossa solução um arquivo de configuração contendo as informações necessárias para nós realizarmos um conexão bem sucedida com SAP, ok?
Esse arquivo de configuração é o app.config, se fosse um projeto web poderia ser o web.config, ok?
Dentro das tags
Agora vamos criar as funções necessárias para se conectar com o SAP
Na realidade iremos precisar apenas de criar um classe e implementar os métodos de uma interface do sapncon de nome IDestinationConfiguration. Os métodos exigidos pela classe que iremos implementar são responsáveis pelo controle da conexão com o SAP.
São eles:
GetParameters(), IDestinationConfiguration_ChangeEventsSupported(), ChangeEventsSupported(), ConfigurationChanged()
Iremos trabalhar apenas no GetParameters, veja a implementação da classe logo abaixo:
Imports System.Configuration
Imports SAP.Middleware.Connector
Public Class SAPConnect
Implements IDestinationConfiguration
''' ''' Monta a estrutura de conexão com o SAP de acordo com o "DestinationName" que pode ser tratado com servidor,
''' em nosso caso temos um servidor de Homologação de dados e um de Produção.
'''
''' Nome da Instancia ou Servidor
''' Destino da conexão
''' Besaleel 2014-08-01
Public Function GetParameters(ByVal destinationName As String) As RfcConfigParameters Implements IDestinationConfiguration.GetParameters
Try
Dim conf As RfcConfigParameters = New RfcConfigParameters()
If destinationName.Equals("homologacao") Then
Dim hostH = ConfigurationManager.AppSettings.Get("ServidorSap")
Dim numbH = ConfigurationManager.AppSettings.Get("NumeroSap")
Dim sysH = ConfigurationManager.AppSettings.Get("SistemaSap")
Dim userH = ConfigurationManager.AppSettings.Get("UsuarioSAP")
Dim passH = ConfigurationManager.AppSettings.Get("PassWordSAP")
Dim clieH = ConfigurationManager.AppSettings.Get("ClienteSAP")
Dim langH = ConfigurationManager.AppSettings.Get("IdiomaSAP")
With conf
.Add(RfcConfigParameters.AppServerHost, hostH)
.Add(RfcConfigParameters.SystemNumber, numbH)
.Add(RfcConfigParameters.SystemIDs, sysH)
.Add(RfcConfigParameters.User, userH)
.Add(RfcConfigParameters.Password, passH)
.Add(RfcConfigParameters.Client, clieH)
.Add(RfcConfigParameters.Language, langH)
End With
Return conf
End If
'PRODUÇÃO
Dim host = ConfigurationManager.AppSettings.Get("ServidorSap")
Dim numb = ConfigurationManager.AppSettings.Get("NumeroSap")
Dim sys = ConfigurationManager.AppSettings.Get("SistemaSap")
Dim user = ConfigurationManager.AppSettings.Get("UsuarioSAP")
Dim pass = ConfigurationManager.AppSettings.Get("PassWordSAP")
Dim clie = ConfigurationManager.AppSettings.Get("ClienteSAP")
Dim lang = ConfigurationManager.AppSettings.Get("IdiomaSAP")
With conf
.Add(RfcConfigParameters.AppServerHost, host)
.Add(RfcConfigParameters.SystemNumber, numb)
.Add(RfcConfigParameters.SystemIDs, sys)
.Add(RfcConfigParameters.User, user)
.Add(RfcConfigParameters.Password, pass)
.Add(RfcConfigParameters.Client, clie)
.Add(RfcConfigParameters.Language, lang)
End With
Return conf
Catch ex As Exception
Throw New Exception("Falha ao abrir conexão:" & vbCrLf & ex.Message)
End Try
End Function
Public Function IDestinationConfiguration_ChangeEventsSupported() As Boolean Implements IDestinationConfiguration.ChangeEventsSupported
Return True
End Function
Public Function ChangeEventsSupported() As Boolean
Return True
End Function
Public Event ConfigurationChanged As RfcDestinationManager.ConfigurationChangeHandler Implements IDestinationConfiguration.ConfigurationChanged
End Class
vejam que o método GetParameters recebe uma variável "destinationName", que é responsável por dizer qual é o servidor SAP que iremos nos conectar. Em nosso exemplo apesar de recuperarmos os dados para acesso de um único lugar, eu simulei o acesso a um servidor de Homologação (Testes) e a um servidor de produção. Com isso através da variável "destinationName" você poderá ter N instancias para N servidores SAP, ok?
Conexão com SAP
'NÃO ESQUEÇA DE IMPORTAR A BIBLIOTECA SAP
Imports SAP.Middleware.Connector
Public Class RfcTableReader
Public Sub LerDadosRFC()
Try
'1º - MONTAR OS PARAMETROS PARA CONEXÃO SAP
Dim con As New SAPConnect()
'A FUNÇÃO REGISTER ABRE A CONEXÃO COM SAP
RfcDestinationManager.RegisterDestinationConfiguration(con)
'MONTA OS PARAMETROS DO SERVIDOR SAP QUE IREMOS CONECTAR
Dim dest As RfcDestination = RfcDestinationManager.GetDestination("homologacao")
Dim repositorio As RfcRepository = dest.Repository
Try
'AQUI SEGUE O CÓDIGO FONTE PARA EXECUTAR A RFC
'LER TABLES
'GRAVAR TABLES
'PASSAR PARAMETROS
'...
Catch exSap As RfcAbapRuntimeException
Throw New Exception("ABAP error run Time: " & exSap.Message)
Catch exSap As RfcAbapBaseException
Throw New Exception("ABAP base error" & exSap.Message)
Catch ex As Exception
Throw
Finally
'FECHA A CONEXÃO COM SAP
RfcDestinationManager.UnregisterDestinationConfiguration(con)
End Try
Catch exSap As RfcCommunicationException
Throw New Exception("Falha na comenicação com SAP: " & exSap.Message)
Catch exSap As RfcLogonException
Throw New Exception("Falha no Login: " & exSap.Message)
Catch ex As Exception
Throw New Exception("Erro: " & vbCrLf & ex.Message)
End Try
End Sub
End Class
Foi utilizado try catch para controlar a conexão, para não deixarmos conexões abertasNo fim deste tutorial eu irei disponibilizar o código fonte para download.
Parte 3
Nenhum comentário:
Postar um comentário