PDA

Ver la Versión Completa : Consulta BAPI_MATERIAL_AVAILABILITY con JCO


prodriguez
12/01/12, 14:05:18
Buenos días, mi nombre es Pablo Rodriguez, soy nuevo en el foro.
Hace poco empece a programar una interfaz para conectar mi sistema con SAP, para la interfaz estoy usando el conector provisto por sap JCO 3 y java 1.6.
Quiero Ejecutar la BAPI "BAPI_MATERIAL_AVAILABILITY" para obtener una consulta de stock pero al ejecutarla no me devuelve ningún resultado cosa que es errónea ya que en sap puedo visualizar que si hay datos.

Este es el código que utilizo para ejecutar dicha función



JCoFunction function = connect.getFunction("BAPI_MATERIAL_AVAILABILITY");
function.getImportParameterList().setValue("PLANT", "AR51");
function.getImportParameterList().setValue("UNIT", "CXT");
function.getImportParameterList().setValue("MATERIAL", "7015738");
connect.execute(function);

JCoStructure returnStructure = function.getExportParameterList().getStructure( "RETURN" );
System.out.println(returnStructure);

JCoTable codes = function.getTableParameterList().getTable(
"WMDVEX");
System.out.println("la funcion devolvio: " + codes .getNumRows() + " rows");



pero lo que obtengo después de ejecutar dicho código es:

|-|-----|-------...
| STRUCTURE 'BAPIRETURN'
|-|-----|-------...
|T|CODE |MESSAGE..
|-|-----|-------...
|0|12345|67890123....
|-|-----|-------...
|W|M3351|Material 15738 . . en el centro AR51 no actualizado.
|-|-----|-------...

la función devolvió: 0 rows

Alguien sabe porque puede ser que se este dando este problema?

Flatron
05/03/12, 10:42:50
conseguiste solucionarlo??

Yo estoy interesado en obtener también el stock de los materiales de SAP para dar uso el dato en otra aplicación.

prodriguez
15/05/12, 15:47:38
hola si pude solucionarlo, el problema se daba porque sap espera como codigo de material un nro de 18 cifras.
para solucionarlo que hice fue lo siguiente


NSNumberFormatter f = new NSNumberFormatter("00000000000000000#");
JCoFunction function = connect.getFunction("BAPI_MATERIAL_AVAILABILITY");
function.getImportParameterList().setValue("PLANT", "AR51");
function.getImportParameterList().setValue("UNIT", "CXT");
function.getImportParameterList().setValue("MATERIAL", f.format(new Integer("7015738")));
connect.execute(function);


yo use el NSNumberFormatter ya que trabajamos con webobject de apple pero cualquier formateador sirve.

Saludos