Por lo que veo el segundo select recoges los mismos datos que en el primero.
Lo que quieres hacer es así:
Código SQL
[-]
SELECT DISTINCT a.CVE_ART, b.EXIST -
(SELECT sum(b1.EXIST)
FROM PAR_FACTP02 AS a2 LEFT OUTER JOIN
MULT02 AS b2 ON a2.CVE_ART = b2.CVE_ART LEFT OUTER JOIN
FACTP02 AS c2 ON a2.CVE_DOC = c2.CVE_DOC LEFT OUTER JOIN
INVE02 AS d2 ON a.CVE_ART = d2.CVE_ART
WHERE (c2.STATUS <> 'C') AND (b2.CVE_ALM = 1) AND (b2.EXIST > 0) and (a2.CVE_ART = a.CVE_ART)
GROUP BY b2.EXIST) AS DISPONIBLES
FROM
PAR_FACTP02 AS a LEFT OUTER JOIN
MULT02 AS b ON a.CVE_ART = b.CVE_ART LEFT OUTER JOIN
FACTP02 AS c ON a.CVE_DOC = c.CVE_DOC LEFT OUTER JOIN
INVE02 AS d ON a.CVE_ART = d.CVE_ART
WHERE
(b.CVE_ALM = 1) AND (b.EXIST > 0) AND (c.STATUS <> 'C') GROUP BY a.CANT, a.CVE_ART, b.EXIST
Observa que en este query he cambiado los alias de las tablas y he puesto
Código SQL
[-]and (a2.CVE_ART = a.CVE_ART)
De esta manera el segundo query obtendra el estock del producto que esta procesando el primer query