jueves, 9 de enero de 2014

Conectar .NET con SAP (C#)

Para poder conectarnos desde cualquier aplicacion .net a SAP es recomendable usar un webservice, ya que, el conector de SAP para .Net solo funciona en ASP .NET. Para ello crearemos un WebMethod el cual le llamaremos TraeCompania, la cual, se encargara de traer los datos de la compañia filtrando por el codigo de esta.

using System.Web;
using System.Web.Services;
using SAP.Middleware.Connector;
/// 
/// Descripción breve de WebService
/// 
[WebService(Namespace = "http://tempuri.org/")]
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
// Para permitir que se llame a este servicio Web desde un script, usando ASP.NET AJAX, quite la marca de comentario de la línea siguiente. 
// [System.Web.Script.Services.ScriptService]
public class WebService : System.Web.Services.WebService {

    public WebService () {

        //Eliminar la marca de comentario de la línea siguiente si utiliza los componentes diseñados 
        //InitializeComponent(); 
    }

    [WebMethod]
    public string TraeCompania() {
        

         RfcConfigParameters Conexion = new RfcConfigParameters(); //Parametros de conexión
         Conexion.Add(RfcConfigParameters.Name, "TEST");
         Conexion.Add(RfcConfigParameters.AppServerHost, "10.0.0.xx"); 
         Conexion.Add(RfcConfigParameters.SystemNumber, "00");
         Conexion.Add(RfcConfigParameters.SystemID, "");
         Conexion.Add(RfcConfigParameters.SAPRouter, "/H/200.6.96.xx/H/");
         Conexion.Add(RfcConfigParameters.User, "xxx");
         Conexion.Add(RfcConfigParameters.Password, "xxx");
         Conexion.Add(RfcConfigParameters.Client, "300");
         Conexion.Add(RfcConfigParameters.Language, "en");
         Conexion.Add(RfcConfigParameters.PoolSize, "5");
         Conexion.Add(RfcConfigParameters.PeakConnectionsLimit, "10");
         Conexion.Add(RfcConfigParameters.ConnectionIdleTimeout, "600");
 
        
        RfcDestination ConxSap = RfcDestinationManager.GetDestination(Conexion); //creacion del objeto que nos permitira conectarnos a SAP
        try
        {
            
            RfcRepository repositorio  = ConxSap.Repository;//nos conectamos a SAP

            //llamada a la funcion BAPI_COMPANY_GETDETAIL

            IRfcFunction sd = repositorio.CreateFunction("BAPI_COMPANY_GETDETAIL");
            //Asignando valores
            sd.SetValue("companyid", "BP0001");//parametro de entreda
            //Enviando valores
            sd.Invoke(ConxSap);
            return (String)sd.GetStructure("COMPANY_DETAIL").GetValue("NAME1");//retornamos el campo NAME1 dentro de la estructura COMPANY_DETAIL que devuelve la funcion

        }
        catch(Exception ex)
        {
            return ex.Message;
        }
        

    }
    
}

1 comentario:

  1. Saludos Leonel, Los webservices de Sap, se pueden ver desde SoapUi?

    ResponderEliminar