You are on page 1of 8

Ejemplo: SAP .Net Connector 3.

0 (NCo)

Este es un ejemplo simple para mostrar cómo conectarse a SAP utilizando SAP .Net Connector 3.0
Introducción
En algunas aplicaciones, debe enviar los datos al sistema SAP y también obtener los datos de ellos para
mostrarlos en páginas web. Este artículo te ayudará a lograr eso.
Fondo
Este artículo define cómo conectarse a SAP RFC utilizando SAP.Net Connector 3.0 llamado NCo. Este
artículo espera que tengas conocimientos básicos de desarrollo usando C # y ASP.Net
Usando el código
La parte más importante de SAP Connector es tener los dlls requeridos:
1. .Net Connector 3.0 DLL's. Hay versiones de 32 bit (x86) y 64 bit disponibles para él
-sapnco.dll
-sapnco_utils.dll
Para obtener la DLL de SAP Connector, debe ir a SAP Market Place y necesita tener ID de usuario y
contraseña para descargarla. Si eres desarrollador de .net, probablemente no lo tengas. Solicite al
equipo de SAP Basis que lo descargue y lo obtenga, ya que normalmente tienen acceso al mercado.
Si lo obtiene de algún lugar, estará listo para seguir adelante.

Si se encuentra en modo de desarrollo, utilizando VS 2012/2013, debe seleccionar Generar destino de la


plataforma como Cualquier CPU. Y añada la referencia de la DLL de 32 bits, incluso si está utilizando la
máquina de 64 bits.

En el despliegue a IIS7.5 u 8, si su máquina de 64 bits. Reemplace el dll de 32 bits con 64 bits en la


carpeta BIN.
1. Configuración del servidor de destino de SAP que debe agregarse a su archivo de configuración. Estos
son los principales pares clave-valor necesarios para conectarse a SAP.
2.
Lanzar el Visual Studio 2012 o 2013
 Cree una aplicación web SAPConnector3Example y agregue referencia de sapnco.dll y sapnco_utils.dll
 Agregue una nueva clase llamada SAPDestinationConfig que usará para leer la configuración
 Agregue el espacio de nombres SAP.Middleware.Connector a esta clase que proviene de los dll que
acaba de agregar como referencia en su proyecto.


 Para obtener el destino necesario, SAP Connector proporciona una interfaz llamada
IDestinationConfiguration. Esta interfaz proporciona un método llamado GetParameters. Puede usar el
administrador de configuración para leer esto e implementar este método.
Herede IDestinationConfiguration para su clase y haga clic con el botón derecho para implementar la
interfaz. Después de este paso, la clase aparecerá de la siguiente manera


 El método GetParameters devuelve RfcConfigParameters, que es una clase en SAP Connector
DLL. Actualiza el código para leer los valores de configuración, y el código aparece así


 Ahora la aplicación puede obtener la configuración, el siguiente paso es llamar a este método. Se
puede llamar en una clase en la que se conectaría al SAP. Pero el conector SAP tiene un método
llamado RegisterDestinationConfiguration. Todos los destinos que se han definido como QA, DEV,
PROD deben registrarse primero antes de la llamada.

Puede hacer este paso justo antes de conectarse a SAP cuando crea una instancia de la clase. Pero
piense que si hay muchos usuarios conectados, cada uno llamará a RegisterDestinationConfiguration
cada vez que realicen una llamada a SAP. Entonces, el mejor lugar para hacerlo es Global.asax bajo
Application_Start.

Tan pronto como despliegue su aplicación y la inicie, ya habrá una conexión de destino registrada y
lista para ser utilizada.

Esto también resolverá uno de los mensajes de error importantes, algo así como "configuración de
destino ya inicializada"

 Su Global.asax debería verse más o menos así. Asegúrese de incluir el espacio de nombres
SAP.Middleware.Connector en esta clase también

 El siguiente paso es crear una clase que actuará como intermediario entre la aplicación .Net y SAP. Esta
clase será responsable de conectarse al Servidor SAP utilizando SAP Connector, enviando datos y
obteniendo datos. Agregue una nueva clase llamada SAPConnectorInterface. Agregue el uso del
espacio de nombres SAP.Middleware.Connector, ya que también usará la DLL de SAP Connector.


 Vamos a crear una Conexión de prueba para verificar si puede conectarse a SAP. La clase RfcDestination
tiene un método Ping () que hace ping con éxito, si la conexión se establece entre su aplicación y el
SAP. Si no puede establecer la conexión, emitirá una excepción.


 Ahora es el momento de llamar a SAP RFC para obtener datos de los clientes. Antes de entrar en este
proceso, conéctese con los miembros del equipo de SAP y obtenga los RFC que están disponibles y
escritos por ellos. También verifique si devuelven los datos. RFC solo devuelve los datos en parámetros,
al igual que cuando usa la palabra clave 'out' en una llamada a método. Input Params en SAP se conoce
como IMPORT y los valores se devuelven como parámetros EXPORT.

 El destino de RFC tiene un repositorio. Este repositorio contiene funciones complejas de RFC y
estructuras de RFC. A veces encontrará que, en SAP Side, tienen una IRfcStructure compleja que tiene
IRfcFunction y viceversa. There functions devuelve una estructura de tabla compleja llamada IRfcTable
que necesita convertir a ADO.Net Table. Lamentablemente, el conector SAP.Net no tiene ningún
método predeterminado que pueda usarse. Utilice el siguiente método para convertir IRfcTable a
DataTable
 Cree un método llamado GetCustomers que tenga dos parámetros de entrada, país y nombre de
destino.
Cree una instancia de RFCRepository que tenga todas las funciones en ella.
rfcRepository = rfcDestination.Repository;

Usando este repositorio, llame al método CreateFunction y proporcione el nombre de RFC de SAP al
que debe llamar. Debe asegurarse de que el nombre de la función exacta esté disponible en SAP.
rfcFunction = rfcRepository.CreateFunction ("RFC_CUSTOMER_DATA");

Los parámetros de entrada a las funciones de RFC se pasan así. Es una especie de par de valor
clave. COUNTRY debe estar disponible como un parámetro en el RFC en SAP Side.
rfcFunction.SetValue ("COUNTRY", country);
La función se llama usando esta línea
rfcFunction.Invoke (rfcDestination);
Notará que se está llamando a rfcDestination, que contiene toda la información necesaria requerida por
SAP Connector para llamar a SAP RFC.
A veces encontrará que el RFC está devolviendo una estructura que tiene muchas funciones RFC y cada
una tiene diferentes tablas RFC. Esto necesita extraerse así

Este es un ejemplo muy simple. Puede enviar un número de parámetros a un RFC utilizando el método
rfcFunction.SetValue. RfcFunction.Invoke (rfcDestination) es la línea donde la aplicación .Net llama
realmente a la función SAP.
Observará aquí, si coloca una marca de depuración, que si está enviando Big Data a SAP y si la función
SAP es compleja y hace muchas cosas al final, la depuración se parará durante un tiempo y luego se
moverá a la próxima línea de depuración Esta línea en realidad está esperando que la llamada regrese a
su aplicación.

RegisterDestinationManager classs tiene un método


más RfcDestinationManager.UnregisterDestinationConfiguration (destinationConfig), pero rara
vez necesitaría usarlo.