Boa tarde, Gesi!
Acredito que o sistema esteja gerando um falso positivo, devido ao fato dele ter encontrado os caracteres ->X3_TITULO.
Tive um problema similar usando uma query com a SX5, e corrigi trocando o nome da coluna na query.
Quanto ao seu problema na SX3, eu passei por uma situação similar e corrigi usando a classe FwSx3Util e a função GetSx3Cache. Segue exemplo abaixo:
_cAlias := 'ZD3'
_aCpoSX3 := FwSX3Util():GetAllFields(_cAlias)
_cAcols := "ZD3_COD/ZD3_DESCRI/ZD3_UM"
For i := 1 To Len(_aCpoSX3)
If(X3Uso(GetSx3Cache(_aCpoSX3[i], 'X3_USADO')) .And. AllTrim(GetSx3Cache(_aCpoSX3[i], 'X3_CAMPO')) $ _cAcols)
nUsado++
aAdd(_aHeader, {AllTrim(GetSx3Cache(_aCpoSX3[i], 'X3_TITULO')),;
AllTrim(GetSx3Cache(_aCpoSX3[i], 'X3_CAMPO')),;
GetSx3Cache(_aCpoSX3[i], 'X3_PICTURE'),;
GetSx3Cache(_aCpoSX3[i], 'X3_TAMANHO'),;
GetSx3Cache(_aCpoSX3[i], 'X3_DECIMAL'),;
"AllWaysTrue()",;
GetSx3Cache(_aCpoSX3[i], 'X3_USADO'),;
GetSx3Cache(_aCpoSX3[i], 'X3_TIPO'),;
GetSx3Cache(_aCpoSX3[i], 'X3_F3'),;
GetSx3Cache(_aCpoSX3[i], 'X3_CONTEXT'),;
GetSx3Cache(_aCpoSX3[i], 'X3_CBOX'),;
GetSx3Cache(_aCpoSX3[i], 'X3_RELACAO'),;
GetSx3Cache(_aCpoSX3[i], 'X3_WHEN'),;
GetSx3Cache(_aCpoSX3[i], 'X3_VISUAL'),;
GetSx3Cache(_aCpoSX3[i], 'X3_VLDUSER'),;
GetSx3Cache(_aCpoSX3[i], 'X3_PICTVAR'),;
If(GetSx3Cache(_aCpoSX3[i], 'X3_OBRIGAT') == "€", .T., .F.)} )
Endif
Next i
Boa tarde Gesi, você está utilizando desse código para montar o aHeader de alguma rotina?
— Daniel Mendes 25 de Jul de 2019