Could you use nested Filter - the Filter created via formulas with the dyntax accesed from the function syntax palette to make one part static, the other half dynamically filtered?
What I am suggesting is as per; -
So instead of applying your filter (as in where condition) in the normal way you use it in the USING .... clause, with your Denominator is either just the base measure or a static filter, depending on the complexity of whatever else is in your analysis.
As the Blog talks about 'Instead of CASE Statements' - sum(CASE when ... whatever then Measure else 0 end) / sum (Measure) is also an option, but I rarely get sound results with CASE in an analysis, due to the way OBIEE tries to aggregate as early as possible you often find CASE in the analysis gives spurious results.
You might also want to have a look at selection steps which can be useful when you want a % of a total population - https://www.youtube.com/watch?v=-pYGHevIqZA
In short there are a number of options here.
What about a level based measure pinned at Product total content level?