Saturday, 27 February 2010

SAP Java Connector (SAP JCo) : sample

Here's a sample code to get the currency list of the BAPI ZBAPI_GET_CURRENCY_LIST:

ArrayList desMoneda = new ArrayList();
ArrayList ideMoneda = new ArrayList();

//Creamos la función de la BAPI
com.sap.mw.jco.JCO.Function funcionDivisas = repository.getFunctionTemplate("ZBAPI_GET_CURRENCY_LIST").getFunction();

//Declaramos los parámetros que se le enviarán a la BAPI
com.sap.mw.jco.JCO.ParameterList listParams = funcionDivisas.getImportParameterList();      
listParams.setValue("ES","LANGU");

//Ejecutamos la BAPI
connection.execute(funcionDivisas);

//Recuperamos la tabla de SAP
Table tablaDivisas = funcionDivisas.getTableParameterList().getTable("CURRENCYLIST");
desMoneda.add(Text.getText("language.messages", "ActividadRegistro.comboDivisa", oLocale));
ideMoneda.add("");

//Recorremos la tabla de divisas y seteamos los arrays del formulario
for (int i = 0; i < tablaDivisas.getNumRows(); i++){
 ideMoneda.add(tablaDivisas.getValue("WAERS"));
 desMoneda.add(tablaDivisas.getValue("LTEXT"));  
 tablaDivisas.nextRow();
}
And here's the connectSap() and disconnectSap() functions:
/** Conexion */
protected JCO.Client connection;   // Connection con SAP
/** Repositorio */
protected IRepository repository;   // Repostorio de funciones SAP

/**
 * Iniciamos la conexion y el repositorio con el SAP
 *
 */
public void connectSap(String client, String user, String pass, String lang, String host, String nSystem, String name) {
 try {
  /** Creamos la conexion con el SAP   */  
  connection = JCO.createClient(client, user, pass, lang, host, nSystem);
  connection.connect();

  /** Creamos el repositorio con el SAP   */
  repository = new JCO.Repository(name, connection);
 } catch(Exception e) {
  log.error("Error -> connectSAP: " + e.getMessage(),e); 
 }
}

public void disconnectSap() {
 if(connection != null) {
  try {
   connection.disconnect();
  }catch(Exception e) {
  log.error("Error -> disconnectSap: " + e.getMessage(),e);
  }
 }
}