private void btn_ok_Click(object sender, EventArgs e) { if (txt_password.Text != txt_password_wdh.Text) { MessageBox.Show("Passwörter stimmen nicht überein", "Fehler", MessageBoxButtons.OK, MessageBoxIcon.Error); } else { ISaveUser userpersistenz = new RfcUserPersistence(); try { BapiReturn response = userpersistenz.CreateUser(new User("", txt_lastname.Text, "", txt_username.Text), txt_password.Text); MessageBox.Show(response.Message, response.Type.IsError ? "Fehler" : "Erfolg", MessageBoxButtons.OK, GetIconFromBapiReturn(response)); if (response.Type.Equals(BapiReturnType.Success)) { Main.RefreshUsers(); this.Hide(); } } catch (SapCommunicationException ex) { MessageBox.Show(ex.Message, @"Fehler", MessageBoxButtons.OK, MessageBoxIcon.Error); } } }
public BapiReturn CreateUser(User user, string password) { IRfcFunction fun; RfcRepository repository; if (password.Trim() == "") { throw new SapCommunicationException("Bitte geben sie ein Passowrt ein!"); } try { repository = Dest.Repository; fun = repository.CreateFunction("BAPI_USER_CREATE1"); var address = repository.GetStructureMetadata("BAPIADDR3").CreateStructure(); var logond = repository.GetStructureMetadata("BAPILOGOND").CreateStructure(); var bapipassword = repository.GetStructureMetadata("BAPIPWD").CreateStructure(); address.SetValue("LASTNAME", user.LastName); bapipassword.SetValue("BAPIPWD", password); fun.SetValue("USERNAME", user.UserName); fun.SetValue("ADDRESS", address); fun.SetValue("PASSWORD", bapipassword); fun.SetValue("LOGONDATA", logond); fun.Invoke(Dest); } catch (RfcCommunicationException ex) { throw new SapCommunicationException("Keine Verbindung zum SAP-Server", ex); } IRfcTable returnTable = fun.GetTable("RETURN"); var firstreturn = returnTable[0]; var response = new BapiReturn(FromSapReturn(firstreturn.GetString("TYPE")), firstreturn.GetString("MESSAGE")); try { if (response.Type.Equals(BapiReturnType.Error)) { RollbackTransaction(repository); } else { CommitTransaction(repository); } } catch (RfcCommunicationException ex) { throw new SapCommunicationException("Keine Verbindung zum SAP-Server", ex); } return(response); }
public BapiReturn DeleteUser(string user) { RfcRepository repository; IRfcFunction fun; try { repository = Dest.Repository; fun = repository.CreateFunction("BAPI_USER_DELETE"); fun.SetValue("USERNAME", user); fun.Invoke(Dest); } catch (RfcCommunicationException ex) { throw new SapCommunicationException("Keine Verbindung zum SAP-Server", ex); } IRfcTable returnTable = fun.GetTable("RETURN"); var firstreturn = returnTable[0]; var response = new BapiReturn(FromSapReturn(firstreturn.GetString("TYPE")), firstreturn.GetString("MESSAGE")); try { if (response.Type.Equals(BapiReturnType.Error)) { RollbackTransaction(repository); } else { CommitTransaction(repository); } } catch (RfcCommunicationException ex) { throw new SapCommunicationException("Keine Verbindung zum SAP-Server", ex); } return(response); }
private MessageBoxIcon GetIconFromBapiReturn(BapiReturn bapiReturn) { if (bapiReturn.Type.IsInfo) { return(MessageBoxIcon.Information); } if (bapiReturn.Type.IsError) { return(MessageBoxIcon.Error); } if (bapiReturn.Type.IsWarning) { return(MessageBoxIcon.Warning); } if (bapiReturn.Type.IsSuccess) { return(MessageBoxIcon.Asterisk); } else { return(MessageBoxIcon.None); } }
public BapiReturn ChangeUser(User user, UserDetails userDetails) { IRfcFunction fun; RfcRepository repository; try { repository = Dest.Repository; var address = repository.GetStructureMetadata("BAPIADDR3").CreateStructure(); var addressx = repository.GetStructureMetadata("BAPIADDR3X").CreateStructure(); fun = repository.CreateFunction("BAPI_USER_CHANGE"); fun.SetValue("USERNAME", user.UserName); address.SetValue("STREET", userDetails.Address.Street); address.SetValue("HOUSE_NO", userDetails.Address.Number); address.SetValue("POSTL_COD1", userDetails.Address.Postcode); address.SetValue("CITY", userDetails.Address.City); address.SetValue("FIRSTNAME", userDetails.Firstname); address.SetValue("LASTNAME", userDetails.Lastname); addressx.SetValue("STREET", "X"); addressx.SetValue("HOUSE_NO", "X"); addressx.SetValue("POSTL_COD1", "X"); addressx.SetValue("CITY", "X"); addressx.SetValue("FIRSTNAME", "X"); addressx.SetValue("LASTNAME", "X"); fun.SetValue("ADDRESS", address); fun.SetValue("ADDRESSX", addressx); fun.Invoke(Dest); } catch (RfcCommunicationException ex) { throw new SapCommunicationException("Keine Verbindung zum SAP-Server", ex); } IRfcTable returnTable = fun.GetTable("RETURN"); var firstreturn = returnTable[0]; var response = new BapiReturn(FromSapReturn(firstreturn.GetString("TYPE")), firstreturn.GetString("MESSAGE")); try { if (response.Type.Equals(BapiReturnType.Error)) { RollbackTransaction(repository); } else { CommitTransaction(repository); } } catch (RfcCommunicationException ex) { throw new SapCommunicationException("Keine Verbindung zum SAP-Server", ex); } return(response); }
public static bool IsError(this BapiReturn bapiReturn) => bapiReturn.MessageType == BapiMessageType.Error || bapiReturn.MessageType == BapiMessageType.Abort;