The simple way to achieve this in Tableau would be
using Measure Names (in Columns) & Measure Values (in Text).
For this to work, one could create distinct Measure calculations
for each of the column on a view, something like this:
// 2018-00-BUDGET Amt
SUM( IF [Report Date - Report Name] = '2018-00-BUDGET' THEN [Amount...] END )
etc. for every value in the [Report Date - Report Name] Dimension.
Then the 'difference' columns would be as simple as the names and signs combined:
// Difference between 2018-00-Budget Amount and 2018-00-Act Amount
ZN( [2018-00-BUDGET Amt] ) - ZN( 2018-00-ACT Amt )
Hope it helps.