Olá a todos!
Criei o evento SM62 para executar um trabalho em segundo plano agendado.
O evento é ativado na tarefa em segundo plano durante a publicação do MIGO utilizando a Função de Módulo 'BP_EVENT_RAISE' (que por sua vez chama o método CL_BATCH_EVENT=>RAISE).
Isso costumava funcionar perfeitamente na versão anterior do SAP 1610. Mas após a atualização para a versão 2021, parou de funcionar.
Então, depurei o método CL_BATCH_EVENT=>RAISE e descobri que um novo trecho de código padrão foi adicionado no 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 você pode ver, o método
lcl_handle_raise_event=>handle_event
, retorna o indicador 'ativar imediatamente' e, no meu caso, isso sempre retorna como ABAP_FALSE.
Então, depurando este método, descubro que se o evento estiver armazenado na tabela
btcraiseevt
, nunca retornará o indicador 'ativar imediatamente'.
Portanto, minha pergunta é como garantir que um evento personalizado sempre seja ativado imediatamente?