Acabei de atualizar, e percebi o seguinte, quando no rastreio possui origem e destino, ele primeiro gera o "LRastreio.Local" somente com a origem, pois o destino está na próxima linha, e quando vai para próxima linha, encontra o destino, assim vai ocorrer erro, pois a data vai estar nula, o destino não ficou com a origem, e vai dar erro de conversão de data, pois vai ter apenas a informação do destino.
Sugestão para corrigir, alterar conforme o modelo que passei anteriormente:
Alterar essa linha De:
LDeveCriar := Trim(LLocal) <> '';
Para:
LDeveCriar := ((Trim(LLocal) <> '') and (Pos('Origem', LLocal) = 0)) or (Pos('Destino', LLocal) <> 0);
Assim ele vai criar apenas quando o "destino" já estiver na variável LLocal ou quando não existir a "origem/destino", for apenas o "Local".
Exemplo de objeto com esse erro:
TG338926185BR
Anexo o erro que acontece com os detalhes do erro e da correção.