import java.awt.Button;
import java.awt.Frame;
import java.awt.GridLayout;
import java.awt.Label;
import java.awt.Panel;
import java.awt.TextArea;
import java.awt.TextField;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.Date;

import com.sap.mw.jco.IFunctionTemplate;
import com.sap.mw.jco.JCO;

public class BAPITip extends Frame implements ActionListener {

    private static final long serialVersionUID = 1L;
    // Global Declarations
    int i = 0;
    char flag = \'a\';
    Label doc_type, co_code, purch_org, pur_group, vendor;
    Label po_item, pur_mat, plant, unit, net_price, deliv_date, quantity;

    TextField DOC_TYPE, CO_CODE, PURCH_ORG, PUR_GROUP, VENDOR;
    TextField PO_ITEM[], PUR_MAT[], PLANT[], UNIT[], NET_PRICE[], DELIV_DATE[],
            QUANTITY[];

    Panel pan_hdr, pan_itm, pan_bs, pan_st;
    Button bt = null, bc = null, br = null, bd = null;
    TextArea status = null;

    JCO.Client mConnection = null;
    JCO.Pool pool = null;

    static final String POOL_NAME = "MyPool";
    static JCO.Repository mRepository;

    String msg = "";

    public BAPITip() {
        setLocation(0, 0);
        setSize(800, 800);
        setVisible(true);

        bt = new Button("Submit");
        bc = new Button("Connect");
        br = new Button("Reset");
        bd = new Button("Disconnect");

        bt.addActionListener(this);
        bc.addActionListener(this);
        br.addActionListener(this);
        bd.addActionListener(this);

        status = new TextArea("Status", 4, 30);
        status.setEditable(false);

        // Instantiating header labels
        doc_type = new Label("Document Type");
        co_code = new Label("Company Code");
        purch_org = new Label("Purchasing Organization");
        pur_group = new Label("Purchasing Group");
        vendor = new Label("Vendor");

        // Instantiating line item labels
        po_item = new Label(" Item number");
        pur_mat = new Label(" Material");
        plant = new Label(" Plant");
        unit = new Label(" Unit");
        net_price = new Label(" Net price");
        deliv_date = new Label(" Delivery date");
        quantity = new Label(" Quantity");

        // Instantiating header text fields
        DOC_TYPE = new TextField();
        CO_CODE = new TextField();
        PURCH_ORG = new TextField();
        PUR_GROUP = new TextField();
        VENDOR = new TextField();

        // Instantiating line item textfields
        PO_ITEM = new TextField[5];
        PUR_MAT = new TextField[5];
        PLANT = new TextField[5];
        UNIT = new TextField[5];
        NET_PRICE = new TextField[5];
        DELIV_DATE = new TextField[5];
        QUANTITY = new TextField[5];

        // Instantiating panels
        pan_hdr = new Panel();
        pan_itm = new Panel();

        // Setting layout for applet and adding component-panels to applet
        setLayout(new GridLayout(4, 1));

        // Setting layout for header panel and adding components
        GridLayout gl1 = new GridLayout(5, 2);
        pan_hdr.setLayout(gl1);

        pan_hdr.add(doc_type);
        pan_hdr.add(DOC_TYPE);

        pan_hdr.add(co_code);
        pan_hdr.add(CO_CODE);

        pan_hdr.add(purch_org);
        pan_hdr.add(PURCH_ORG);

        pan_hdr.add(pur_group);
        pan_hdr.add(PUR_GROUP);

        pan_hdr.add(vendor);
        pan_hdr.add(VENDOR);

        add(pan_hdr);

        // Setting layout for line item panel and adding components
        GridLayout gl2 = new GridLayout(7, 7);

        pan_itm.setLayout(gl2);
        pan_itm.add(po_item);
        pan_itm.add(pur_mat);
        pan_itm.add(plant);
        pan_itm.add(unit);
        pan_itm.add(net_price);
        pan_itm.add(deliv_date);
        pan_itm.add(quantity);

        for (i = 0; i < 5; i++) {
            PO_ITEM[i] = new TextField();
            PUR_MAT[i] = new TextField();
            PLANT[i] = new TextField();
            UNIT[i] = new TextField();
            NET_PRICE[i] = new TextField();
            DELIV_DATE[i] = new TextField();
            QUANTITY[i] = new TextField();

            pan_itm.add(PO_ITEM[i]);
            pan_itm.add(PUR_MAT[i]);
            pan_itm.add(PLANT[i]);
            pan_itm.add(UNIT[i]);
            pan_itm.add(NET_PRICE[i]);
            pan_itm.add(DELIV_DATE[i]);
            pan_itm.add(QUANTITY[i]);
        }

        pan_itm.add(bc);
        pan_itm.add(bt);
        pan_itm.add(br);
        pan_itm.add(bd);

        add(pan_itm);
        add(status);

    }

    public void actionPerformed(ActionEvent ae) {
        msg = "";
        if (ae.getSource() == bt)
            this.submitToSAP();
        else if (ae.getSource() == bc)
            this.connectDirectToSAP();
        else if (ae.getSource() == br)
            this.resetValues();
        else if (ae.getSource() == bd)
            this.disconnectFromSAP();
    }

    private void connectDirectToSAP() {
        // Change the logon information to your own system/user
        mConnection = JCO.createClient("210", // SAP client
                "DEV07", // userid
                "dra", // password
                "EN", // language (null for the default language)
                "10.111.16.26", // application server host name
                "00"); // system number

        try {
            mConnection.connect();
            msg = "Connection successfully established";
            this.setStatus();
            System.out.println("Connection successfully established");
        } catch (Exception ex) {
            msg = ex.getMessage();
            this.setStatus();
            System.exit(1);
        }
    }

    private void resetValues() {
        DOC_TYPE.setText("");
        PURCH_ORG.setText("");
        PUR_GROUP.setText("");
        CO_CODE.setText("");
        VENDOR.setText("");
        status.setText("");

        for (int i = 0; i < 5; i++) {
            PO_ITEM[i].setText("");
            PUR_MAT[i].setText("");
            PLANT[i].setText("");
            UNIT[i].setText("");
            NET_PRICE[i].setText("");
            DELIV_DATE[i].setText("");
            QUANTITY[i].setText("");
        }
    }

    private void submitToSAP() {
        msg = "Please wait...";
        this.setStatus();
        System.out.println("Please wait...");
        // creation of Repository object and object for the BAPI

        if (mConnection == null) {
            msg = "Please conect first to the SAP system";
            this.setStatus();
            System.out.println(msg);
            // System.exit(0);
        }
        mRepository = new JCO.Repository("ARAsoft", mConnection);

        JCO.Function function = null;
        function = BAPITip.createFunction("BAPI_PO_CREATE");

        // setting the import parameters
        JCO.Structure PO_HDR = function.getImportParameterList().getStructure(
                "PO_HEADER");

        JCO.Table PO_LITEMS = function.getTableParameterList().getTable(
                "PO_ITEMS");

        JCO.Table PO_ITM_SCH = function.getTableParameterList().getTable(
                "PO_ITEM_SCHEDULES");

        PO_HDR.setValue(DOC_TYPE.getText(), "DOC_TYPE");
        PO_HDR.setValue(CO_CODE.getText(), "CO_CODE");
        PO_HDR.setValue(PURCH_ORG.getText(), "PURCH_ORG");
        PO_HDR.setValue(PUR_GROUP.getText(), "PUR_GROUP");
        PO_HDR.setValue(VENDOR.getText(), "VENDOR");

        for (int i = 0; i < 5; i++) {

            ;
            if (PO_ITEM[i].getText() != "") {
                PO_LITEMS.appendRow();
                PO_LITEMS.setValue(PO_ITEM[i].getText(), "PO_ITEM");
                PO_LITEMS.setValue(PUR_MAT[i].getText(), "PUR_MAT");

                PO_LITEMS.setValue(PLANT[i].getText(), "PLANT");
                PO_LITEMS.setValue(UNIT[i].getText(), "UNIT");
                PO_LITEMS.setValue(NET_PRICE[i].getText(), "NET_PRICE");

                PO_ITM_SCH.appendRow();
                PO_ITM_SCH.setValue(PO_ITEM[i].getText(), "PO_ITEM");
                PO_ITM_SCH.setValue(new Date(), "DELIV_DATE");
                PO_ITM_SCH.setValue(QUANTITY[i].getText(), "QUANTITY");
            }

        }

        // executing the BAPI
        mConnection.execute(function);

        // accessing export parameters

        JCO.Table returnTable = function.getTableParameterList().getTable(
                "RETURN");

        if (returnTable.getNumRows() != 0) {
            for (int i = 0; i < returnTable.getNumRows(); i++) {
                returnTable.setRow(i);
                if (!(returnTable.getString("TYPE").equals("")
                        || returnTable.getString("TYPE").equals("S") || returnTable
                        .getString("TYPE").equals("W"))) {
                    if (i == 0)
                        status.setText("");

                    msg = returnTable.getString("MESSAGE");

                    System.out.println(returnTable.getString("MESSAGE"));

                }
            }
        }

        String PO_NUM = function.getExportParameterList().getString(
                "PURCHASEORDER");
        if (PO_NUM != null) {
            flag = \'a\';
            msg = "Purchase order " + PO_NUM + " created successfully!";
            this.setStatus();
            System.out.println(msg);

        }

    }

    private void disconnectFromSAP() {
        mConnection.disconnect();
        msg = "Disconnected from SAP system...";
        this.setStatus();
        System.out.println("Disconnected from SAP system...");
    }

    public static JCO.Function createFunction(String name) {
        IFunctionTemplate ft = mRepository.getFunctionTemplate(name
                .toUpperCase());
        if (ft == null)
            return null;
        return ft.getFunction();

    }

    private void setStatus() {
        status.setText("");
        status.setText(msg);
    }

    private void appendStatus() {
        status.append(" " + msg);
    }

    public static void main(String args[]) {
        BAPITip fb = new BAPITip();
    }
}

 

版权声明:本文为landina原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://www.cnblogs.com/landina/articles/2893014.html