Dalam contoh integrasi SAP ERP kami dengan perangkat lunak pihak ketiga, kami akan menggunakan Konektor SAP untuk Microsoft .NET untuk mendapatkan data dari SAP. Perangkat lunak untuk terminal pengumpulan data (TSD) akan berinteraksi dengan Microsoft Internet Information Server (IIS) di server dan dengan perangkat lunak klien apa pun seperti Internet Explorer, teknologi yang digunakan untuk mengembangkan komponen adalah asp.net dalam bahasa pemrograman C #.
Saat mengembangkan modul fungsional (FM) di SAP, tentukan parameter "Modul jauh":

Fungsi mengambil nilai I_WERKS pabrik dan mengembalikan tabel TAB:
FUNCTION Y_GET_MATNR_PRICE IMPORTING VALUE(I_WERKS) TYPE WERKS_D TABLES TAB LIKE YSOUT_PRICE EXCEPTIONS NO_DATA NO_VKORG.
Kami akan menyimpan pengaturan untuk IIS di database SQL Server dalam tabel terpisah:

Di bagian asp.net di C # kami menggunakan Konektor SAP untuk Microsoft .NET
Menyiapkan Konektor 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; }
Menyiapkan koneksi dengan SAP ERP dan menerima data dari FM Y_GET_MATNR_PRICE (c #):
RfcDestinationManager.RegisterDestinationConfiguration(cfg);
Kami menempelkan data yang diterima ke tabel 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();
Kami menggambar antarmuka di Visual Studio untuk Terminal Pengumpulan Data (TSD). Saat bekerja dengan TSD, kami mencari berdasarkan barcode, secara visual membandingkan harga di layar TSD dengan harga pada label harga, dan jika ada perbedaan, kami tambahkan ke jurnal:

Majalah label harga terbentuk, cetak dan ganti label harga di lantai perdagangan.
→ Kode C # lengkap dapat dilihat di GitHub
→ Kode modul fungsi SAP lengkap sebagai contoh pada GitHub
Fungsi SAP Connector untuk Microsoft .NET dan C # memungkinkan Anda menerima data dengan cara yang sederhana dan nyaman dari SAP ERP.