Hi,
the root node needs to have occurrence 1:1 then only, it will create one single message. tag messages does not count, as it is runtime tag.
looking at you mapping, it is multimapping, i.e bapi_matval_price_change has 0..unbounded occurrence.
if you test message mapping with source message(with 100 records), it will created 100 bapi_matval_price_change nodes. so you are getting 100 messages.
i think you have two options.
1. modify existing RFC and add root tag to bapi_matval_price_change .
2. create proxy(as you mentioned). here also you have to add root tag to bapi_matval_price_change.
if you can, please change it to proxy.
Why I hate... I mean, avoid using RFC in PI
Regards,
Muni