Avalados por :

Problema al usar Java para acceder a datos de SAP B1: ¿Cómo importar datos externos en el módulo de pedidos?

  • Creado 01/03/2024
  • Modificado 01/03/2024
  • 3 Vistas
0
Loading...

Hola chicos,

Acabo de usar Java para acceder a los datos de SAP B1 y me encontré con un problema, no tengo idea.

He importado datos a SAP B1 desde un archivo y exportado los datos de SAP a un archivo, solo en el módulo de socios comerciales,

está bien.

También puedo exportar datos de ORDR de la base de datos de SAP B1 a un archivo.

Pero no puedo importar datos externos sobre el módulo de pedidos, solo la tabla ORDR.

He buscado en la WEB durante 2 días, ¡y no encuentro nada!

Agradeceré mucho su gran ayuda. ¿Podrían darme un ejemplo, debería ser perfecto?

REGISTRO DE ERRORES sobre la operación de actualización:

!!!Error***-Se ha encontrado una excepción COM:

En Invocar: Actualizar

Descripción: El servidor lanzó una excepción.

com.sap.smb.sbo.wrapper.com.ComFailException: Se ha encontrado una excepción COM:

En Invocar: Actualizar

Descripción: El servidor lanzó una excepción.

en com.sap.smb.sbo.wrapper.com.Dispatch.invokev(Método nativo)

en com.sap.smb.sbo.wrapper.com.Dispatch.invokev(Fuente desconocida)

en com.sap.smb.sbo.wrapper.com.Dispatch.callN(Fuente desconocida)

en com.sap.smb.sbo.wrapper.com.Dispatch.call(Fuente desconocida)

==========================================================

EL REGISTRO DE ERRORES sobre la operación de adición es similar:

!!!Error***-Se ha encontrado una excepción COM:

En Invocar: Agregar

Descripción: El servidor lanzó una excepción.

com.sap.smb.sbo.wrapper.com.ComFailException: Se ha encontrado una excepción COM:

En Invocar: Agregar

Descripción: El servidor lanzó una excepción.

......

=================================================================

Lo siguiente es solo un poco de código.

///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

ICompany vCompany = SapSdkHelper.getICompany();

vCompany.connect();

IDocuments aOrder = SBOCOMUtil.newDocuments(vCompany,

SBOCOMConstants.BoObjectTypes_Document_oOrders);

IDocument_Lines line = aOrder.getLines();//line debería ser los datos en la tabla rdr1

int successCount = 0;

for (String[] rowData : dataList) {

Integer key = new Integer(rowData[0]);

if (aOrder.getByKey(key)) {

aOrder.setAddress(aOrder.getAddress()+"prueba");

int rr = aOrder.update();

SBOErrorMessage errMsg = vCompany.getLastError();

System.out.println(errMsg.getErrorMessage());

System.out.println(rr);

continue;

}

aOrder.setDocNum(key);

...

aOrder.setCardCode(rowData[2]);

aOrder.setCardName(rowData[3]);

aOrder.setDocTotal(Double.valueOf(rowData[4]));

aOrder.setDocType(SBOCOMConstants.BoDocumentTypes_dDocument_Items);

//aOrder.setDocCurrency("RMB");

//aOrder.setDocRate(10.1);

line.setItemCode("A00001");

line.setItemDescription("Descripción de prueba");

line.setQuantity(new Double(3));

line.setPrice(new Double(3));

//line.setRate(10.1);

//line.setCurrency("RMB");

//line.add();

long rc = aOrder.add();

SBOErrorMessage errMsg = vCompany.getLastError();

System.out.println(errMsg.getErrorMessage());

System.out.println(rc);

successCount++;

}

vCompany.disconnect();

Pedro Pascal
Se unió el 07/03/2018
Pinterest
Telegram
Linkedin
Whatsapp

4 Respuestas

0
Loading...

Hola,

No es que no queramos ayudarte, la mayoría de la gente aquí no utiliza Java.

Aquí la gente principalmente desarrolla en Visual Studio C# o VB.NET.

Por eso me resulta difícil controlar tu código.

Lo que haría en tu situación es lo siguiente:

Crea un procedimiento único que

1. Solo utilice el método getByKey

2. Cambie un único valor

3. Y luego actualice.

No uses todo el código que has publicado.

Cuando el procedimiento simple funcione, al menos sabrás que puedes actualizar pedidos.

Entonces, el error está en el gran fragmento de código.

Saludos, David

Respondido el 15/04/2024
LUCIANO RIOJA GHIOTTO
Se unió el 13/07/2019
0
Loading...

Por favor, dame algunos comentarios.

La versión de SAP B1 es 7.10.32 SP:00 EF:2.

La versión del SDK está contenida en SAP B1.

Muchas gracias,

MZ

Respondido el 15/04/2024
LUCIANO RIOJA GHIOTTO
Se unió el 13/07/2019
0
Loading...

Solo consulta

Lo entendí.

Si tienes alguna pregunta sobre este tema, por favor contáctame.

Para SAP B1, solo necesitas parchear java.exe. Si desarrollas/pruebas algo en IDE, también debes parchear javaw.exe, por favor, ten en cuenta la ruta correcta utilizada en IDE.

Solo mis pasos:

1. Descarga Visual Studio Express 2008 desde microsoft.com e instálalo en línea (no es necesario descargar SQLSERVER Express)

2. Haz una copia de seguridad del archivo exe original, java.exe/javaw.exe

3. Edita la variable de entorno PATH más 'C:Program FilesMicrosoft Visual Studio 9.0VC_x0008_in'

4. Abre la ventana CMD e ingresa a %JAVA_HOME%/bin/

5. Usa dumpbin.exe para verificar el tamaño de la pila original

dumpbin.exe /headers java.exe

encuentra la línea: 40000 tamaño de reserva de pila

Significa que el tamaño de la pila actual es 256k

6. Usa editbin.exe para parchear el exe, por ejemplo, con un tamaño de pila de 2m

2m = 2 * 1024 *1024 bytes = 2097152 bytes

editbin.exe /stack:2097152 javaw.exe

7. Usa dumpbin.exe para verificar el parche.

dumpbin.exe /headers java.exe

dumpbin.exe /headers javaw.exe

encuentra la línea: 200000 tamaño de reserva de pila

Significa que el tamaño de la pila actual es 2m

¡ESTÁ BIENNNNNN!

La versión de SAP B1 es 7.10.32 SP:00 EF:2.

La versión del SDK solo está contenida en SAP B1.

Espero que te ayude un poco.

MZ

Respondido el 15/04/2024
LUCIANO RIOJA GHIOTTO
Se unió el 13/07/2019
0
Loading...

Se trata de actualizar los datos de la orden de venta.

Respondido el 15/04/2024
LUCIANO RIOJA GHIOTTO
Se unió el 13/07/2019

contacto@primeinstitute.com

(+51) 1641 9379
(+57) 1489 6964

© 2024 Copyright. Todos los derechos reservados.

Desarrollado por Prime Institute

¡Hola! Soy Diana, asesora académica de Prime Institute, indícame en que curso estas interesado, saludos!
Hola ¿Puedo ayudarte?