As you've found, MC doesn't have good straightforward support for the multi-movement compositions of Classical music.
However, a feature was added that makes this task much easier than the method you've happened onto using global variables. (In fact there are a couple of easier ways to do this, without using global variables.) Global variables are too complicated to easily implement for a lot of people.
The easiest way is to rely on the "Link Tracks" feature.
Simply select all the movements in a composition, and right-click, and select Library Tools->Link Tracks
Now, when added to a Smartlist, these tracks will play together in order.
You should still use the "Remove Duplicate" modifier to ensure the composition appears on the playlist only once.
Also, regarding your "Opus" field, you may find it's more efficient to use calculated data, rather than entering data manually.
I use a custom field "Composition" for this purpose. It is a field of type "Calculated Data" with the definition:
listitem([name],0,:)
This works in conjunction with having a consistent naming convention for classical music. I name my classical tracks such that the name of the composition comes first, separated from the track-specific info by a colon. So if you have the three tracks for Mozart's 1st Piano Concerto named as follows:
Concerto No.1 in F major, K.37: I. Allegro
Concerto No.1 in F major, K.37: II. Andante
Concerto No.1 in F major, K.37: III. Allegro
They will all automatically share the [Composition] value "Concerto No.1 in F major, K.37"
So simply by naming tracks correctly, they will automatically share Composition fields. This makes it possible to do what you're after without using global variables, and in fact without even using linked tracks.