En nuestro ejemplo de integración de SAP ERP con software de terceros, utilizaremos el conector de SAP para Microsoft .NET para obtener datos de SAP. El software para el terminal de recopilación de datos (TSD) interactuará con el Servidor de información de Internet de Microsoft (IIS) en el servidor y con cualquier software cliente como Internet Explorer, la tecnología utilizada para desarrollar el componente es asp.net en el lenguaje de programación C #.
Al desarrollar un módulo funcional (FM) en SAP, especifique el parámetro "Módulo remoto":

La función toma el valor factory I_WERKS y devuelve la tabla TAB:
FUNCTION Y_GET_MATNR_PRICE IMPORTING VALUE(I_WERKS) TYPE WERKS_D TABLES TAB LIKE YSOUT_PRICE EXCEPTIONS NO_DATA NO_VKORG.
Guardaremos la configuración de IIS en la base de datos de SQL Server en una tabla separada:

En las partes de asp.net en C #, usamos SAP Connector para Microsoft .NET
Configuración del conector de SAP:
public class MyBackendConfig : IDestinationConfiguration { SaalutDataClasses1DataContext context; public RfcConfigParameters GetParameters(String destinationName) { if (context == null) context = new SaalutDataClasses1DataContext(); if ("AEP".Equals(destinationName)) { var settingsSP = (from s in context.SettingsSAPERPTbls select s).FirstOrDefault(); RfcConfigParameters parms = new RfcConfigParameters(); parms.Add(RfcConfigParameters.Name, settingsSP.SystemID); parms.Add(RfcConfigParameters.AppServerHost, settingsSP.MessageServerHost); if (settingsSP.LogonGroup != null || settingsSP.LogonGroup != "") parms.Add(RfcConfigParameters.LogonGroup, settingsSP.LogonGroup); parms.Add(RfcConfigParameters.SystemID, settingsSP.SystemID); parms.Add(RfcConfigParameters.SystemNumber, settingsSP.SystemNumber); if (settingsSP.SAPRouter != null || settingsSP.SAPRouter != "") parms.Add(RfcConfigParameters.SAPRouter, settingsSP.SAPRouter); parms.Add(RfcConfigParameters.User, settingsSP.SAPUser); parms.Add(RfcConfigParameters.Password, settingsSP.SAPPassword); parms.Add(RfcConfigParameters.Client, settingsSP.Client); parms.Add(RfcConfigParameters.Language, "en"); parms.Add(RfcConfigParameters.PoolSize, "5"); parms.Add(RfcConfigParameters.MaxPoolSize, "10"); parms.Add(RfcConfigParameters.IdleTimeout, "600"); return parms; } else return null; } public bool ChangeEventsSupported() { return false; } public event RfcDestinationManager.ConfigurationChangeHandler ConfigurationChanged; }
Configurar una conexión con SAP ERP y recibir datos de FM Y_GET_MATNR_PRICE (c #):
RfcDestinationManager.RegisterDestinationConfiguration(cfg);
Pegamos los datos recibidos en la tabla de SQL Server:
int i = 0; foreach (IRfcStructure elem in detail) { string matnr = elem[0].GetString(); double kbetr = elem[1].GetDouble(); string kschl = elem[2].GetString(); string assort = elem[3].GetString(); SAPPriceTbl np = new SAPPriceTbl(); np.MATNR = matnr; np.KBETR = kbetr; np.KSCHL = kschl; np.ASSORT = assort; context.SAPPriceTbls.InsertOnSubmit(np); if (i == 100) { context.SubmitChanges(); i = 0; } i++; } context.SubmitChanges();
Dibujamos la interfaz en Visual Studio para el Terminal de recopilación de datos (TSD). Cuando trabajamos con TSD, buscamos por código de barras, comparamos visualmente el precio en la pantalla de TSD con el precio en la etiqueta de precio, y en caso de discrepancias agregamos al registro:

Revista de etiquetas de precios formadas, imprimir y reemplazar etiquetas de precios en el piso de negociación.
→ El código C # completo se puede ver en GitHub
→ Código de módulo de función SAP completo como ejemplo en GitHub
La funcionalidad de SAP Connector para Microsoft .NET y C # le permite recibir datos de manera simple y conveniente desde SAP ERP.