Boa tarde, fiz uma correção na unit ISSDSF.Provider, tratando a procedure TACBrNFSeProviderISSDSF.ProcessarMensagemErros, onde ele dava erro ao consultar status do lote e havia erro no lote. A cidade em questão era São Luis.
Ele carregava a chave mas a mesma não existe neste xml de retorno.
ANodeAux := ANodeArray[I].Childrens.FindAnyNs('ChaveRPS');
Ao passar nesta linha, ANodeAux continuava = nil. na proxima linha ele capturava o valor da chave 'NumeroRPS', que não existe e causava a excessão.
Criei uma condição verificando se ANodeAux for <> de nil. ficou assim:
if (ANodeAux <> nil) then
RPS := 'RPS '+ObterConteudoTag(ANodeAux.Childrens.FindAnyNs('NumeroRPS'), tcStr)
else
RPS := ''; Após a correção passou a operar normalmente.
ISSDSF.Provider.pas