Estimado,

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:
PUBLICIDADE


Links do Yahoo! Grupos

Responder a