The Analysis API function SAPMoveDimenison is reasonably well documented, but there are some subtleties around adding and removing dimensions.
It is possible to add a dimension that is available in the DataSource, to ROWS, COLUMNS or FILTER, even if it isn’t currently included on ROWS, COLUMNS or FILTER.
Likewise, it is possible to move most Dimensions between ROWS, COLUMNS or FILTER (the default exception being the Measures dimension, which can’t be moved to FILTER). Furthermore, you don’t need to know where the dimension currently is – you can just specify the PositionBy parameter. In my testing, if the Dimension is already in the position that you’re trying to move it to, there isn’t any change/refresh of the crosstab.
But it’s not clear how to remove a dimension from ROWS or COLUMNS, or FILTER, but in practice, if a dimension is on FILTER but not filtered, it is as if it is not on FILTER. That is, it does not appear in the crosstab and it does not effect the crosstab content/layout/results.
It would be nice if there was a parameter to SAPMoveDimension that let you explicitly remove the dimension, even from FILTER, but as of 1.4 SP4_1, there doesn’t appear to be such a parameter.
In summary, if you need to remove a dimension from ROWS or COLUMNS, just move it to FILTER, for eg:
Application.Run(“SAPMoveDimension”, “DS_1”, “0COUNTRY”, “FILTER”)