与SAP ERP集成。 在商店中实现移动价格检查器

在我们的SAP ERP与第三方软件集成示例中,我们将使用SAP Connector for Microsoft .NET从SAP获取数据。 数据收集终端(TSD)的软件将与服务器上的Microsoft Internet信息服务器(IIS)和任何客户端软件(例如Internet Explorer)进行交互,用于开发组件的技术是采用C#编程语言的asp.net。


在SAP中开发功能模块(FM)时,请指定参数“远程模块”:



该函数采用值I_WERKS factory并返回表TAB:


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

我们将IIS的设置保存在SQL Server数据库的单独表中:



在C#中的asp.net部分中,我们将SAP Connector用于Microsoft .NET


设置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; } 

与SAP ERP建立连接并从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"); 

我们将接收到的数据粘贴到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(); 

我们在Visual Studio中为数据收集终端(TSD)绘制界面。 使用TSD时,我们通过条形码进行搜索,将TSD屏幕上的价格与价格标签上的价格进行直观比较,如果出现差异,我们会添加到日记帐中:



形成价格标签杂志,在交易大厅打印并替换价格标签。


→可以在GitHub上查看完整的C#代码


→完整的SAP功能模块代码以GitHub为例


SAP Connector for Microsoft .NET和C#的功能使您能够以简单方便的方式从SAP ERP接收数据。

Source: https://habr.com/ru/post/zh-CN446964/


All Articles