Está en la página 1de 7

Conectar Java con SAP JCO Connector

En este ejemplo veremos como conectarnos a SAP desde Java y consultar los datos de una tabla de SAP, para lograr
esto utilizaremos el driver JCO Connector, que tambien se podría usar WebService para la coneccíon pero esto sera
otro tema.

Ahora debemos bajarnos el Conector del siguiente link SAP Marketplace nos pedirá un usuario y contraseña este
usuario lo tienen las empresas, partners, y otros que tienen alguna relación con SAP, pero si no tenemos el usuario
para poder acceder a la página los bajamos de este link click aqui

Ingresamos a SAP y creamos una función RFC que no hará mas que traernos una lista de registros de una tabla de SAP
para luego procesarlo en nuestra aplicación en java.

Entramos a la transacción SE37 para crear nuestra función: ZRCF_SPFLI_LIST

Seleccionamos la pestaña "Import"...

El parámetro "CARRID" será opcional, luego en la pestaña "Tables":


El parámetro "FLIGHT_LIST" nos devolverá los valores que recogeremos en nuestra aplicación en java.

En la pestaña "Source code" escribiremos el código que obtendrá los datos de la tabla de SAP.

Para terminar con nuestra función tenemos que indicarle que será un RFC (Remote Function Call) para poder acceder
a el desde la aplicación.
Grabamos y Activamos la función, y ya se encuentra listo para usarlo.

Antes de pasar a crear nuestra aplicacion, debemos colocar las librerias del jco connector en la carpeta de windows,
cuando descargamos el conector nos adjunta una dll:

librfc32.dll : colocar en la carpeta "C:\WINDOWS\system32\"

Ahora pasaremos a crear la aplicación en java que accederá a la función rfc, para esto creamos un nuevo proyecto
"Java Application" e ingresamos el nombre del proyecto, seguidamente agregamos la librería al proyecto "sapjco":
Escribiendo en nuestra clase:

Importamos la librería:

Declaramos las variables que utilizaremos:


Establecemos la conexion al servidor...

Accedemos a la función:

Recorremos los valores de nuestra tabla que se obtuvo de la función:

Ejecutamos y el resultado es...


Código Completo:
package test_sap_jco;

import com.sap.mw.jco.*;
/**
*
* @author carlos
*/
public class Main {
/**
* @param args the command line arguments
*/
public static void main(String[] args) {
JCO.Client client = null;
JCO.Function funcion = null;
JCO.Table t_spfli = null;

IRepository repositorio = null;


IFunctionTemplate ftemplate = null;
try {
client = JCO.createClient("000",
"bcuser",
"minisap",
"EN",
"localhost",
"00");

//Creando el repositorio para las funciones


repositorio = JCO.createRepository("MiRepositorio", client);
//Indicamos que funciones queremos utilizar
ftemplate =
repositorio.getFunctionTemplate("ZRCF_SPFLI_LIST".toUpperCase());
//Obtenemos la funcion del SAP
funcion = ftemplate.getFunction();
//Pasamos parametros a la funcion
funcion.getImportParameterList().setValue("AA", "CARRID");
//Ejecutamos la funcion
client.execute(funcion);
//Capturamos el parametro de Salida
t_spfli = funcion.getTableParameterList().getTable("FLIGHT_LIST");
System.out.println("Nro de Filas:" +t_spfli.getNumRows());

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


t_spfli.setRow(i);
System.out.println(t_spfli.getString("CARRID") + " " +
t_spfli.getString("CONNID") + " " +
t_spfli.getString("COUNTRYFR") + " " +
t_spfli.getString("CITYFROM") + " " +
t_spfli.getString("AIRPFROM") + " " +
t_spfli.getString("COUNTRYTO") + " " +
t_spfli.getString("CITYTO"));
}
} catch (Exception e) {
System.out.println("Error:" +e.getMessage());
}
}
}

También podría gustarte