Oi Carlos,
O que está aconcetendo é um problema típico do tratamento de cursores e documentos XML. Ocorre que, caso vc não especifique um documento XML com schemas para a função XMLTOCURSOR() ela tentará "adivinhar" os tipos e tamanhos dos campos existentes no documento XML para a geração do cursor correspondente. O VFP usa um algoritmo de "best-guess" para atribuir estes tipos e tamanhos. Como isso é, na maioria das vezez, indesejável, existe um parâmetro na função CURSORTOXML() que especifica que um schema deveria ser gerado. veja no exemplo a seguir a criação de um cursor e a geração de um XML com schemas:
LOCAL lcXML AS String
CREATE CURSOR Teste (ID Integer, Nome Char(50))
INSERT INTO Teste VALUES (1, "Carlos Moises")
INSERT INTO Teste VALUES (2, "Fabio Vazquez")
CURSORTOXML("Teste", "lcXML", 1, 0, 0, "1")
A variável lcXML conterá um documento XML com um XSD Schema Inline. Este XML poderia ser transmitido para a Camada de apresentação e transformado em um cursor simplesmente assim:
XMLTOCURSOR(lcXML, "Retorno")
A partir deste momento você teria um cursor chamado Retorno com os campos ID (tipado como Inteiro) e Nome (tipado como char(50).
Usando esta abordagem vc elimina o algoritmo de "best-guess" da função XMLTOCURSOR() e soluciona este tipo de problema que vc vem entrontrando.
um abraço!