SAP Java Connector - Example 2: CompanyCode_GetList

来源:互联网 发布:sqlserver费用 编辑:程序博客网 时间:2024/06/05 17:33
 

SAP Java Connector - Example 2: CompanyCode_GetList

 

Code
How to compile and run the program

Code

This example shows how to use the BAPI CompanyCode_GetList to retrieve a list of company codes from SAP and display them in a listbox..

 

//-------------------------------------------------------------
// GetCompanycodeList CLASS
//-------------------------------------------------------------

import com.sap.mw.jco.*;  //The JCOimport java.awt.*;import java.awt.event.*;import javax.swing.*;import java.util.*;import javax.swing.border.*;public class GetCompanycodeList extends JFrame implements ActionListener{ private JCO.Client mConnection = null; private JTextField returnValues; private IRepository mRepository; private JCO.Function myFunction; private JList companyCodeList;  public GetCompanycodeList()  { //------------------------------------------------------------    //Set size of window and center it on the screen    //------------------------------------------------------------    setSizeAndPosition();    //------------------------------------------------------------    // Windows listener    //------------------------------------------------------------    addWindowListener(new WindowAdapter()      {  public void windowClosing(WindowEvent e)         {  if (mConnection != null)              JCO.releaseClient(mConnection);            System.exit(0);         }      } );    //------------------------------------------------------------    // Add Logon and Cancel button    //------------------------------------------------------------    Container myContentPane = getContentPane();    JPanel buttonPanel = new JPanel();    Border bevel1 = BorderFactory.createBevelBorder(0);    buttonPanel.setBorder(bevel1);    myContentPane.add(buttonPanel,BorderLayout.SOUTH);    JButton logonButton = new JButton("Logon");    JButton cancelButton = new JButton("Cancel");    logonButton.setActionCommand("logon_action");    cancelButton.setActionCommand("cancel_action");    logonButton.addActionListener(this);    cancelButton.addActionListener(this);    buttonPanel.add(logonButton);    buttonPanel.add(cancelButton);    //------------------------------------------------------------    // Add textfield for system messages    //------------------------------------------------------------    returnValues = new JTextField(50);    myContentPane.add(returnValues,BorderLayout.NORTH);    //------------------------------------------------------------    // Add a listbox for Company codes    //------------------------------------------------------------    companyCodeList = new JList();    JScrollPane scrollPane = new JScrollPane(companyCodeList );    myContentPane.add(scrollPane,BorderLayout.CENTER);  }//---------------------------------------------------------// Action listener for push buttons//--------------------------------------------------------- public void actionPerformed(ActionEvent evt) { Object mySource = evt.getSource();   String command = evt.getActionCommand();   if (command == "logon_action")     ConnectToSap();   else if  (command == "cancel_action")     if (mConnection != null)        JCO.releaseClient(mConnection);//     System.exit(0); }//------------------------------------------------------------// Logon and display Company Code list//------------------------------------------------------------ private void  ConnectToSap() {    //--------------------------------------------------------    // Logon to SAP    //--------------------------------------------------------    try    {      mConnection = JCO.createClient("800",           //SAP client                                     "WMHEFRN",       //User ID                                     "SLUPPERT3",     //Password                                     "EN",            //Language                                     "172.29.80.207", //Host                                     "00");           //System      mConnection.connect();    }    catch (Exception ex)    {      JOptionPane.showMessageDialog(this,"Error in logon");      System.exit(0);    }    JOptionPane.showMessageDialog(this, "Logon ok");   //---------------------------------------------------------   // Create metadata with JCO Repository   //---------------------------------------------------------    try    { mRepository = new JCO.Repository("Henrik",mConnection);    }    catch (Exception ex)    { JOptionPane.showMessageDialog(this,"Error reading meta data");      System.exit(0);    }    //---------------------------------------------------------    // Get a function template from the repository, create a    // function from it and and execute the function    //---------------------------------------------------------    try    {     // Get a function template from the repository     IFunctionTemplate ftemplate = mRepository.getFunctionTemplate("BAPI_COMPANYCODE_GETLIST");     // Create a function from the template      myFunction = new JCO.Function(ftemplate);     //Execute function      mConnection.execute(myFunction);    }    catch (Exception ex)    { JOptionPane.showMessageDialog(this,"Error executing function");      System.exit(0);    }//---------------------------------------------------------// Handle return data//---------------------------------------------------------// Check return parameter.  JCO.Structure vReturn = myFunction.getExportParameterList().getStructure("RETURN");  if (vReturn.getString("TYPE").equals("")  ||      vReturn.getString("TYPE").equals("S") )      returnValues.setText("OK");  else    returnValues.setText("Returnvalues: " + vReturn.getString("MESSAGE"));// Get companycode list   JCO.Table company_codes = myFunction.getTableParameterList().getTable("COMPANYCODE_LIST");// Create vector an store Company code data in it   Vector listElements = new Vector(0,1);   for (int i = 0; i < company_codes.getNumRows();i++)   { company_codes.setRow(i);     listElements.setSize( i + 1);     listElements.addElement( company_codes.getString("COMP_CODE") + " " +                              company_codes.getString("COMP_NAME"));   }// Use vector as listbox source   companyCodeList.setListData(listElements);// Release the client into the pool   JCO.releaseClient(mConnection);  JOptionPane.showMessageDialog(this,"Ended without errors"); }//---------------------------------------------------------//Set window properties and center the frame on the screen//---------------------------------------------------------  private void setSizeAndPosition()  {    setSize(300,400);    setTitle("Event handling");    setResizable(false);    //Center the window    Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();    Dimension frameSize = this.getSize();    if (frameSize.height > screenSize.height) {      frameSize.height = screenSize.height;    }    if (frameSize.width > screenSize.width) {      frameSize.width = screenSize.width;    }    this.setLocation((screenSize.width - frameSize.width) / 2, (screenSize.height - frameSize.height) / 2);    //Change look and feel to Windows      try        { //Call the static setLookAndFeel method and give it the name of the          //look and feel you want          UIManager.setLookAndFeel("com.sun.java.swing.plaf.windows.WindowsLookAndFeel");          //Refresh components          SwingUtilities.updateComponentTreeUI(this);         }       catch(Exception e) {}  }}

//-----------------------------------------------------------------
// Run CLASS - Runs the application
//-----------------------------------------------------------------

public class Run
{ public static void main(String[] args)
{ GetCompanycodeList GetCompanycodeList1 = new GetCompanycodeList();
GetCompanycodeList1.show();
}
}

 

How to compile and run the program

Preparations

The application consists of two classes stored in the two files Run.java and and GetCompanycodeList.java. We are using a directory name d:/javatest for the classes.

For our convinience we also copy the SAP/Java connector class and the jRFC12.dll to the same directory, so we easily can include them in the CLASSPATH.

Copy: jCO.jar and jRFC12.dll to d:/javatest

Compiling:

We now compile the two classes. Remember to use the classpath statement

d:/javatest>javac *.java -classpath d:/javatest;d:/javatest/jCO.jar

Running the application from a DOS prompt:

Aalso here remember the classpath (-cp)

d:/javatest>java -cp d:/javatest;d:/javatest/jCO.jar Run

Making a JAR file

 

Make a manifest file in notepad and name it mainclass. In the manifest write:

Main-Class: Run

Make the JAR file:

jar cvmf mainclass sap.jar *.class jCO.jar

Important: When you compile the java claases a file named GetCompanycodeList$1.class is automatically generated. This file must be included in the JAR file.

 

Running the JAR file from a DOS prompt:

java -jar sap.jar

 

 

 

原创粉丝点击