i think you need to take top(1) from your below query or take Max or Min from below query
(select isnull(vch_no,'') from ERP1314..SH_VCH_M_EXP where PN_VOUCHER = M.WageRefCode) as BMCM,
(select Convert(varchar,vch_Date,106) from ERP1314..SH_VCH_M_EXP where PN_VOUCHER = M.WageRefCode) as BMCMDate,
(select isnull(vch_no,'') from ERP1314..SH_VCH_M where PN_VOUCHER = M.WageRefCode) as BPCP,
(select Convert(varchar,vch_Date,106) from ERP1314..SH_VCH_M where PN_VOUCHER = M.WageRefCode) as BPCPDate
it should be something like this
(select TOP(1)isnull(vch_no,'') from ERP1314..SH_VCH_M_EXP where PN_VOUCHER = M.WageRefCode) as BMCM,
(select TOP(1)Convert(varchar,vch_Date,106) from ERP1314..SH_VCH_M_EXP where PN_VOUCHER = M.WageRefCode) as BMCMDate,
(select TOP(1)isnull(vch_no,'') from ERP1314..SH_VCH_M where PN_VOUCHER = M.WageRefCode) as BPCP,
(select TOP(1)Convert(varchar,vch_Date,106) from ERP1314..SH_VCH_M where PN_VOUCHER = M.WageRefCode) as BPCPDate