¡Hola a todos!
Creé el evento SM62 para ejecutar un trabajo en segundo plano programado.
El evento se activa en la tarea en segundo plano durante la publicación de MIGO utilizando la Función de Módulo 'BP_EVENT_RAISE' (que a su vez llama al método CL_BATCH_EVENT=>RAISE).
Esto solía funcionar perfectamente en la versión anterior de SAP 1610. Pero después de la actualización a la versión 2021, dejó de funcionar.
Así que depuré el método CL_BATCH_EVENT=>RAISE y encontré que se agregó un nuevo fragmento de código estándar en el método:
IF p_eventid <> cl_batch_event=>event_sap_end_of_job. DATA(lv_trigger_immediately) = lcl_handle_raise_event=>handle_event( iv_eventid = p_eventid iv_eventparm = i_eventparm iv_server = p_server iv_force_event = i_force_event ). IF lv_trigger_immediately = abap_false. RETURN. ENDIF. ENDIF.
Como puedes ver, el método
lcl_handle_raise_event=>handle_event
, devuelve el indicador 'activar inmediatamente' y, en mi caso, esto siempre vuelve como ABAP_FALSE.
Así que, depurando este método, descubro que si se encuentra que el evento está almacenado en la tabla
btcraiseevt
, nunca devolverá el indicador 'activar inmediatamente'.
Por lo tanto, mi pregunta es ¿cómo asegurar que un evento personalizado siempre se active inmediatamente?