التكامل مع SAP ERP. تنفيذ مدقق أسعار المحمول في متجر

في مثالنا على تكامل SAP ERP مع برنامج تابع لجهة خارجية ، سوف نستخدم SAP Connector for Microsoft .NET للحصول على بيانات من SAP. سيتفاعل برنامج محطة جمع البيانات (TSD) مع خادم معلومات إنترنت لـ Microsoft (IIS) على الخادم ومع أي برنامج عميل مثل Internet Explorer ، والتكنولوجيا المستخدمة لتطوير المكون هي asp.net بلغة البرمجة C #.


عند تطوير وحدة وظيفية (FM) في SAP ، حدد المعلمة "الوحدة النمطية عن بُعد":



تأخذ الوظيفة القيمة 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 في جدول منفصل:



في أجزاء asp.net في C # ، نستخدم SAP Connector for 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 مع السعر على علامة الأسعار ، وفي حالة وجود تباينات نضيفها إلى المجلة:



مجلة علامات الأسعار المشكلة ، قم بطباعة واستبدال علامات الأسعار في قاعة التداول.


→ يمكن الاطلاع على رمز C # الكامل على GitHub


→ كامل رمز وحدة وظيفة SAP كمثال على جيثب


تسمح لك وظيفة SAP Connector لـ Microsoft .NET و C # بتلقي البيانات بطريقة بسيطة ومريحة من SAP ERP.

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


All Articles