I think I understand the first requirment...and hopefully this general method will help with the second (or you are able to explain it by adapting the attached).
so the key to this is FIXED LoDs. FIXED LoDs aren't affected by "regular" filters, so we are able to have the total figure regardless of what is filtered...
So first I created the LoD for total sales
[Total Sales - LoD]
and could then create the %age like this
[%age Sales from Selection]
SUM([Sales])/SUM([Total Sales - LoD])
I've then used these measures (using an action to filter down the selected subCat(s)) in a viz so the Sales (as a contribution to total in $ and %) is shown when a subCat is selected.
Hope this helps, and makes sense...but let me know if not.