Como substituição para esse comando foi criada a função XmlChildEx (https://tdn.totvs.com/display/tec/XmlChildEx). Tenho algumas observações quando for utilizá-la:
Ela só verifica o primeiro nível passado, então se não houver certeza dos demais nível verificados, será necessário fazer várias chamadas descendo os níveis como no exemplo abaixo. Se tiver certeza pode já chamar direto apenas os níveis que podem ser opcionais e que serão verificados.
O segundo parâmetro obrigatoriamente tem ser em MAIÚSCULO senão ela não vai achar.
Uma alternativa dependendo do fonte seria adaptar para usar a nova classe TXmlManager (https://tdn.totvs.com/display/tec/Classe+TXmlManager) só que nesse caso exige uma grande refatoração de código.
Como uma melhoria pode utilizar essa minha função CXValAtrib() e passar a string de forma idêntica ao Type() que ela quebra os elementos e faz essa validação usando a função XmlChildEx() de forma transparente e performática, apenas de fazer um laço e ser uma função separada ainda assim é muito mais rápida que a função Type().
If XmlChildEx(oXml, '_NFEPROC') <> NIL .And. ;
XmlChildEx(oXml:_NFEPROC,'_NFE') <> NIL .And. ;
XmlChildEx(oXml:_NFEPROC:_NFE,'_TOTAL') <> NIL .And. ;
XmlChildEx(oXml:_NFEPROC:_NFE:_Total,'_ICMSTOT') <> NIL .And. ;
XmlChildEx(oXml:_NFEPROC:_NFE:_Total:_ICMSTOT,'_VIPI') <> NIL
....
EndIf
Exemplo usando a função customizada:
U_CXValAtrib("_oXml:_NFEPROC:_NFE:_INFNFE:_Total:_ICMSTOT:_vIPI") <> "U"
Ainda pode simplificar o código usando uma diretiva Define que vai substituir todos os Types() pela função customizada sem precisar mexer no código, use com cautela porque pode haver problemas caso use o type em outras variáveis que não seja desse tipo XML.
#xtranslate Type( => u_CXValAtrib(