SAP – .NET Connector 3.0 – Remote Function Call – RFC – C#

Publicado: 24 de dezembro de 2014 em Abap, C#

O SAP .NET Connector 3.0 é a versão atual do ambiente de desenvolvimento da SAP para a comunicação entre os sistemas da plataforma SAP e Microsoft .NET. Este conector suporta RFCs e serviços Web. Ele permite que você escreva aplicações diferentes, na plataforma Web, Windows Form, ou aplicativos de console. Para baixa-lo você precisa ter um usuário na SAP MarketPlace com direitos de download, entretanto existe um projeto Open Source que estende o SAP Connector e disponibiliza a biblioteca do conector da SAP na versão para computadores x86 e x64 compilados para o Microsoft Framework 4.0.

SAP Oficial: SAP .NET Connector 3.0

SAP Connector Library: https://github.com/ion-sapoval/NSAPConnector/tree/master/Libraries

O que é Remote Function Call (RFC)?

Uma chamada de função remota (RFC) é a chamada ou a execução remota de um módulo de função remoto em um sistema externo. No sistema da SAP, estas funções são fornecidas pelo sistema de interface de RFC. O sistema de interface RFC permite chamadas de função entre dois sistemas SAP, ou entre um sistema SAP e um sistema externo. As transações de dados não se limitam a obtenção de dados a partir do servidor, mas também podem inserir dados em registros do servidor. O sistema SAP pode atuar como um cliente ou um servidor em uma chamada RFC.

SAP - .NET Connector - Exportando Dados

SAP – .NET Connector – Exportando Dados

 Usando o SAP .NET Connector 3.0 no Visual Studio

1 – Após baixar a biblioteca adequada para seu sistema operacional, crie um projeto C# Windows Forms e em suas propriedades mude o Target para que seja compilado na versão 4.0 do framework. Ressaltando que estamos utilizando a versão das dlls baixadas do projeto hospedado no Github no link acima. Adicione as três bibliotecas ao seu projeto e para referencia veja a figura abaixo:

Connector - Referencia - Bibliotecas

Referencia – bibliotecas

2 – No Netweaver abra transação SE16, e verifique o conteúdo da tabela de exemplo chamada SCARR no seu ambiente de desenvolvimento, caso não possua os dados do Netweaver em um ambiente de desenvolvimento, veja como configurar um ambiente DEV (200) e alimentar dados à tabela SCARR nos posts anteriores:

Scarr

Scarr

3 – No Visual Studio crie um design simples utilizando painéis, rótulos, caixas de textos e um botão:

Visual Studio - Design Time

Visual Studio – Design Time

Exemplo:

Neste exemplo utilizamos SAP Connector 3.0 e funções RFC do Netweaver para exportar dados contidos no sistema SAP através de chamadas remotas de uma aplicação escrita em C#.

C#

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using SAP.Middleware.Connector;  // SAP .NET Connector

namespace DASapNetConnector3
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void button1_Click(object sender, EventArgs e)
        {
            // Cria parametros de conexão
            RfcConfigParameters meusap = new RfcConfigParameters();

            // Alimenta parametros SAP Logon
            meusap.Add(RfcConfigParameters.Name, textBox1.Text);
            meusap.Add(RfcConfigParameters.AppServerHost, textBox2.Text);
            meusap.Add(RfcConfigParameters.SystemNumber, textBox3.Text);

            // Alimenta parametros SAP GUI
            meusap.Add(RfcConfigParameters.Client, textBox4.Text);
            meusap.Add(RfcConfigParameters.User, textBox5.Text);
            meusap.Add(RfcConfigParameters.Password, textBox6.Text);

            // Cria destino
            RfcDestination meurfc = RfcDestinationManager.GetDestination(meusap);

            try
            {
                if (meurfc != null)
                {
                    // Verifica conexão
                    meurfc.Ping();
                    label1.Text = "SAP - Conectado com sucesso.";

                    // Lê tabela
                    RfcRepository repo = meurfc.Repository;

                    // Define função de exportação de textos
                    IRfcFunction funcaoRT = repo.CreateFunction("RFC_READ_TABLE");

                    // Define parametros da função
                    funcaoRT.SetValue("query_table", "SCARR");
                    funcaoRT.SetValue("delimiter", "|");

                    // Chama função
                    funcaoRT.Invoke(meurfc);

                    // Recupera Dados cru, você precisa trata-los para
                    // que sejam humanamente legivel
                    IRfcTable tabela = funcaoRT.GetTable("DATA");

                    // Recupera texto
                    string dados = tabela.ToString();

                    // Workaround para limpar tabela
                    // Existem métodos mais eficientes
                    // Este é apenas um caminho rápido para exemplo
                    // Também há possibilidades em diferentes funções e BAPis
                    // Converter um set de dados da função em um set de dados .NET
                    dados = dados.Replace("TABLE  [STRUCTURE TAB512 { FIELD WA=","");
                    dados = dados.Replace("[STRUCTURE TAB512 { FIELD WA=", "");
                    dados = dados.Replace("}]", "\n");

                    // alimenta GUI
                    richTextBox1.AppendText(dados.TrimStart());

               }
            }
            catch (Exception ex)
            {
                // Erro ao conectar
                label1.Text = "SAP - Desconectado";
                MessageBox.Show(ex.ToString(), "Erro",
                                MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
        }
    }
}

Anúncios

Deixe um comentário

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair /  Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair /  Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair /  Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair /  Alterar )

w

Conectando a %s