Integração com SAP ERP. Implementação de um verificador de preço móvel em uma loja

Em nosso exemplo de integração do SAP ERP com software de terceiros, usaremos o SAP Connector for Microsoft .NET para obter dados do SAP. O software para o terminal de coleta de dados (TSD) irá interagir com o Microsoft Internet Information Server (IIS) no servidor e com qualquer software cliente como o Internet Explorer, a tecnologia usada para desenvolver o componente é asp.net na linguagem de programação C #.


Ao desenvolver um módulo funcional (FM) no SAP, especifique o parâmetro "Módulo remoto":



A função pega o valor I_WERKS factory e retorna a tabela TAB:


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

Salvaremos as configurações do IIS no banco de dados do SQL Server em uma tabela separada:



Nas partes do asp.net em C #, usamos o SAP Connector for Microsoft .NET


Configurando o SAP Connector:


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

Configurando uma conexão com o SAP ERP e recebendo dados do 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"); 

Colamos os dados recebidos na tabela do 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(); 

Desenhamos a interface no Visual Studio para o Data Collection Terminal (TSD). Ao trabalhar com um TSD, realizamos uma pesquisa de código de barras, comparamos visualmente o preço na tela do TSD com o preço do preço e, no caso de discrepâncias, adicionamos ao diário:



Revista de etiquetas de preço formada, imprima e substitua etiquetas de preço no pregão.


→ O código C # completo pode ser visualizado no GitHub


→ Código completo do módulo de função SAP como exemplo no GitHub


A funcionalidade do SAP Connector para Microsoft .NET e C # permite que você receba dados de uma maneira simples e conveniente do SAP ERP.

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


All Articles