Seguramente no necesariamente tienes que llamarlo tu para que se dispare, osea no necesariamente tienes que hacer algo como:
Código Delphi
[-]ATDetailSalidaProductoBeforePost(ATDetailSalidaProducto);
Podría ser que al hacer por ejemplo un:
Código Delphi
[-]ATDetailSalidaProducto.Next;
O quizá también lo tienes en alguna Grid y ella se encargaría de hacer pos .Post al mover el cursor y bueno pues alguna cosa por el estilo debe estar haciendo que este evento se ejecute dos veces.