COMMIT y ROLLBACK en BAPI
Tengo el siguiente problema, necesito ejecutar 1 bapi 2 veces
(HU_CREATE_GOODS_MOVEMENT) , si ejecuta bien la primera vez, sigo con la segunda vez, pero el problema que es necesaria ejecutar la primera, para que existan los datos para ejecutar la segunda. 1 - HU_CREATE_GOODS_MOVEMENT hago un mov 305 2 - HU_CREATE_GOODS_MOVEMENT hago un mov 344 si no hago el commit en la 1 no puedo hacer el 344 porque el stock esta en transito. Gracias, |
Y cual seria el problema en cuestion??.. el commit no llega a guardar los datos antes de la ejecucion del 344??.. Si es ese tema prueba con un COMMIT WORK AND WAIT. Saludos. |
Este es el escenario.
1- tengo una uma en transito. con el mov 305 (primera bapi que se ejecuta), deja el stock en L.U., Si esta bapi se ejecuta bien sigo con la segunda que toma el stock L.U. y lo deja Bloq. (mov 344) Si esta falla debo ser capaz de deshacer los cambios de la primera bapi y segunda bapi. El problema es q si no hago un commit en la primera, la segunda me falla pq el stock no esta en L.U. y si hago el commit, con el rollback no logro deshacer los cambios de la primera bapi. |
Me mataste pa.. Si encontras la solucion publicala asi nos enteramos los que no la sabemos. Suerte !!! Y disculpa que no te pueda ayudar. Saludos. |
hola, intentaste con el parametro IF_COMMIT = 'X' en vez de hacerlo por codigo?
Otra cosa que podes intentar es usar la funcion BAPI_TRANSACTION_COMMIT y BAPI_TRANSACTION_ROLLBACK. espero te sirva. saludos |
Hola, si uso IF_COMMIT = 'X' no me funciona el ROLLBACK.
Gracias |
Prueba intentando con la bapi BAPI_GOODSMVT_CREATE en lugar de la que utilizas...
Ésta te permitirá ingresar más de un item a tu documento de material... De repente funciona con una sola llamada a la BAPI haciendo los dos movimientos simutáneamente... Por el momento no se me ocurre nada más... Nos avisas |
Y ya buscaste si existe un tipo de movimiento que te deje el stock de transito a bloqueado sin tener que pasar por libre:confused:
|
Llamadme loco pero...
Podrias crear el primer movimiento con commit y si el segundo falla anular el primero con la MBST o BAPI_GOODSMVT_CANCEL, no? |
Busque mov para hacer el paso de bloq a transito pero no encuentro, podria hacer una copia del 303 y modificar el tipo de stock que verifica, pero no encontre donde modificar.
Se puede hacer la anulacion del nr de doc, pero no queda 100% transaccional, ya que si no funciona esta bapi, quedará con incongruencia los datos. |
Error "Movimiento mercancías imposible con clase movimiento 460"
Cuando llamo a la BAPI por medio de un programa me devuelve el error "Movimiento mercancías imposible con clase movimiento 460" y si corro la bapi por la SE37 con los mismos datos anda OK.
los datos que paso son: DATA vl_code TYPE gm_code VALUE '04'. *se completan los datos para crear el documento wl_header-pstng_date = sy-datum. wl_header-doc_date = sy-datum. wl_code-gm_code = vl_code. wl_item-material = '000000000000003963'. "Material wl_item-plant = 'AG03'. " CENTRO ORIGEN wl_item-stge_loc = 'ST01'. " Almacen wl_item-batch = 'AG'. "Lote wl_item-move_type = '459'. " Clase mov. wl_item-entry_qnt = 10. " Cantidad wl_item-entry_uom = 'ST'. "Unidad wl_item-move_stloc = 'ST01'. " Almacen wl_item-move_batch = 'AG'. "Lote APPEND wl_item TO ti_item. *se crea el documento CALL FUNCTION 'BAPI_GOODSMVT_CREATE' EXPORTING goodsmvt_header = wl_header goodsmvt_code = wl_code testrun = '' IMPORTING materialdocument = vl_mat_doc matdocumentyear = vl_doc_year TABLES goodsmvt_item = ti_item return = ti_return. CALL FUNCTION 'BAPI_TRANSACTION_COMMIT' EXPORTING wait = 'X'. Alguien me podria indicar a que se debe el error? o si me falta algun dato? Saludos. :confused: |
Es 460 o 459? En la tabla T158B tienes las clase de movimiento por transaccion y en la T158G los tipo de movimiento para cada transaccion por medio de BAPI. Hechale un ojo y ve que todo cuadre. |
Hola DCErick, perdon los datos que puse es cuando lo vuelvo a bloquear> Primero lo desbloqueo y uso: wl_item-material = '000000000000003963'. "Material wl_item-plant = 'AG05'. " CENTRO ORIGEN wl_item-stge_loc = 'SN01'. " Almacen wl_item-batch = 'AG'. "Lote wl_item-move_type = '460'. " Clase mov. wl_item-entry_qnt = 10. " Cantidad wl_item-entry_uom = 'ST'. "Unidad wl_item-move_stloc = 'SN01'. " Almacen wl_item-move_batch = 'AG'. "Lote APPEND wl_item TO ti_item. |
Hace mucho que no toco esa BAPI, tengo la duda de si no te falta indicar el centro destino?
|
Es lo mismo ponerlo porque como es desbloqueo es en el mismo centro-almacen-lote, e igual probe con pasarlos los 3 datos y sigue emitiendo el mismo error :( "Movimiento mercancías imposible con clase movimiento 460". Y la cantidad que paso a desbloquear es 10 y en la tabla tiene bloqueada 550. |
Y el movimiento ese lo puedes hacer sin problemas por la MB1B? |
Yo alimento los siguientes datos para moverlo de control de calidad a libre.
Uso el prefijo AFS puesto que estoy sobre la vertical AFS y uso una BAPI /AFS/BAPI_GOODSMVT_CREATE pero deberia de ser casi casi lo mismo. |
Si deberia ser lo mismo, lo que no entiendo es por en el programa que ne cree para probar que pasar si anda bien el llamada a la BAPI y no devuelve error. pero el programa Z donde la tengo que poner ahi con lo mismo me devuelve error...es muy raro...:mad:
Saludos. |
Ahi encontre cual era el problema. Ante de llamar a BAPI_GOODSMVT_CREATE estoy llamando a la funcion VB_BATCH_DETERMINATION para recuperar el lote y esto es lo que hace luego que la BAPI me emita el error, porque si saco el llamado a la funcion para recueprar el Lote la BAPI anda bien...que sera?
Saludos. |
Me esta pasando lo mismo, uso la VB_BATCH_DETERMINATION, y luego al usar la bapi BAPI_GOODSMVT_CREATE , las pruebo por separado y todo funciona bien, encontraste la solución? |
Husos Horarios son GMT. La hora en este momento es 08:29:32. |
www.mundosap.com 2006 - Spain
software crm, crm on demand, software call center, crm act, crm solutions, crm gratis, crm web