Inverse_Transform and multistep data - how to scale and when
On the original code:
sc = MinMaxScaler()
test_set_tomorrow = dataset_train.iloc[-time_step:,:].values

Hm, you missed the shuffling, but it's OK -- maybe your data was shuffled earlier.

Original code:
scaled_test_set = sc.fit_transform(test_set_tomorrow)

The model should be trained on the train set not the test set - otherwise, data leakage occurs. It should be either:
sc.fit(dataset_train.iloc[:time_step])
scaled_test_set = sc.transform(test_set_tomorrow)

or
scaled_train_set = sc.fit_transform(train_set_tomorrow)


Original code:
scaled_test_set = test_set_tomorrow

You just erased all the pre-processing. If you check the data, scaled_test_set is exactly dataset_train.iloc[-time_step:, :]

Original code:
X_test = []
for i in range (0,len(test_set_tomorrow)):
  X_test.append(scaled_test_set[i,:])
X_test = np.array(X_test)
X_test = np.reshape(X_test,(1,time_step,-1))

can be done quicker. Note that the MinMaxScaler returns the numpy array already.
X_test = np.expand_dims(scaled_test_set, axis=0)


Finally, you apply the inverse transform to the labels while training on the features. For example, consider the model where given height, we predict weight. You create a map that normalizes inches (or centimeters). In case of centimeters, say the smallest height is 150, but it is not true that the smallest weight is 150 kgs or pounds. Different scalers should be used.