PDA

Ver la Versión Completa : Cuando termina.?


DCErick
18/08/08, 16:55:45
Hola estoy usando esta BAPI "/AFS/BAPI_PO_CREATE" para crer pedidos de traslados el caos es que necesito saber cuando termina exactamente la afectacion de todas las tablas para poder pasar a crear el siguiente traslado.

*Ya puse eso pero tengo el problema de que aun así sigue en proceso de update y por lo tanto algunos materiales están bloqueados y esto afecta al momento de crear el siguiente traslado.

CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
EXPORTING
wait = 'X'
IMPORTING
return = s_ret2.

*Adicionalmente le puse las siguientes lineas decódigo.
COMMIT WORK AND WAIT.
WAIT UP TO 60 SECONDS. <- Esta es la que quiero quitar porque no puedo esperar 1 hora para quenerar 60 traslados y menos cuando unos tienen pocos materiales. Pero no lo hago porque con esto hace que ya casi no me marqué productos bloqueados.


Este programa lo corro en un job por la noche y se crean diariamente minimo 70 traslados, pero no solo los creo entre otroas cosas hay que alicarles el 351(MB1B) proceso que tambien bloquea producto que tambien bloquea producto, entre otras cosas que tambien toman su tiempo.

¿Alguna idea de que puedo hacer en este caso?

ibecerra
18/08/08, 17:16:57
hola si no me equivoco cuando sap bloquea registro utiliza la funcion ENQUEUE*(SEGUN OBJETO).. puede ser q utilizes la funcion que desbloquea el objeto y continuas con el siguiente registro.
saludos

DCErick
18/08/08, 18:01:10
hola si no me equivoco cuando sap bloquea registro utiliza la funcion ENQUEUE*(SEGUN OBJETO).. puede ser q utilizes la funcion que desbloquea el objeto y continuas con el siguiente registro.
saludos
No pues lo ideal seria que el objeto se desbloquee solo, que siga el flujo normal, lo que necesito es saber cuando termino completamente la BAPI se crear y actualizar todo.

Gracias de antemano.

ibecerra
18/08/08, 18:13:03
hola y porque no haces una validacion , cuando generes el pedido por la bapi verifca que el nro de pedido que genere exsista en la ekko(creo q esta bapi genera los documento en esta tabla).
y no pases al siguiente hasta que este no este insertado solo asi sabras cuando exactamente termino.
Saludos

DCErick
18/08/08, 20:21:11
hola y porque no haces una validacion , cuando generes el pedido por la bapi verifca que el nro de pedido que genere exsista en la ekko(creo q esta bapi genera los documento en esta tabla).
y no pases al siguiente hasta que este no este insertado solo asi sabras cuando exactamente termino.
Saludos
Eso tambien ya lo tengo y aun asi tengo el mismo problema.
:S

ballan
19/08/08, 09:55:29
Pues dudo mucho que puedas inferir el momento exacto en el que se dejan de actualizar tablas puesto que eso depende de muchos factores como la carga de trabajo del servidor, la planificacion del gestor de BBDD...

Para mi la mejor solucion seria hacer un bucle de este estilo

DO n TIMES "Aqui pondrias el numero de reprocesos

perform comprobar_pedido "Aqui miraria en la EKKO si se ha creado

if sy-subrc = 0.
exit.
endif.

wait up to n seconds "Aqui el retardo pero nunca 60 segundos porque es una barbaridad

ENDDO

DCErick
19/08/08, 15:11:07
Bueno lo deje con lo siguiente:



CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
EXPORTING
wait = 'X'.

**Verificamos que ya no esté bloqueado el traslado.
l_number = 1.
WHILE l_number > 0.

l_garg = ''.
CONCATENATE sy-mandt t_zekko-ebeln INTO l_garg.

CALL FUNCTION 'ENQUEUE_READ'
EXPORTING
gclient = sy-mandt
gname = 'EKKO'
garg = l_garg
IMPORTING
number = l_number
TABLES
enq = ti_seqg3
EXCEPTIONS
communication_failure = 1
system_failure = 2
OTHERS = 3.
ENDWHILE.

Ya con eso el proceso duró menos de 40 minutos para 54 traslados.

Gracias por su ayuda.

ibecerra
19/08/08, 15:14:16
entonces quedo bien!!:D