Funcion en Background

Colapsar
X
 
  • Tiempo
  • Mostrar
Limpiar Todo
nuevos mensajes
  • Tute.360
    Junior Member
    • nov
    • 17

    #1

    Funcion en Background

    Tengo un gran problema con una funcion que tengo que crear. Paso a explicar:

    Mi funcion se debe ejecutar en modo Background. Lo que hace es agregar deliveries a un determinado shipment (se crea una sales order, luego el delivery y se agrega) mediante la funcion BAPI_SHIPMENT_CHANGE. El tema es que durante todo el proceso de background, si el shipment esta en modo edicion en otra screen (VT02N), no me permite agregar el delivery porque esta tomado por otro usuario.
    Con este escenario, se me ocurrio lockear el shipment antes de entrar a la funcion, y antes de ejecutar la BAPI, deslockearlo.

    Si lo corro de manera normal, funciona de maravillas: me bloquea el shipment, lo desbloquea, ejecuto la funcion y anda de manera correcta.

    El tema es que en background, no lo puedo hacer funcionar y no entiendo el motivo... Hasta llegue a usar un WAIT UP TO 3 SECONDS y nada...

    Este es mi codigo:

    * Shipment Lock
    CALL FUNCTION 'ENQUEUE_/PCM2/E_TKNUM'
    EXPORTING
    tknum = <l_wa_shipments>-shpmnum_ob
    EXCEPTIONS
    foreign_lock = 1
    system_failure = 2
    OTHERS = 3.

    * Call Background FM
    CALL FUNCTION '/SCL/OTC_LOT_UNDO'
    IN BACKGROUND TASK DESTINATION 'NONE'
    EXPORTING
    im_t_shipments = l_i_aux
    im_planid = v_plan_id.

    (inside FM)

    * Unlock Shipment
    CALL FUNCTION 'DEQUEUE_/PCM2/E_TKNUM'
    EXPORTING
    tknum = fp_l_v_tknum.
    WAIT UP TO 3 SECONDS.

    * Call BAPI
    CALL FUNCTION 'BAPI_SHIPMENT_CHANGE'
    EXPORTING
    headerdata = l_wa_headerdata
    headerdataaction = l_wa_headerdataaction
    TABLES
    itemdata = l_i_itemdata
    itemdataaction = l_i_itemdataaction
    return = l_i_return.

    Alguien me puede guiar?
Trabajando...