The system has already posted the shipped not invoiced position which can affect the ledgers, therefore the system wants you to have a shipped quantity of zero, so do what it wants, unship the order, reset the invoice details then reship it.
You have already shuipped it and created all of the entries to teh invoice customer as specified, you have to unship it, it is only a document step, you do not actually have to request the stock back. You made an error, you need to correct it, so unship it to correct then re-ship with the correct information.
Your alternative is to invoice the order to the wrong customer, load a credit memo against this customer, process teh stock back in, load a new sales order with the correct details and then ship and invoice it. The choice is yours.
I might be mistaked, but I think that if you create the invoice from Financial Management → Receivables → Invoices → Functions → Get Shpt. Lines you should be able to change the Bill to Customer.
What we do at work is issue an internal Credit memo. Put the items back in stock and create a new Sales Order with proper Bill-to → Ship to- >Invoice to…
The Credit memo is never mailed and the Customer is never aware of it.