MUNDOSAP

MUNDOSAP (foro/index.php)
-   Programación ABAP IV (foro/forumdisplay.php?f=4)
-   -   COMMIT y ROLLBACK en BAPI (foro/showthread.php?t=43313)

sebapap 18/05/11 15:57:55

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,

SAPING 18/05/11 16:39:04


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.

sebapap 18/05/11 16:56:49

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.

SAPING 18/05/11 17:27:07


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.

mysmb2 18/05/11 19:11:19

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

sebapap 18/05/11 20:24:31

Hola, si uso IF_COMMIT = 'X' no me funciona el ROLLBACK.

Gracias

Garces 18/05/11 21:20:38

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

DCErick 18/05/11 23:27:57

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:

ballan 19/05/11 10:43:04

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?

sebapap 19/05/11 13:42:14

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.

vrpascual 15/08/11 15:27:55

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:

DCErick 15/08/11 15:51:10


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.

vrpascual 15/08/11 15:58:27


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.

DCErick 15/08/11 16:01:16

Hace mucho que no toco esa BAPI, tengo la duda de si no te falta indicar el centro destino?

vrpascual 15/08/11 16:08:08


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.

DCErick 15/08/11 16:12:02


Y el movimiento ese lo puedes hacer sin problemas por la MB1B?

DCErick 15/08/11 16:22:54

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.

vrpascual 15/08/11 17:36:25

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.

vrpascual 16/08/11 13:01:34

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.

hjqr 21/05/13 02:48:21


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 11:58:44.

www.mundosap.com 2006 - Spain
software crm, crm on demand, software call center, crm act, crm solutions, crm gratis, crm web