cancel
Showing results for 
Search instead for 
Did you mean: 

Can we use JCo connection with non-Web Dynpro J2EE project in NW

Former Member
0 Kudos

With Web Dynpro, we have the RFC wizard to call RFCs using JCo connection. I am wondering, if I create a J2EE project in NW development studio, can I and how to use JCo connection to call RFCs?

Thanks.

Accepted Solutions (1)

Accepted Solutions (1)

0 Kudos

yes, of course.

Add jar sapjco.jar then


import com.sap.mw.jco.*;

public class Bapi1 extends Object {

   JCO.Client mConnection;

   JCO.Repository mRepository;

   public Bapi1() {

      try {

         // Change the logon information to your own system/user

         mConnection =

            JCO.createClient("001", // SAP client

              "<userid>", // userid

              "****", // password

              null, // language

              "<hostname>", // application server host name

              "00"); // system number

        mConnection.connect();

        mRepository = new JCO.Repository("SAPJCo", mConnection);

      }

      catch (Exception ex) {

        ex.printStackTrace();

        System.exit(1);

      }

      JCO.Function function = null;

      JCO.Table codes = null;

      try {

         function = this.createFunction("BAPI_COMPANYCODE_GETLIST");

         if (function == null) {

           System.out.println("BAPI_COMPANYCODE_GETLIST" +

                              " not found in SAP.");

           System.exit(1);

         }

         mConnection.execute(function);

         JCO.Structure returnStructure =

           function.getExportParameterList().getStructure("RETURN");

         if (! (returnStructure.getString("TYPE").equals("") ||

                returnStructure.getString("TYPE").equals("S")) ) {

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

           System.exit(1);

         }

         codes =

           function.getTableParameterList().getTable("COMPANYCODE_LIST");

         for (int i = 0; i < codes.getNumRows(); i++) {

           codes.setRow(i);

           System.out.println(codes.getString("COMP_CODE") + '\t' +

                              codes.getString("COMP_NAME"));

         }

      }

      catch (Exception ex) {

        ex.printStackTrace();

        System.exit(1);

      }

      try {

        codes.firstRow();

        for (int i = 0; i < codes.getNumRows(); i++, codes.nextRow()) {

          function = this.createFunction("BAPI_COMPANYCODE_GETDETAIL");

          if (function == null) {

            System.out.println("BAPI_COMPANYCODE_GETDETAIL" +

                               " not found in SAP.");

            System.exit(1);

          }

     function.getImportParameterList().

       setValue(codes.getString("COMP_CODE"), "COMPANYCODEID");

     function.getExportParameterList().

       setActive(false, "COMPANYCODE_ADDRESS");

     mConnection.execute(function);

     JCO.Structure returnStructure =

       function.getExportParameterList().getStructure("RETURN");

     if (! (returnStructure.getString("TYPE").equals("") ||

            returnStructure.getString("TYPE").equals("S") ||

            returnStructure.getString("TYPE").equals("W")) ) {

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

     }

     JCO.Structure detail =

       function.getExportParameterList().

       getStructure("COMPANYCODE_DETAIL");

     System.out.println(detail.getString("COMP_CODE") + '\t' +

                        detail.getString("COUNTRY") + '\t' +

                        detail.getString("CITY"));

   }

  }

  catch (Exception ex) {

    ex.printStackTrace();

    System.exit(1);

  }

  mConnection.disconnect();

 }

 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.");

   }

 }

 public static void main (String args[]) {

   Bapi1 app = new Bapi1();

 }

}

Link: [http://help.sap.com/saphelp_nw04/helpdata/en/35/42e13d82fcfb34e10000000a114084/frameset.htm]

Answers (1)

Answers (1)

Former Member
0 Kudos

Thanks, Luca.

Stefan-EA
Contributor
0 Kudos

Here is a blog that shows you how to do this without hard coding the connection details

/people/stefan.thibeault2/blog/2008/07/16/a-real-world-example-of-using-the-sap-enterprise-connector