24/3/2009 21:24 El Bruno

[SAP] Integrando aplicaciones con SAP (ese enemigo oculto que está en todos lados)

El Bruno Visual Studio Team System

Buenas,

quien más, quien menos; si alguna vez estuviste trabajando en alguna empresa mediana o grande te habrás topado con un SAP. SAP es ese monstruo alemán que nació en el 1972 (tiene 4 años más que yo), que hoy tiene más de 40000 empleados en sus filas y es uno de los sistemas de gestión por referencia para las grandes organizaciones.

Internamente SAP en casi todas sus versiones siempre ha sido un producto muy cuidado y extremadamente práctico. Por ejemplo la versión actual SAP R/3 es una aplicación que se puede desplegar y escalar de forma masiva respetando el concepto sobre el que habló Rodrigo ayer de hacer las cosas simples:

una aplicación con 3 capas: capa de presentación, de aplicación y de base de datos.

Ojo, que internamente dentro de SAP podemos encontrarnos miles de módulos y de aplicaciones (SAP Business Warehouse, Internet Transaction Server, Sales Force Automation, etc.), pero cuando conoces un poco como funciona y como se escala, la verdad que es un ejemplo a seguir en lo que respecta al diseño de aplicaciones empresariales.

Sin embargo, la cosa deja de ser tan bonita cuando desde el mundo Microsoft empezamos a ver las opciones de desarrollo que nos brinda SAP: ABAP y Java. El 1ro, ABAP, nació como el lenguaje de reporting de SAP pero con el paso del tiempo se convirtió en un 4GL (dios que miedo!!!) que se mete en las tripas de SAP y permite adaptarlo a casi cualquier necesidad. Por otra parte, con la incorporación de SAP NetWeaver, Java pasó a ser parte de los lenguajes con los que se podía “programar” SAP.

¿Y qué pasa con Microsoft? – 1. DCOM

Pues que toca sufrir y mucho en algunas ocasiones. Si bien es posible instalar SAP sobre SQL Server, jamás se recomienda atacar la base de datos de SAP directamente especialmente si quieres mantener tu cordura mental. Lo mejor en todos los casos es utilizar alguno de los mecanimos de integración especialmente diseñados para estos escenarios.

Inicialmente la única opción de integración era utilizar C y la biblioteca librfc32.dll, sin embargo esta opción tenía muchos problemas sobre los que realmente no puedo hablar al respecto porque no los conozco.

En 1997 cómo había mucha gente joven dispuesta a perder tiempo y neuronas SAP lanza su DCOM Component Connector. Este conector se basaba en DCOM y permitía interactuar con los objetos de SAP y al ser un estándar Microsoft, se podía utilizar el mismo desde Visual Basic, C++, Visual Fox, J++, etc. Sin embargo, DCOM era una tecnología que si bien tenía algunas ventajas como por ejemplo separar físicamente los componentes en diferentes entornos (podías conectar desde el mundo Windows a un SAP en un mundo Unix), era un sufrimiento para los desarrolladores ya que COM era su base y … busca en la wikipedia DLL Hell y verás de lo que hablo. Pero bueno, era una opción y una muy buena para integrar aplicaciones con SAP.

SAP .Net Connector

Con la llegada del .Net Framework (año 2000) SAP decidió crear un conector para .Net. Lo bueno de esto es que por un lado era posible aprovechar toda la potencia de .Net como plataforma de desarrollo, pero lo malo es que el SAP .Net Connector llegó en el año 2004. Es decir, tuvimos 4 años la esperanza de hacer las cosas más fáciles, pero mientras a apechugar con lo que tengamos a mano. Pero una vez lo tuvimos en nuestras manos, pudimos ver que era realmente grandioso:

  • 100% integrado en el entorno de Visual Studio
  • capacidad para integrarnos con RFCs, BAPIs e IDocs
  • capacidad para publicación e integración a través de webservices

Por ejemplo, internamente lo que hacía este conector era crear un proxy en .Net para las entidades de SAP con las que “trabajábamos en local”. Esto era grandioso. En 2005 se lanzó una actualización de este componente con mejoras como el soporte para Remoting, y soporte para Visual Studio 2003.

SAP NetWeaver

SAP NetWeaver es una de las plataformas de integración de SAP (XI es otra), pero lo interesante de SAP NetWeaver es que ofrece mucha de la funcionalidad propia de los fomularios de SAP a través de WebServices. Y al ser un estándar, esta opción es una de las más utilizadas actualmente.

Lo interesante de esta opción es que en equipos complejos, puedes trabajar codo a codo con gente del mundo SAP (ABAP o Java) que creen y publiquen servicios específicos para ser utilizados desde el mundo .Net. Esto permite que todas aquellas personalizaciones que se apliquen a un SAP para un determinado negocio puedan ser utilizadas desde el mundo .Net sin problemas. De todas mis experiencias, éstas han sido las más fructíferas.

Otras opciones

Para finalizar y para no hacer un libro de un post, simplemente comentar que existen otras herramientas muy interesantes a tener en cuenta. Un ejemplo de ello puede ser Duet; Duet es un proyecto desarrollado en conjunto por Microsoft y SAP que tiene como objetivo lograr que los productos de Office puedan ser utilizados como Front-End para los procesos en SAP. Esto brinda una gran ventaja sobre la interfaz clásica de SAP ya que la suite de productos Office es la más popular del mercado. Además aprovechando las posibilidades de integración de Office con otros productos como Sharepoint o la capacidad de extensión a través de VSTO, se pueden lograr experiencias de usuario realmente productivas trabajando con Office + SAP.

Y si lo tuyo es la integración pura y dura, seguramente tu herramienta sea Biztalk. Como no podía ser de otra manera, existe una opción muy robusta para este caso, aunque lamentablemente o afortunadamente yo no tengo mucha experiencia para hablar sobre la misma:

Pues bien, mi idea era dar un poco una idea general sobre las diferentes capacidades y además creo que logré un objetivo personal: un post de integración a muy alto nivel sin un solo diagrama :D

 

Update: gracias al gran Andrés (thanks amigo !!)

Ey Bruno!

Gran articulo (as usual).

Dado que en mi cliente (que ya sabes cual es y por el cual puede que después de tanto tiempo en él acabe haciendo mutar mí apellido jajaja) estamos trabajando desde hace tiempo (y últimamente con más empuje) en las diferentes opciones de integración con SAP, pongo aquí una pequeña y humilde aportación:

- Respecto a la opción Netweaver: Gracias a él se pueden exponer como web services SOAP “estándar” Funtion Modules/BAPIs de SAP, pero no solo los que se creen custom. En principio cualquier modulo (incluso los estándar de SAP) se pueden exponer como un web service normal y corriente. Solo hay que activar la opción “Remote Enbaled module” que aparece en esta imagen (img8.imageshack.us/.../remoteenabledbapi.jpg) dentro de las propiedades del Funtion Module/BAPI en SAP. Una vez hecho esto, el WAS expone un explorador de web services (img8.imageshack.us/.../webservicebrowser.jpg) a través del cual podemos acceder a todos los Function Modules/BAPIs que dicho entorno SAP tenga configurados como “Remote Enabled” y generar el WSDL correspondiente (voila! Web reference de toda la vida en nuestro proyecto .NET). La URL del Web Service browser tiene esta estructura: http://<host_name>:<port_number>/sap/bc/bsp/sap/WebServiceBrowser/search.html?sap-client=<relevant_client>

- El Biztalk Adapter Pack: Aparte de poderse usar en integraciones  en las que “cuadre” BizTalk, este pack (cuyo  adaptador SAP reemplaza al antiguo SAP Connector) se puede usar también desde cualquier aplicación .NET. Es decir, se puede usar ese mismo Adaptador desde tu propia aplicación .NET sin necesidad de involucrar BizTalk, pudiendo llamar a SAP desde cualquier aplicación .NET, e incluso pudiendo hacer que SAP sea el que llame a un servicio WCF que contenga un endpoint de tipo SAPBinding expuesto en tu aplicación .NET (una aplicación .NET actuando como servidor RFC!). Las diferentes opciones de uso del Adaptador desde una aplicación .NET están documentadas aquí (technet.microsoft.com/.../cc185470.aspx). OJO, según informaciones que hemos recibido, el antiguo SAP Connector dejara de recibir soporte oficial de SAP en breve, por lo que es recomendable modificar las aplicaciones existentes que lo usen y empezar a usar el adaptador del Biztalk Adapter Pack.

 

Saludos @ Home

El Bruno

Crossposting from ElBruno.com
Archivado en: ,
Comparte este post:

# re: [SAP] Integrando aplicaciones con SAP (ese enemigo oculto que está en todos lados)

Tuesday, March 24, 2009 10:56 PM by Juan Carlos González Martín

Un resumen genial Bruno...te añado la parte de integración de SAP en SharePoint, y más en concreto MOSS: El Business Data Catalog (BDC).

Un saludo crack!

JC's

# re: [SAP] Integrando aplicaciones con SAP (ese enemigo oculto que está en todos lados)

Wednesday, March 25, 2009 10:00 AM by El Bruno

Juan Carlos, gracias :D

estoy leyendo un poco al respecto y la verdad es que era un mundo desconocido para mi, pero con unas capacidades impresionantes ahora que he realizado una pequeña busqueda en Google/Live Search

Si consigo a alguien que me lo muestre y me lo cuente, prometo hacer una 2da parte del post

 

Saludos

# re: [SAP] Integrando aplicaciones con SAP (ese enemigo oculto que está en todos lados)

Wednesday, March 25, 2009 10:09 AM by Mario Cortés Flores

Hola desde mi experiencia, SAP.net connector es una solución aceptable pero da muchos problemas cuando modificas la interfaz de las bapis en SAP, una solución alternativa es montar un servicio web con java utilizando JCO para comunicar con SAP y luego conectar la aplicación .NET con ese servicio web.

En realidad SAP.net connector está montado sobre JCO así que imaginaros la ñapa que han hecho.

La integración con SAP R/3 a través de servicios web y bapis mediante JCO es una solución muy buena para montar servicios por encima de SAP y ahorrar costes en licencias adicionales.

# Increible post !!!

Wednesday, March 25, 2009 2:27 PM by ReC

Sinceramente me encantó este post...

Soy consultor SAP del modulo FI... no soy de la parte tecnica, por lo tanto lo que es XI, Netweaver, y demas modulos me supera... pero la verdad, es que no había logrado leer a alguien que pueda dar una idea tan clara sobre las herramientas de integración como lo que he leído en este post.

La verdad que es muy bueno BRUNO lo que has escrito...

Muchisimas gracias !!!!

# re: [SAP] Integrando aplicaciones con SAP (ese enemigo oculto que está en todos lados)

Friday, March 27, 2009 7:35 PM by El Bruno

@Mario: muchas gracias por el aporte, y tienes toda la razon una opción sin costes de licencias de productos es la integración a través de JCO, he leido un poco al respecto en estos días y me gusto el enfoque

@ReC: gracias a ti ReC, y no me puedo creer que se entienda lo que he escrito :D

Saludos

# re: [SAP] Integrando aplicaciones con SAP (ese enemigo oculto que está en todos lados)

Wednesday, November 11, 2009 7:20 PM by Juanlu, elGuerre

Muy bueno, y además me ha venido de lujo esta ayuda, ;)

# re: [SAP] Integrando aplicaciones con SAP (ese enemigo oculto que está en todos lados)

Tuesday, December 01, 2009 1:02 AM by bitel

Hola Bruno,

Muy bueno el artículo...y lo dice un consultor SAP :)

Para ampliar mas cosas sobre SAP XI (para proyectos con  un SAP que no es basado en  la versión Netweaver) hay una web con  resumen de lo que hace en www.deset.es/.../la-historia-de-sap-xi.html

Gracias!

# re: [SAP] Integrando aplicaciones con SAP (ese enemigo oculto que está en todos lados)

Friday, December 11, 2009 7:01 PM by Gabo77

No ma!! bello!! andaba buscando algo así desde mi infancia!!!.... bueno, ok exageré.... desde hace algunos meses....

Saludos!

# re: [SAP] Integrando aplicaciones con SAP (ese enemigo oculto que está en todos lados)

Sunday, December 20, 2009 8:18 PM by El Bruno

@JuanLu gracias

@Bitel, gracias dobles

@Gabo, me alegro que te haya servido

Salu2