SAP on Rails
Posted on September 27, 2006
Quem é do mercado SAP já deve ter ouvido falar da Balance Consulting, onde trabalho como consultor. E para quem não é deste mercado, provavelmente nunca ouviu falar de SAP ou então só deve lembrar vagamente de uma palavra ou outra sobre o assunto.
Apresentações primeiro: a SAP é a Microsoft do mundo corporativo, talvez um monopólio com um mind-share ainda maior. Pense na Fortune 500: a maioria (se não todos) com certeza usam produtos SAP. Não estamos falando aqui de websites ou intranets, estamos falando dos processos dessas mega-corporações. O carro-chefe, o SAP R/3 (hoje, rebatizado de ECC, ou Enterprise Core Components) é um Enterprise Resource Planning (ERP), feito para suportar indústrias globalizadas, com filiais espalhadas pelo mundo, tudo interligado. Módulos financeiros, contábeis, produção, vendas, manufatura. O R/3 suporta em verticais tão variadas quanto Aerospace and Defense, Chemicals, Retail, etc. Já vi vários javeiros falando em “Enterprise” applications. Vocês não sabem o que é “enterprise” até conhecer instalações SAP. Talvez ele só não seja mais importante do que os mainframes rodando Cobol que muitas empresas (como bancos) ainda conservam.
Pois bem, no mundo da plataforma baixa, diversas dessas empresas implementam partes desses grandes processos como aplicativos web. Claro, Java ganhou destaque. Na solução SAP NetWeaver, o SAP R/3 vem pré-instalado com um servidor SAP J2EE. Além disso eles oferecem também o SAP NetWeaver Developer Studio, que é um Eclipse cheio de plugins deles. E também tem o SAP Enterprise Portal, com seu formato proprietário de portlets, chamado iViews.
Enfim, soluções completas de ponta a ponta para trazer a Web para o mundo corporativo. Porém, em vez de abraçar as iniciativas open source que já são consagradas como JSF, JDO ou coisa parecida, a SAP resolveu que só ela tem a solução ideal. Para a camada de persistência eles adaptaram os conceitos do ABAP/4 (a linguagem 4GL oficial da SAP) na forma do OpenSQL. Para a camada MVC eles criaram o Web Dynpro, e assim por diante. Até o servidor J2EE funciona de forma diferente da maioria dos servidores.
No fim, como desenvolvedor experiente nessa área, me parece que eles conseguiram complicar o jogo mais do que precisava. Isso sem contar que know-how SAP é reservado para aqueles que fazem parte do jogo (o mercado é controlado e particionado entre os parceiros pela própria), assim como eu, por exemplo, que sou Enteprise Portal Certified. Acreditem, vocês não conhecem uma panela até entrar em uma.
Enfim, venho acompanhando essa evolução para o mundo Java desde 2002. Depois de tanto tempo, a SAP conseguiu ganhar muita credibilidade, muito graças ao seu líder tecnológico, Shai Agassi. Vem sendo muito elogiada, mas na prática não tem sido muito adotada. Pelo menos no Brasil, temos dezenas de clientes que consomem SAP há anos, mas poucos embarcaram de vez na solução NetWeaver.
Pouco a pouco a própria SAP vem demonstrando estar aberta a alternativas. Primeiro foi a parceria com a Microsoft para fazer sites ASP.NET que se integram ao Enterprise Portal usando a infraestrutura de iViews. Foi o lançamendo do PDK for .NET (Portal Development Kit). Agora temos também algumas iniciativas individuais aparecendo no site oficial de desenvolvedores da SAP, o SDN (SAP Developer Network).
Claro, a idéia é pegar o segundo maior mercado de desenvolvedores depois do Java. Portanto começaram com PHP. Mas pouco a pouco o Python também ganhou suporte e, agora, finalmente já conseguimos ver traços de apoio ao Ruby on Rails. O projeto open source RadRails, que são plugins para Eclipse para auxiliar no desenvolvimento de Rails também anuncia na sua homepage o suporte a SAP.
Venho lidando com integração de soluções híbridas com SAP há muitos anos. Incluindo produtos como Business Connector, Tibco, Webmethods, agora XI. Fora desenvolvimento customizado com plataformas como J2EE, ASP.NET, ASP, Visual Basic, Web Services, etc. Como programo em ABAP/4 também conheço muito da sua infraestrutura de integração.
Para possibilitar a conexão de aplicativos externos aos recursos do R/3, a SAP disponibiliza bibliotecas binárias com todos os seus produtos (incluindo o RFCSDK) que tem todo o suporte a conversar no protocolo SAP RFC (Remote Function Call).
Dentro do R/3, programamos “módulos de função” (encapsulados ou não na forma de BAPIs ou Business APIs) que suportam acesso remoto. Grosseiramento comparável a EJBs que acessamos via RMI. Essa biblioteca nativa já ganhou diversos wrappers, incluindo o famoso Jco ou Java Connector, .NET Connector, SOAP Connector e assim por diante. No mundo das linguagens dinâmicas, alguns esforços individuais geraram wrappers para Perl, PHP, Python e, agora, Ruby. Toda nova instalação de R/3, o SAP R/3 4.7 Enterprise ou o mais recente ECC 5 já vem out-of-the-box preparado para disponibilizar Web Services de todas as suas APIs.
No caso de Ruby on Rails, Piers Harding, um experiente consultor SAP e programador é um dos principais mantenedores de tecnologia para integração de aplicativos Rails com R/3. Não deixem de ler seu blog e artigos a respeito. Sua biblioteca saprfc e SAP4Rails funciona muito bem. Já analisei seu código e notei pequenos bugs que pretendo ajudar a corrigir, mas mesmo assim é um trabalho notável. Ele acabou de lançar a versão 0.16 na forma de gems. Ainda preciso testar essa versão.
Na prática, o que faltava ao Rails para ser “Enterprise-ready” é a capacidade de se comunicar com o SAP R/3. Qualquer plataforma que não seja integrada ao SAP não pode se entitular “enterprise”, esta é a prática do mercado pois o Core Business da empresa está em seus processos.
blog comments powered by Disqus
Archives
- February 12(2)
- December 11(1)
- November 11(4)
- October 11(6)
- September 11(5)
- August 11(1)
- July 11(5)
- May 11(4)
- April 11(11)
- March 11(4)
- February 11(3)
- January 11(4)
- December 10(9)
- November 10(2)
- October 10(10)
- September 10(4)
- August 10(6)
- July 10(14)
- June 10(16)
- May 10(8)
- April 10(14)
- March 10(9)
- February 10(6)
- January 10(14)
- December 09(10)
- November 09(10)
- October 09(7)
- September 09(19)
- August 09(4)
- July 09(12)
- June 09(7)
- May 09(12)
- April 09(11)
- March 09(9)
- February 09(9)
- January 09(12)
- December 08(14)
- November 08(20)
- October 08(15)
- September 08(18)
- August 08(25)
- July 08(13)
- June 08(21)
- May 08(29)
- April 08(27)
- March 08(12)
- February 08(32)
- January 08(31)
- December 07(27)
- November 07(30)
- October 07(25)
- September 07(28)
- August 07(16)
- July 07(15)
- June 07(16)
- May 07(7)
- April 07(13)
- March 07(8)
- February 07(9)
- January 07(24)
- December 06(17)
- November 06(17)
- October 06(15)
- September 06(38)




