Yesterday you posted the message number M7022 and wrote in the subject "PL stock in transfer exceeded" and in the content you spoke about "transit" instead of transfer.
Today you leave the message number away and post about "Deficit of PL Stock in transfer"
Do you really think that this is in any case a qualified information?
This message, no matter if M7022 or M7021 is a very sensitive message since it is has a couple variables, each character is important and should not be hidden if you need help, this message should never ever be re-assembled or free translated as it would only be misleading for a solution.
We have 161 discussion on M7022, we have 243 discussions on M7021, and even more with different writing in message number or just using the message text.
You further did not tell how you tried to cancel, what transaction you used, what entries you made.
It seems the most complex error message in SAP, most complex because it is not read thoroughly.
And even SAP market place has 162 for M7022 and 228 notes for M7021.
You totally left the information like material, plant, quantity from the original movement, and the as well from the message. In > 80% you get the message because the information is not matching. But how should anybody be able to help you validating if you hide this information?
Why do you want to cancel the receipt? Why no posting the goods issue? Why did the goods issue fail?
Why do you need to book this directly after one other with a BAPI at all? In that case you could do a one-step movement instead of posting 2 movements individually.
You said " we are not using STO", nice but what do you use? This would be much better information, why do you want the people to guess if you are sitting on information?