How about just running the query once through instead of two seperate, then joining... Something like
select
sum( 0000.00 + iif( Doctpo in ( '1', '6', '7' ), Document.docimp, 0 )) as Sumar,
sum( 0000.00 + iif( Doctpo in ( '2', '3' ), Document.docimp, 0 )) as Restar,
sum( Document.docimp * iif( Doctpo in ( '1', '6', '7' ), 1, -1 )) as Saldo
from
FROM Document;
WHERE
Document.Abocod = 1;
AND Doctpo IN ('1','6','7', '2', '3');
I'm doing a sum of 0000.00 + IIF() because whatever the first value is returned from a VFP query is the basis of that column type in final set. So, you may need to adjust the default length/precision per your needs if you will expect any balance above 9999.99.