This table you would interpret as "A can see the data if (Shop=X and Product=ANY) or (Shop=ANY and Product=Y)". But QlikView interprets it the other way around: "A can see data if (Shop=X or Shop=ANY) and (Product=ANY or Product=Y)". So it won't work. A will be able to see everything.
This blog explains how to achieve this using concatenation of the field values and a Bridge which is great!
Is there a way to support wildcards such as below:
In query terms it would be something like :
(shop=X and product like 'P%') or (shop like 'S%' and product = Y)