Como posso me conectar ao SAP a partir da biblioteca SAP NetWeaver RFC (SAPNWRFC.DLL)?
-
23-09-2019 - |
Pergunta
Nosso software está escrito em C# e precisa se conectar ao SAP. Como alguns de nossos clientes usam versões mais antigas do SAP, e outros não têm o SAP PI, não podemos conectar através do WebServices.
Tentei me conectar ao SAP através da SAP NetWeaver Remote Function Call Library (SAPNWRFC.DLL) da seguinte forma:
- Adicione o SAPNWRFC.DLL e as outras DLLs de NWRFC_6-20004550.sar (sendo ICUDT34.DLL, ICUIN34.DLL, ICUUC34.dll, libicudecnumber.dll e libsapucum.dll) a C: Windows System32, para ter certeza de que eles pode ser encontrado.
- No meu código C#, adicione o seguinte na definição da classe:
Dllimport ("Sapnwrfc.dll", charset = charset.auto)
public estático externo vazio rfcinit ();
e o seguinte no método que deve fazer o trabalho:
Rfcinit ();
A execução deste código fornece uma dllnotfoundException:
Incapaz de carregar DLL 'SAPNWRFC.DLL': Este aplicativo não foi iniciado porque a configuração do aplicativo está incorreta. Reinstalar o aplicativo pode corrigir esse problema. (Exceção de HRESULT: 0x800736b1)
Executando o exemplo de conexão com c ++ padrão-de C#
Dllimport ("user32.dll", charset = charset.unicode)
public static extern int MessageBox (intptr hwnd, texto da string, legenda da string, tipo de UINT);
MessageBox (novo intptr (0), "Hello World!", "Hello Dialog", 0);
funciona bem.
Alguma sugestão de como fazer com que isso funcione bem (para que não precisemos alternar esse problema escrevendo um proxy Java usando o JCO)?
Solução
Você verificou com o visualizador de dependência se estiver perdendo alguma DLL? Uma vez escrevi um invólucro gerenciado para a biblioteca RFC (pelo menos parte dela) e lembro -me de ter um problema com algumas das bibliotecas da RFC que baixei. Uma versão simplesmente não funcionou e eu não descobri o que estava errado. Outra versão (mais antiga) funcionou muito bem.
No entanto, tive problemas com a biblioteca Unicode (algum problema de acesso à memória que apareceu aleatoriamente), então tive que mudar para a versão não-unicode ...
Se eu tivesse que fazer algo assim novamente, consideraria seriamente comprar um conector:http://www.theobald-seftware.com/en/products/erpconnect.htm
Não posso dizer se é bom, mas eles parecem estar por perto por um tempo agora.
Outras dicas
Resposta simples: não.
A saída bruta exibe apenas a saída do componente de uma página, nada mais.
Tente usar isso em vez de tmpl=component