Posicione duas tabelas

Boa tarde, sou iniciante em advpl e preciso fazer a comparação de um registro presente em uma tabela, no caso, são dois códigos,(CFD_COD e SB1_COD), porém, na CFD possuo um critério, é possível filtrar apenas os dados da CFD, e pesquisar os mesmos na SB1? consegui fazer com while anteriormente, mas agora estou tentando com posicione, alguma sugestão? Exemplo:

DbSelectArea("CFD") dbSetOrder(1) SET FILTER TO CFD->CFD_PERCAL = cPercal .AND. !Empty(CFD->CFD_FCICOD)

MsgInfo("entrou na cfd", "teste") //return

if Posicione("CFD",1,xFilial("CFD")+SB1->B1_COD,"CFD_COD") == SB1->B1_COD //posicione("SB1",1,XFilial("SB1")+cEdit1,"B1_COD") MsgInfo("possui codigo", "Title") //return

else MsgInfo("deu ruim", "cTitle") //return

ENDIF

SET FILTER TO DbCloseArea("CFD")

Uma vez que você posiciona em um ALIAS ex.: CFD e realiza os filtros, ao posicionar em outro ALIAS SB1, o ADVPL mantém a posição dos ALIASES anteriores, então uma vez que já filtrou os registros na CFD, vc pode percorrer o ALIAS SB1 comparando os registros diretamente

DbSelectArea("CFD") dbSetOrder(1) SET FILTER TO CFD->CFD_PERCAL = cPercal .AND. !Empty(CFD->CFD_FCICOD)

While CFD->(!EOF()) DbSelectArea("SB1") SB1->(DbSetOrder(1)) SB1->(DbGoTop()) While SB1->(!EOF()) if CFD->CFD_COD == SB1->B1_COD MsgInfo("possui codigo", "Title") CFD->(DbSkip()) Exit EndIf EndDo MsgInfo("deu ruim", "cTitle") CFD->(DbSkip()) EndDo

Neste exemplo, cada registro da tabela CFD será comparado com cada registro da SB1, se encontrar o código, será exibida a mensagem e pulado para o próximo registro, senão será exibida a mensagem que "deu ruim" e pula para próximo registro.

Compreendi perfeitamente, achava que seria necessário filtrar os dados em ambos alias. Saberia me informar se é possível realizar esse mesmo tipo de comparação, utilizando o posicione?