Intégration avec SAP ERP. Mise en place d'un vérificateur de prix mobile dans un magasin

Dans notre exemple d'intégration de SAP ERP avec des logiciels tiers, nous utiliserons le connecteur SAP pour Microsoft .NET pour obtenir des données de SAP. Le logiciel du terminal de collecte de données (TSD) interagira avec Microsoft Internet Information Server (IIS) sur le serveur et avec tout logiciel client tel qu'Internet Explorer, la technologie utilisée pour développer le composant est asp.net dans le langage de programmation C #.


Lors du développement d'un module fonctionnel (FM) dans SAP, spécifiez le paramètre "Module distant":



La fonction prend la valeur I_WERKS et retourne la table TAB:


FUNCTION Y_GET_MATNR_PRICE IMPORTING VALUE(I_WERKS) TYPE WERKS_D TABLES TAB LIKE YSOUT_PRICE EXCEPTIONS NO_DATA NO_VKORG. 

Nous enregistrerons les paramètres d'IIS dans la base de données SQL Server dans une table distincte:



Dans les parties asp.net en C #, nous utilisons SAP Connector pour Microsoft .NET


Configuration du connecteur 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; } 

Établir une connexion avec SAP ERP et recevoir des données de FM Y_GET_MATNR_PRICE (c #):


  RfcDestinationManager.RegisterDestinationConfiguration(cfg);//1 RfcDestination prd = RfcDestinationManager.GetDestination("AEP");//2 RfcRepository repo = prd.Repository;//3 IRfcFunction pricesBapi = repo.CreateFunction("Y_GET_MATNR_PRICE");//4 pricesBapi.SetValue("I_WERKS", werk); //5 pricesBapi.Invoke(prd); //6 IRfcTable detail = pricesBapi.GetTable("TAB"); 

Nous collons les données reçues dans la table 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(); 

Nous dessinons l'interface dans Visual Studio pour le Data Collection Terminal (TSD). Lorsque vous travaillez avec TSD, nous recherchons par code-barres, comparons visuellement le prix sur l'écran TSD avec le prix sur l'étiquette de prix, et en cas de divergences, nous ajoutons au journal:



Formé le magazine des étiquettes de prix, imprimez et remplacez les étiquettes de prix sur le parquet.


→ Le code C # complet peut être consulté sur GitHub


→ Code de module de fonction SAP complet comme exemple sur GitHub


La fonctionnalité de SAP Connector pour Microsoft .NET et C # vous permet de recevoir des données de manière simple et pratique depuis SAP ERP.

Source: https://habr.com/ru/post/fr446964/


All Articles