sapdev logo background
sapdev logo sapdev logo
Comments

Example JCo code to call SAP function module




Example code which calls an SAP function module 'BAPI_MATERIAL_GETLIST' with inport parameters and retrieves the resultant data.


package ws;  //Comment out or replace with own package declaration

import com.sap.mw.jco.*;

//import javax.swing.*;          //This is the final package name.
//import com.sun.java.swing.*; //Used by JDK 1.2 Beta 4 and all
				//Swing releases before Swing 1.1 Beta 3.
//import java.awt.*;
//import java.awt.event.*;
import java.util.*;

public class CallSapFunc extends Object {
	public ArrayList myArrList = new ArrayList();
	//
	int count;
	String[] SAPInterfaces;
	JCO.Client mConnection;
	JCO.Repository mRepository;
	public CallSapFunc(){
		try {
			// Logon info
			mConnection = JCO.createClient(	"500", // SAP client
					"Username", // userid
					"password", // password
					null, // language
					"Server name", // application server host name
					"00"); // system number
			mConnection.connect();
			mRepository = new JCO.Repository("ARAsoft", mConnection);
		} catch (Exception ex) {
			ex.printStackTrace();
			System.exit(1);
		}

		JCO.Function function = null;
		JCO.Table codes = null;
		JCO.Table codes2 = null;

		try {
			function = this.createFunction("BAPI_MATERIAL_GETLIST");


			if (function == null) {
				System.out.println(
					"BAPI_MATERIAL_GETLIST" + " not found in SAP.");
				System.exit(1);
			}

			codes = function.getTableParameterList().getTable("MATNRSELECTION");

			codes.appendRows(2);   // Add two rows to internal table
			codes.setValue("I", "SIGN");
			codes.setValue("EQ", "OPTION");
			codes.setValue("P1001087", "MATNR_LOW");			

			codes.nextRow();      // Move onto next row
			codes.setValue("I", "SIGN");
			codes.setValue("BT", "OPTION");
			codes.setValue("P1001087", "MATNR_LOW");	
			codes.setValue("P1009999 ", "MATNR_HIGH");			

			mConnection.execute(function);
			codes2 = function.getTableParameterList().getTable("MATNRLIST");
			
			for (int loop = 0; loop < codes2.getNumRows(); loop++){
				myArrList.add(codes2.getValue("MATERIAL"));
				codes2.nextRow();
			}

			if (myArrList.isEmpty()) {
 			 	System.out.println("No data retirved for selection criteria");
				System.exit(1);
			}		
		} catch (Exception ex) {
			ex.printStackTrace();
			System.exit(1);
		}
	}

	public JCO.Function createFunction(String name) throws Exception {
		try {
			IFunctionTemplate ft =
				mRepository.getFunctionTemplate(name.toUpperCase());
			if (ft == null)
				return null;
			return ft.getFunction();
		} catch (Exception ex) {
			throw new Exception("Problem retrieving JCO.Function object.");
		}
	}
}




comments powered by Disqus