I picked up this technique from @Alan a while back. Basically, you put your Prompt in pairs of OR statements so that when you pick “ALL” that eliminates the comparison of the corresponding database column since ‘ALL’ = ‘ALL’ will always be true. The last parameter User:X sets the parameter order.
WHERE
(CITY = @Prompt('City', 'A', {'ALL'}, Mono, Free,Not_Persistent,{'ALL'}, User:0) OR
'ALL' = @Prompt('City', 'A', {'ALL'}, Mono, Free,Not_Persistent,{'ALL'}, User:0))
AND
(DATE = @Prompt('Date', 'D', {'ALL'}, Mono, Free,Not_Persistent,{'ALL'}, User:1) OR
'ALL' = @Prompt('Date', 'D', {'ALL'}, Mono, Free,Not_Persistent,{'ALL'}, User:1))
AND
(PRODUCT = @Prompt('Product', 'A', {'ALL'}, Mono, Free,Not_Persistent,{'ALL'}, User:2) OR
'ALL' = @Prompt('Product', 'A', {'ALL'}, Mono, Free,Not_Persistent,{'ALL'}, User:2))
AND
(STORE = @Prompt('Store', 'A', {'ALL'}, Mono, Free,Not_Persistent,{'ALL'}, User:3) OR
'ALL' = @Prompt('Store', 'A', {'ALL'}, Mono, Free,Not_Persistent,{'ALL'}, User:3))
Here are some documentation links related to the @Prompt function. You can adjust a lot of the properties of the Prompt function to suit your requirements.
https://help.sap.com/viewer/512fca6758c4495bb6a50fe3e1e4b892/4.2.3/en-US/46480cee6e041014910aba7db0e91070.html
https://help.sap.com/viewer/512fca6758c4495bb6a50fe3e1e4b892/4.2.3/en-US/4647fdd26e041014910aba7db0e91070.html