Ir al contenido

PROBLEMA DE SINCRONismo? ENTRE BAPI_GOODMVT_CREATE y BAPI_QUOTATION_CREATEFROMDA

Respuestas
2
Visitas
10
Iniciado por
jpcarro
Fecha
28 Ago 2008, 20:22
Tema anterior - Siguiente tema

jpcarro

Estimados,

Estoy teniendo el siguiente problema y ya no se como resolverlo!

Necesito hacer reasignacion de materiales entre pedidos, para ellos se realizo un desarrollo donde se listan todos los materiales de un cliente especificado de los pedidos actualmente abiertos y se permite reasignarlos a otros clientes.

Para ellos, primero se realiza una reasignacion de almacenes para dicho material, pasandolo del almacen del cliente origen al cliente destino con la
BAPI_GOODSMVT_CREATE, donde se confirma en la MCHB que efectivamente se cambio de almacen el lote junto con el stock y se verifica tambien su creacion en la MARD.

Posteriormente (en el mismo desarrollo), se llama a la bapi BAPI_QUOTATION_CREATEFROMDATA2  (si se trata de una oferta nueva que se irá a crear) o a la BAPI_SALESORDER_CREATEFROMDAT2 (si se trata de un nuevo pedido).

El problema es el siguiente: SI MATERIAL + CENTRO + ALMACEN existia previamente en MARD, la bapi da el ok y procede a crear un nuevo documento con el/los materiales a reasignar.
Si no existia previamente y la bapi  BAPI_GOODSMVT_CREATE lo crea, (en el debug se verifica que efectivamente se creo la entrada en la MARD), la BAPI
BAPI_QUOTATION_CREATEFROMDATA2 o a la BAPI_SALESORDER_CREATEFROMDAT2 me dan el error "V 392 el material &1 no existe en el deposito &2 del centro &3.

Pero si salgo del desarrollo y la intento mover de nuevo, lo hace. Estimo que es un problema de sincronismo, pero no importa cuando tiempo espere en el debug, o si vuelvo a llamar a la bapi en el desarrollo cuando ocurre eso, en la MISMA SESION, no va a funcionar. SOLO funciona cuando salgo del desarrollo y entro de nuevo e intento redireccionar el material.

Muchas gracias,
Juan Pablo

Enrique.Borroni

Estimado,

       Probaste utilizando la funcion : "BAPI_TRANSACTION_COMMIT", luego de que se ejecuta tu primera BAPI ??

Saludos.

Atte.,
Enrique Borroni

maito : enrique.borroni@abap.es

jpcarro

Estimados, encontre el problema! esta fue la solucion:

Dentro de las bapis mencionadas, hay 3 niveles mas de Bapis que son ejecutadas. En la ultima (Material_read) se llama a una funcion que lee la tabla mard Lesen_mard (de paso, aprendi aleman, que significa Leer) donde se lee una tabla interna que se carga previamente cuando se ejecuto la primera bapi (goodsmovement_create).
Dado que cuando se cargo esa tabla interna NO EXISTIA ese material en el Nuevo lote asignado, no lo encontraba la bapi siguiente ya que el buffer no estaba actualizado.

El problema se resolvio al hacer un submit y llamar a la bapi desde otro programa, de modo de generar una nueva sesion donde la bapi cargue los datos actualizados.