コード例 #1
0
        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);
                }
            }
        }
コード例 #2
0
        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);
        }
コード例 #3
0
        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);
        }
コード例 #4
0
 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);
     }
 }
コード例 #5
0
        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);
        }
コード例 #6
0
 public static bool IsError(this BapiReturn bapiReturn)
 => bapiReturn.MessageType == BapiMessageType.Error || bapiReturn.MessageType == BapiMessageType.Abort;