SAP MaxDB é um banco de dados estratégico criado para rodar em todas as soluções SAP e substituir os bancos de dados Oracle, IBM DB2 e MSSQL Server tornando as soluções SAP mais acessíveis em termos de custo para clientes de grande e médio porte. O SAP MaxDB foi construído como uma solução open source baseado em MySQL sob a licença GNU GPL, as versão anteriores do MaxDB ainda são mantidas pela comunidade open source mas a SAP não contribui mais com estas versões.
Ao longo dos últimos anos, a tecnologia SAP MaxDB continuou a evoluir com investimentos muito significativos em inovações e essas inovações não são em código aberto. Assim o mais recente produto SAP MaxDB não é open source, entretanto ele é gratuito em sua versão comunitária para uso com aplicações não SAP e possui licença comercial para uso com aplicações SAP.
Com 40 anos de inovação atuando em mais de 130 países e com mais de 100 mil clientes que utilizam soluções SAP, o SAP MaxDB ainda é um banco de dados jovem mas conta com mais de 6.500 clientes em 15.000 instalações mais soluções que utilizam liveCache e Content Server.
SAP MaxDB: http://maxdb.sap.com/
SAP MaxDB e C#
A SAP disponibiliza provedores para utilizar o MaxDB com as linguagens de programação .NET utilizando os sistemas operacionais Unix, Linux e Windows, possibilitando integrar soluções Enterprise SAP que utilizam o banco de dados MaxDB com aplicações escritas em C# ou permite que aplicações C# utilizem o SAP MaxDB gratuitamente também em soluções que não possuem o intuito de integrar dados com os sistemas SAP.
SAP ADO.NET: Interface ADO.NET
Para utilizar este walkthrough completo integrando uma solução C# com a linguagem de programação ABAP, você precisa instalar vários software entres eles o NetWeaver Application Server ABAP no qual já possui uma instalação completa do ambiente de desenvolvimento SAP com uma instancia do banco de dados MaxDB, caso queira utilizar somente o lado C# você pode baixar o SAP MaxDB diretamente da SAP Store:
NetWeaver Application Server ABAP: Mini SAP
Download SAP MaxDB sistemas não SAP: SAP Store
SAP MaxDB SQL Studio: Desenvolvimento Aberto walkthrough
MaxDB Data Provider ADO.NET e MONO
O provedor ADO.NET for MaxDB RDBMS foi desenvolvido pelo projeto MONO sob a licença GNU para as versões open Source do SAP MaxDB, caso queira utilizar provedores das versões disponibilizadas pela SAP, estas já acompanham a instalação do MaxDB.
Download: http://sourceforge.net/projects/maxdbprovider/
Projeto MaxDB Mono: http://www.mono-project.com/archived/maxdb/
Conectando ao MaxDB em instancia SAP com C#
1 – Caso utilize este tutorial com o NetWeaver primeiro tenha certeza que servidor de aplicação e a instancia SAP do banco de dados está rodando, caso utilize apenas o MaxDb e C# ignore este passo:
2 – Abra o SQL Studio utilizando o servidor MaxDB e o banco de dados NSP ou seu próprio banco de dados caso não utilize o sistema SAP:
3 – Crie uma tabela Z que significa uma tabela não SAP Standard que não será transparente no conceito do dicionário de dados do sistemas SAP para isto utilize o script logo abaixo, não se assuste para desenvolvedores não SAP isto é apenas uma tabela comum do banco de dados:
4 – Após efetuar o download do provedor ADO.NET para MaxDB clique com o botão direito do mouse, desbloqueie o arquivo baixado, pois o arquivo foi compilado no Linux, caso contrario o Windows Smart Screen tentara bloquear o arquivo. Clique em instalar:
5 – Crie um projeto Windows Forms e disponha na tela um Label, um DataGridView e um Button e alinhe os componentes como na figura abaixo:
6 – Compile o programa e clique em conectar para se conectar a instancia SAP NSP:
7 – Para utilizar o ABAP para ler ou gravar dados nesta mesma tabela não transparente utilizando uma Stored Procedure no MaxDB através de códigos Native SQL, utilize o link abaixo:
Programa SAP – ABAP Native SQL: MaxDB Stored Procedure parâmetros IN e OUT
Caso conecte em um banco de dados MaxDB utilizando soluções SAP tenha em mente que você deve respeitar o conceito de dados dos sistemas SAP e verificar os termos de garantia de cada produto SAP, visto que este método ao contrario do RFC ignora a camada de banco de dados SAP e o dicionário de dados ABAP.
Como você pode verificar na imagem acima no ambiente ABAP o valor flutuante não vem formatado por padrão como estão acostumados os desenvolvedores SAP que utilizam instruções Open SQL e o dicionário ABAP no entanto você pode utilizar campos criados no dicionário apenas para a manipulação do valor de saída da Stored Procedure neste caso você deve alinhar os tipos de dados entre as aplicações C# e aplicações ABAP.
Exemplo:
Neste exemplo utilizamos a linguagem de programação C# para se conectar ao banco de dados SAP MaxDB em uma instancia do banco de dados do NetWeaver e integrar uma tabela não transparente que pode ser manipulada tanto do lado C# como dentro do sistema SAP utilizando Native SQL.
SQL – SAP MaxDB
-- Cria tabela no schema SAPNSP
CREATE TABLE SAPNSP.ZFUNCIONARIO
(
ID_FUNCIONARIO INT,
NOME VARCHAR (30),
SOBRENOME VARCHAR(70),
CARGO VARCHAR(30),
SALARIO DECIMAL(9,2)
)
-- Insere dados na tabela
Insert into SAPNSP.ZFUNCIONARIO values (1,'Steve','Gates','Programador',2550.56)
Insert into SAPNSP.ZFUNCIONARIO values (2,'Bill','Jobs','Diretor',5143.71)
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 MaxDB.Data; // SAP MaxDB Data Provider for MONO
namespace WindowsFormsApplication1
{
public partial class FormMaxDB : Form
{
// Declara objetos
private static MaxDBConnection connMaxDB; // MaxDB Data Server Provider for MONO
private DataTable dataTable;
string sql;
// Conexão MaxDB
void conexaoMaxDB(string Server, string Database,
string Username, string Password)
{
try
{
// String de Conexao
string connectionString =
// Servidor
"Server=" + Server +
// Banco de dados
";Database=" + Database +
// Usuario
";User ID=" + Username +
// Senha
";Password=" + Password;
//Conecta ao datasource usando a conexão SAP MaxDB
connMaxDB = new MaxDBConnection(connectionString);
//Abre a conexão com o banco de dados
connMaxDB.Open();
}
// Retorna erro
catch (Exception ex)
{
// Mostra menssagem de erro
MessageBox.Show(ex.ToString());
}
}
// Retorna um set de dados
public DataTable retornaTabela(string sql)
{
FormMaxDB acesso = new FormMaxDB();
// SAP MaxDB requer usuario e senha em caracteres UPPERCASE
acesso.conexaoMaxDB("localhost", "NSP", "SAPNSP", "PASSWORD");
// Cria comando SQL
MaxDBCommand maxCmd = new MaxDBCommand(sql);
maxCmd.Connection = connMaxDB;
// Cria DataReader
MaxDBDataReader maxDBreader = maxCmd.ExecuteReader();
dataTable = new DataTable();
dataTable.Load(maxDBreader);
return dataTable;
}
public FormMaxDB()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
// Alimenta grade de dados
FormMaxDB dados = new FormMaxDB();
dataGridView1.DataSource = dados.retornaTabela("Select * from SAPNSP.ZFUNCIONARIO");
}
}
}








