Business - Sistema de Gestão

Workaround para trabalhar no SAP com o .NET SAP Connector 2.0 através de RFC utilizando Visual Studio 2005 ou Visual Studio 2008

Para finalizar a seqüência dos artigos de SAP prometidos, esta publicação contempla a criação de um Workaround para se trabalhar com o .NET SAP Connector 2.0 no Visual Studio 2005 ou Visual Studio 2008.

por Diego Nogare



Para finalizar a seqüência dos artigos de SAP prometidos, esta publicação contempla a criação de um Workaround para se trabalhar com o .NET SAP Connector 2.0 no Visual Studio 2005 ou Visual Studio 2008. Infelizmente, o componente do SAP para se conectar no VS é limitado à versão 2003, para isso, criamos uma alternativa para se trabalhar com versões mais atuais do Visual Studio.

Este artigo não vai entrar em detalhes de como funciona a parte de Escrita ou de Leitura de RFCs do SAP, se quiserem acompanhar estes processos, foram criados e publicados dois outros artigos sobre estes assuntos. Eles podem ser acessados pelos links abaixo.

Leitura: http://www.linhadecodigo.com.br/Artigo.aspx?id=2343

Escrita: http://www.linhadecodigo.com.br/Artigo.aspx?id=2354

Da forma que as aplicações foram construídas nos artigos citados, a idéia era apenas exemplificar as formas de trabalho com SAP Connector, não me apeguei em nenhum momento em desenvolver em camadas. Porém, para se trabalhar com versões mais recentes do VS, será necessário desenvolver as partes do Proxy e RFCs do SAP em uma Class Library, e então gerar uma DLL deste projeto no VS 2003 e importar essa DLL gerada no VS2005 / VS2008. Basicamente é este o Workaround que existe para se trabalhar com versões mais recentes do VS utilizando o SAP.

Vou iniciar a explicação, mostrando como é a geração da DLL através da Class Library do Visual Studio 2003, passando para as referências das DLLs necessárias no VS2005 / VS2008, e finalizando com a criação da mesma aplicação de leitura do SAP criada anteriormente, mas utilizando as versões mais recentes do VS.

A geração da DLL, consiste em criar um novo projeto do tipo Class Library dentro da Solution e realizar toda a parte de inclusão do Proxy (onde serão inseridas as RFCs) dentro deste novo projeto. Veja a Figura 1, a Solution Explorer com o projeto de Class Library.

Figura 1: Solution Explorer do VS2003, com a Class Library e seus arquivos.

Após esta alteração simples no projeto que havia sido criado anteriormente, uma DLL referente à sua Class Library é compilada e ficará na pasta de build do seu projeto.

Agora que já existe a DLL que faz os “meios de campo” entre o . Net e o SAP, é necessário criar uma aplicação no VS2005 e/ou VS2008 para utilizar esta DLL e conseguir trabalhar com o SAP.

Vamos então, criar um projeto do VS2008 do tipo Windows Forms Application, usarei o C# Express para mostrar que com a versão Express do Visual Studio também é possível realizar esta tarefa. Um alerta interessante, é que a forma que será realizado para o VS2008 pode ser utilizada para o VS2005 também, sem nenhuma mudança significativa. A Figura 2 exibe o projeto criado no VS2008.

Figura 2: Solution Explorer do VS2008.

Agora que a Solution foi criada, é hora de adicionar as referências necessárias para trabalhar com a DLL gerada pela Class Library do VS2003 para utilizar as RFCs do SAP. São necessárias três novas referências para a nova aplicação funcionar, as referências são:

1) DLL da Class Library gerada. No exemplo, é chamada de “interfaceSAP.dll”;

2) DLL do SAP Connector 2.0, que está na pasta de instalação do SAP Connector, geralmente fica dentro de “C:\Program Files\SAP\SAP .NET Connector 2.0\SAP.Connector.dll”;

3) Referência do próprio .Net para “System.Web.Services”, que é através desta tecnologia que o .Net se conecta ao SAP usando o componente do SAP Connector.

Veja a Figura 3 e 4, as referências do projeto antes e depois de adicionar estas acima.


Figura 3: Referências do projeto, antes da adição necessária.

Figura 4: Referências do projeto, depois das adições necessárias.

Agora que as referências necessárias foram inclusas no projeto, vamos adicionar um dataGridView no formulário e provar que a solução funciona. No método LOAD do formulário, adicionamos uma chamada para o método acessarSAP() que carregar os dados na grid. Acompanhe a Listagem 1, os códigos em C# para acessar o SAP e popular um DataTable.

private void acessarSAP()

{

    try

    {

        lendoSAP proxy = new lendoSAP("XXXXX");

        BAY2_N2RV_RPCAMTable tabelaSAP = new BAY2_N2RV_RPCAMTable();

        proxy.Bay2_N2rv_Rfc_Pxp_Camph(ref tabelaSAP);

        DataTable dt = new DataTable();

        dt.Columns.Add("codigo");

        dt.Columns.Add("nome");

        foreach (BAY2_N2RV_RPCAM linha in tabelaSAP)

        {

            DataRow dr = dt.NewRow();

            dr["codigo"] = linha.Codca;

            dr["nome"] = linha.Descc;

            dt.Rows.Add(dr);

        }

        dataGridView1.DataSource = dt;

    }

    catch (Exception ex)

    {

        MessageBox.Show(ex.Message);

    }

}

Listagem 1: Código em C# do método acessarSAP.

A execução da aplicação com este código, dá um retorno muito próximo do que foi apresentado no artigo de leitura do SAP utilizando o VS2003.

Veja a Figura 5, como ficou o resultado da aplicação construída com C# 2008 Express.

Figura 5: Aplicação desenhada com o Visual Studio 2008.

Com a finalização deste artigo, fechamos o ciclo de 3 artigos sobre o SAP que havia prometido. Foram criados aplicações para exemplificar a Leitura e Escrita do SAP utilizando o SAP .Net Connector 2.0 no Visual Studio 2003, e um workaround para se trabalhar com o Visual Studio 2005 e 2008.

Acredito que com estas informações, seja possível criar as primeiras aplicações simples com o .Net para se trabalhar com o SAP, coisa que é muito comum nas empresas hoje em dia.

Diego Nogare

Diego Nogare - Graduado em Ciência da Computação e Pós-Graduado em Engenharia de Computação com ênfase em Desenvolvimento Web com .NET, Colaborador do Portal Linha de Código, co-Líder do grupo de usuários Codificando .NET, co-Líder dos Microsoft Student Partners [MSP] de São Paulo e Microsoft Most Valuable Professional [MVP] em SQL Server, possui certificações MCP e MCTS em SQL Server 2005, é palestrante em eventos da Microsoft, Codificando .NET e INETA BR, mantém o site: www.diegonogare.net.