Boa tarde. Me diga, você precisa se conectar no banco ou precisa se conectar
ao Kernel do SAP? Uma sugestão, conexão direto no banco, SÓ READONLY. Se
quiser modificar alguma coisa no banco, não faça isso JAMAIS de outra
aplicação, no caso aqui o DELPHI. Se quiser que o SAP execute alguma função
tens que conhecer ABAP e dominar o que é chamado de 'conexões RFC do SAP'.
Explicando:
A única maneira de outro aplicativo externo se conectar ao Kernel do SAP e
executar alguma função é possuindo a biblioteca RFCSDK, disponibilizada pela
própria SAP (ou algum ABAPER em alguma consultoria deve ter isso) que te dá
todo o suporte pra conversar no protocolo SAP RFC (Remote Function Call).
Tudo no Kernel SAP são BAPI's (nada mais é que API proprietária do kernel)
que se programadas corretamente, fazem o 'diabo'.
Exemplo, se fosse em VB (por favor, não me xinguem), seria algo do tipo:
Attribute VB_Name = "conexao_rfc"
Option Explicit
Option Compare Text
Public SapObjeto_G As Object
Public SapSysNumber_G As Integer, SapServer_G As String
Public SapClient_G As String, SapUser_G As String, SapPass_G As String
Sub InitSap(SapSysNumber As Integer, SapServer As String, SapClient As
String, SapUser As String, SapPass As String)
On Error Resume Next
'Inicializa as variaveis para conexao com o SAP
Set SapObjeto_G = CreateObject("SAP.Functions")
SapSysNumber_G = SapSysNumber
SapServer_G = SapServer
SapClient_G = SapClient
SapUser_G = SapUser
SapPass_G = SapPass
ReDim SapCc_G(0 To 0)
ReDim SapPep_G(0 To 0)
ReDim SapOi_G(0 To 0)
End Sub
Function LogonSap(SapSysNumber As Integer, SapServer As String, SapClient As
String, SapUser As String, SapPass As String) As Boolean
'Loga com o Sap
'
'Exemplo: LogonSap(5, "CPD04006", "050", "UF012345", "xxxyyy") = True
'
'Parametros:
' 1. System Number
' 2. Application Server
' 3. Client
' 4. User
' 5. Password
'
'Retorna True se conseguiu e False se n?o
On Error Resume Next
SapObjeto_G.Connection.ApplicationServer = SapServer
'SapConnection.System = "Desenvolvimento"
SapObjeto_G.Connection.SystemNumber = SapSysNumber
SapObjeto_G.Connection.Client = SapClient
SapObjeto_G.Connection.User = SapUser
SapObjeto_G.Connection.Password = SapPass
SapObjeto_G.Connection.Language = "P"
If SapObjeto_G.Connection.Logon(0, True) Then
LogonSap = True
Else
LogonSap = False
End If
End Function
Function RFC_QTDE_LOTE(v_material As String, v_centro As String, v_lote As
String) As Variant
'Retorna a Quantidade Disponivel do Lote
'
'Exemplo: RFC_QTDE_LOTE(XXXXXXXXXX,XXXXX,"XXXXXXXXXX") = True
'
'Parametros:
' 1. Codigo do Material
' 2. Centro
' 3. Numero do Lote
'
'Retorna True se encontrou e False se nao
On Error Resume Next
Dim SapFunc As Object
'Testa a conexao
If SapObjeto_G.Connection Is Nothing Then
If Not LogonSap(SapSysNumber_G, SapServer_G, SapClient_G, SapUser_G,
SapPass_G) Then
Exit Function
End If
End If
If SapObjeto_G.Connection.IsConnected = 0 Then
If Not LogonSap(SapSysNumber_G, SapServer_G, SapClient_G, SapUser_G,
SapPass_G) Then
Exit Function
End If
End If
'Adiciona a funcao RFC
Set SapFunc = SapObjeto_G.Add("Z_RFC_QTDE_LOTE")
'Manda parametros
SapFunc.Exports("MATNR") = v_material
SapFunc.Exports("WERKS") = v_centro
SapFunc.Exports("CHARG") = v_lote
'Executa a Funcao
If Not SapFunc.Call Then
'MsgBox SapFunc.Exception
RFC_QTDE_LOTE = SapFunc.Exception
SapObjeto_G.Connection.Logoff
Exit Function
End If
'Retorna a Quantidade Disponivel
RFC_QTDE_LOTE = SapFunc.Imports("V_QTDE_DISPO")
'numero = peso disponivel
'comparar com a quantidade a ser pesada no componente da OP
'se nao dah entao nao dah
'SALDO DISPONIVEL DO LOTE INSUFICIENTE PARA ESTA PESAGEM
'Exemplo de retorno de tabela interna
' For X = 1 To SapFunc.Tables("ORDENS").RowCount
' SapOi_G(X) = SapFunc.Tables("ORDENS").Value(X, 2)
' Next
SapObjeto_G.Connection.Logoff
End Function
Esse exemplo, se conecta ao SAP, executa um programa feito por um ABAPER
(Z_RFC_QTDE_LOTE) e pega seu retorno.
Defina pra nós o que exatamente você quer.
Saudações.
Alexandre
On 5/31/06, softwaream <[EMAIL PROTECTED]> wrote:
>
> Ola colegas,
>
> Me chamo Richard, preciso da ajuda de voces:
>
> Preciso conectar delphi com SAP, como faco isso ?
>
> Alguem tem exemplo, source code, documentos sobre isso ?
>
> Eu uso delphi 7.
>
> Quero obter informacoes do SAP pelo delphi e enviar de um programa em
> delphi para o SAP.
>
> Agradeco a ajuda,
>
>
>
>
>
>
>
>
--
<<<<< FAVOR REMOVER ESTA PARTE AO RESPONDER ESTA MENSAGEM >>>>>
<*> Para ver as mensagens antigas, acesse:
http://br.groups.yahoo.com/group/delphi-br/messages
<*> Para falar com o moderador, envie um e-mail para:
[EMAIL PROTECTED]
Yahoo! Grupos, um serviço oferecido por: | |
|
Links do Yahoo! Grupos
- Para visitar o site do seu grupo na web, acesse:
http://br.groups.yahoo.com/group/delphi-br/
- Para sair deste grupo, envie um e-mail para:
[EMAIL PROTECTED]
- O uso que você faz do Yahoo! Grupos está sujeito aos Termos do Serviço do Yahoo!.