Customer Exit 和 User Exit 的不同之处

Customer Exit 和 User Exit 的不同之处

1. USER EXITS 是以 FORM的形式存在,所以通过被SAP standard programs 通过 PERFORM调用.   CUSTOMER EXITS 以 FUNCTION module形式存在, 通过CALL CUSTOMER-FUNCTION语句调用.  

2. 在user exit里你可以读写几乎所有的全局变量.    在customer exit里你只能访问import/export/changing/tables parameters.   

3. User exits 更加灵活(因为你可以获得更多的信息,例如所有的全局变量),但同时也很容易因为对数据的不合理处理导致系统级错误,甚至是数据库数据的一致性出现问题. 

Customer exits 更具有限制性,但是你可以确性你的程序不会导致数据库一致性出现问题.   

4. User-exit 没有什么分类.     而customer-exit 可以分为function-module exit, screen exit, menu exit.   

5. User exits 基本上都是为SD模块设计的.       Customer exits被运用在MM, SD, FI, HR... 等几乎所有的模块当中. 
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
很抱歉,由于客户管理系统的代码量比较大,无法在这里直接提供完整的代码。但我可以给您提供一些基本的代码框架和思路,让您能够自己完成客户管理系统的编写。 首先,您需要按照上面所说的步骤,设计数据库表结构,编写Java程序连接到MySQL数据库,并实现基本的增删改查功能。这部分代码如下: ```java // CustomerDAO.java import java.sql.*; import java.util.ArrayList; import java.util.List; public class CustomerDAO { private Connection con; public CustomerDAO() { try { Class.forName("com.mysql.jdbc.Driver"); String url = "jdbc:mysql://localhost:3306/mydatabase"; String user = "root"; String password = "password"; con = DriverManager.getConnection(url, user, password); } catch (Exception e) { e.printStackTrace(); } } public List<Customer> getAllCustomers() { List<Customer> list = new ArrayList<Customer>(); try { Statement stmt = con.createStatement(); ResultSet rs = stmt.executeQuery("SELECT * FROM customer"); while (rs.next()) { Customer customer = new Customer(); customer.setId(rs.getInt("id")); customer.setName(rs.getString("name")); customer.setEmail(rs.getString("email")); customer.setPhone(rs.getString("phone")); list.add(customer); } } catch (Exception e) { e.printStackTrace(); } return list; } public void addCustomer(Customer customer) { try { PreparedStatement ps = con.prepareStatement("INSERT INTO customer (name, email, phone) VALUES (?, ?, ?)"); ps.setString(1, customer.getName()); ps.setString(2, customer.getEmail()); ps.setString(3, customer.getPhone()); ps.executeUpdate(); } catch (Exception e) { e.printStackTrace(); } } public void updateCustomer(Customer customer) { try { PreparedStatement ps = con.prepareStatement("UPDATE customer SET name=?, email=?, phone=? WHERE id=?"); ps.setString(1, customer.getName()); ps.setString(2, customer.getEmail()); ps.setString(3, customer.getPhone()); ps.setInt(4, customer.getId()); ps.executeUpdate(); } catch (Exception e) { e.printStackTrace(); } } public void deleteCustomer(int id) { try { PreparedStatement ps = con.prepareStatement("DELETE FROM customer WHERE id=?"); ps.setInt(1, id); ps.executeUpdate(); } catch (Exception e) { e.printStackTrace(); } } } ``` 接下来,您需要使用Java Swing或JavaFX创建用户界面,包括显示客户列表、添加新客户、修改客户信息、删除客户等功能。这部分代码如下: ```java // CustomerManager.java import javax.swing.*; import java.awt.*; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.util.List; public class CustomerManager extends JFrame { private CustomerDAO dao; private JTable table; private JTextField nameField, emailField, phoneField; public CustomerManager() { dao = new CustomerDAO(); JPanel panel = new JPanel(new BorderLayout()); table = new JTable(); JScrollPane scrollPane = new JScrollPane(table); panel.add(scrollPane, BorderLayout.CENTER); JPanel formPanel = new JPanel(new GridLayout(0, 2)); formPanel.add(new JLabel("Name:")); nameField = new JTextField(); formPanel.add(nameField); formPanel.add(new JLabel("Email:")); emailField = new JTextField(); formPanel.add(emailField); formPanel.add(new JLabel("Phone:")); phoneField = new JTextField(); formPanel.add(phoneField); panel.add(formPanel, BorderLayout.SOUTH); JButton addButton = new JButton("Add"); addButton.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { Customer customer = new Customer(); customer.setName(nameField.getText()); customer.setEmail(emailField.getText()); customer.setPhone(phoneField.getText()); dao.addCustomer(customer); refreshTable(); } }); panel.add(addButton, BorderLayout.NORTH); JButton updateButton = new JButton("Update"); updateButton.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { int row = table.getSelectedRow(); if (row < 0) { JOptionPane.showMessageDialog(CustomerManager.this, "Please select a row."); return; } int id = (int) table.getModel().getValueAt(row, 0); Customer customer = new Customer(); customer.setId(id); customer.setName(nameField.getText()); customer.setEmail(emailField.getText()); customer.setPhone(phoneField.getText()); dao.updateCustomer(customer); refreshTable(); } }); panel.add(updateButton, BorderLayout.EAST); JButton deleteButton = new JButton("Delete"); deleteButton.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { int row = table.getSelectedRow(); if (row < 0) { JOptionPane.showMessageDialog(CustomerManager.this, "Please select a row."); return; } int id = (int) table.getModel().getValueAt(row, 0); dao.deleteCustomer(id); refreshTable(); } }); panel.add(deleteButton, BorderLayout.WEST); setContentPane(panel); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); setTitle("Customer Manager"); setSize(600, 400); setLocationRelativeTo(null); refreshTable(); } private void refreshTable() { List<Customer> customers = dao.getAllCustomers(); CustomerTableModel model = new CustomerTableModel(customers); table.setModel(model); } public static void main(String[] args) { CustomerManager manager = new CustomerManager(); manager.setVisible(true); } } ``` 最后,您需要实现一个CustomerTableModel类,用于将客户信息显示在表格中。这部分代码如下: ```java // CustomerTableModel.java import javax.swing.table.AbstractTableModel; import java.util.List; public class CustomerTableModel extends AbstractTableModel { private List<Customer> data; public CustomerTableModel(List<Customer> data) { this.data = data; } public int getColumnCount() { return 4; } public int getRowCount() { return data.size(); } public Object getValueAt(int rowIndex, int columnIndex) { Customer customer = data.get(rowIndex); switch (columnIndex) { case 0: return customer.getId(); case 1: return customer.getName(); case 2: return customer.getEmail(); case 3: return customer.getPhone(); default: return null; } } public String getColumnName(int column) { switch (column) { case 0: return "ID"; case 1: return "Name"; case 2: return "Email"; case 3: return "Phone"; default: return null; } } } ``` 这些代码可以帮助您完成一个基本的客户管理系统,您可以根据实际需求进行修改和完善。希望对您有所帮助。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值