Your query isn't going to work because you are joining on SIP and Amount. Amount in tmp1 is the original amount in your data. Amount in tmp2 is the sum of the grouping by SIP you did on tmp1. Unless there is a single row for each SIP they would never be equal.
An additional problem you have is that multiple rows in tmp1 map to the same row in tmp2 so which SettleDate, TinType, etc are you actually wanting to use? Unless they are the same for all the rows with the same SIP and ShortName then it won't work.
I'm not really sure what your ultimate goal is here but it seems like you want to group the tmp1 data by SIP/ShortName into tmp2. Is that correct? In that case the Amount doesn't matter as part of the join. What you need to decide is where the rest of the values are coming from. Do you want the highest (MAX), lowest (MIN), or what?
I also don't know how much of this you actually need in temp tables. You can use a subquery to do the grouping and aggregate and join it back to the original table to get your results. The second table is only useful if you need to do subsequent processing.
Here's a query that groups by the sip, fund and shortname. Any columns in tmp1 that will have different values for rows with the same group columns should be in the select for the grouping and you need to decide which value you want. The remaining values can come from the original table. The distinct eliminates duplicate rows.
--INSERT INTO @tmp2 (...)
SELECT DISTINCT updated.sip, updated.fund, updated.ShortName, updated.TotalAmount, updated.LatestSettleDate, updated. LatestTDate
, updated.HighestPar, updated.HighestPrice, updated.LatestTransNum
, original.TrnType, original.SecDesc, original.AInterest
, original.SecType, original.Loc, original.code, original.ProductType, original.PKey
FROM @tmp1 original
JOIN (SELECT sip, fund, ShortName, SUM(Amount) TotalAmount, MAX(SettleDate) LatestSettleDate, MAX(tdate) LatestTDate, MAX(Par) HighestPar
, MAX(Price) HighestPrice, MAX(TransNum) LatestTransNum
FROM @tmp1
GROUP BY sip, Fund, ShortName) updated ON original.sip = updated.sip AND original.fund = updated.fund AND original.ShortName = updated.ShortName
Alternatively you can put all the columns in the grouping select and eliminate the need for the join back to the original table and the distinct. It is a preference to me, possibly with some profiling to check performance.