SAP ERP рдХреЗ рд╕рд╛рде рдПрдХреАрдХрд░рдгред рдПрдХ рд╕реНрдЯреЛрд░ рдореЗрдВ рдПрдХ рдореЛрдмрд╛рдЗрд▓ рдореВрд▓реНрдп рдкрд░реАрдХреНрд╖рдХ рдХрд╛ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди

рддреАрд╕рд░реЗ рдкрдХреНрд╖ рдХреЗ рд╕реЙрдлрд╝реНрдЯрд╡реЗрдпрд░ рдХреЗ рд╕рд╛рде SAP ERP рдХреЗ рдПрдХреАрдХрд░рдг рдХреЗ рд╣рдорд╛рд░реЗ рдЙрджрд╛рд╣рд░рдг рдореЗрдВ, рд╣рдо SAP рд╕реЗ рдбреЗрдЯрд╛ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП Microsoft .NET рдХреЗ рд▓рд┐рдП SAP рдХрдиреЗрдХреНрдЯрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВрдЧреЗред рдбреЗрдЯрд╛ рд╕рдВрдЧреНрд░рд╣ рдЯрд░реНрдорд┐рдирд▓ (TSD) рдХреЗ рд▓рд┐рдП рд╕реЙрдлреНрдЯрд╡реЗрдпрд░ рд╕рд░реНрд╡рд░ рдкрд░ Microsoft рдЗрдВрдЯрд░рдиреЗрдЯ рд╕реВрдЪрдирд╛ рд╕рд░реНрд╡рд░ (IIS) рдФрд░ рдЗрдВрдЯрд░рдиреЗрдЯ рдПрдХреНрд╕рдкреНрд▓реЛрд░рд░ рдЬреИрд╕реЗ рдХрд┐рд╕реА рднреА рдХреНрд▓рд╛рдЗрдВрдЯ рд╕реЙрдлрд╝реНрдЯрд╡реЗрдпрд░ рдХреЗ рд╕рд╛рде рдмрд╛рддрдЪреАрдд рдХрд░реЗрдЧрд╛, рдШрдЯрдХ рдХреЛ рд╡рд┐рдХрд╕рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧ рдХреА рдЬрд╛рдиреЗ рд╡рд╛рд▓реА рддрдХрдиреАрдХ C # рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рднрд╛рд╖рд╛ рдореЗрдВ asp.net рд╣реИред


рдПрд╕рдПрдкреА рдореЗрдВ рдПрдХ рдХрд╛рд░реНрдпрд╛рддреНрдордХ рдореЙрдбреНрдпреВрд▓ (рдПрдлрдПрдо) рд╡рд┐рдХрд╕рд┐рдд рдХрд░рддреЗ рд╕рдордп, рдкреИрд░рд╛рдореАрдЯрд░ "рд░рд┐рдореЛрдЯ рдореЙрдбреНрдпреВрд▓" рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░реЗрдВ:



рдлрд╝рдВрдХреНрд╢рди рдорд╛рди I_WERKS рдлрд╝реИрдХреНрдЯрд░реА рд▓реЗрддрд╛ рд╣реИ рдФрд░ рддрд╛рд▓рд┐рдХрд╛ TAB рд▓реМрдЯрд╛рддрд╛ рд╣реИ:


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

рд╣рдо SQL рд╕рд░реНрд╡рд░ рдбреЗрдЯрд╛рдмреЗрд╕ рдореЗрдВ IIS рдХреЗ рд▓рд┐рдП рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдХреЛ рдПрдХ рдЕрд▓рдЧ рддрд╛рд▓рд┐рдХрд╛ рдореЗрдВ рд╕рд╣реЗрдЬреЗрдВрдЧреЗ:



Asp.net рднрд╛рдЧреЛрдВ рдореЗрдВ C # рдореЗрдВ рд╣рдо Microsoft .NET рдХреЗ рд▓рд┐рдП SAP рдХрдиреЗрдХреНрдЯрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ


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 рд╕рд░реНрд╡рд░ рддрд╛рд▓рд┐рдХрд╛ рдореЗрдВ рдЪрд┐рдкрдХрд╛рддреЗ рд╣реИрдВ:


  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(); 

рд╣рдо рдбреЗрдЯрд╛ рд╕рдВрдЧреНрд░рд╣ рдЯрд░реНрдорд┐рдирд▓ (TSD) рдХреЗ рд▓рд┐рдП Visual Studio рдореЗрдВ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдЖрдХрд░реНрд╖рд┐рдд рдХрд░рддреЗ рд╣реИрдВред рдЯреАрдПрд╕рдбреА рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рддреЗ рд╕рдордп, рд╣рдо рдмрд╛рд░рдХреЛрдб рджреНрд╡рд╛рд░рд╛ рдЦреЛрдЬ рдХрд░рддреЗ рд╣реИрдВ, рдиреЗрддреНрд░рд╣реАрди рдЯреАрдПрд╕рдбреА рд╕реНрдХреНрд░реАрди рдкрд░ рдореВрд▓реНрдп рдХреА рдХреАрдордд рдХреЗ рд╕рд╛рде рдХреАрдордд рдХреА рддреБрд▓рдирд╛ рдХрд░рддреЗ рд╣реИрдВ, рдФрд░ рд╡рд┐рд╕рдВрдЧрддрд┐рдпреЛрдВ рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ рд╣рдо рд▓реЙрдЧ рдореЗрдВ рдЬреЛрдбрд╝рддреЗ рд╣реИрдВ:



рдЯреНрд░реЗрдбрд┐рдВрдЧ рдлреНрд▓реЛрд░ рдкрд░ рдореВрд▓реНрдп рдЯреИрдЧ рдкрддреНрд░рд┐рдХрд╛ рдХрд╛ рдЧрдарди, рдкреНрд░рд┐рдВрдЯ рдХрд░реЗрдВ рдФрд░ рдореВрд▓реНрдп рдЯреИрдЧ рдмрджрд▓реЗрдВред


тЖТ рдлреБрд▓ C # рдХреЛрдб GitHub рдкрд░ рджреЗрдЦрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ


GitHub рдкрд░ рдПрдХ рдЙрджрд╛рд╣рд░рдг рдХреЗ рд░реВрдк рдореЗрдВ рдкреВрд░реНрдг SAP рдлрд╝рдВрдХреНрд╢рди рдореЙрдбреНрдпреВрд▓ рдХреЛрдб


Microsoft .NET рдФрд░ C # рдХреЗ рд▓рд┐рдП SAP рдХрдиреЗрдХреНрдЯрд░ рдХреА рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдЖрдкрдХреЛ SAP ERP рд╕реЗ рд╕рд░рд▓ рдФрд░ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рддрд░реАрдХреЗ рд╕реЗ рдбреЗрдЯрд╛ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддреА рд╣реИред

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


All Articles