Hi Tiago,
Something has to be different with regards to the data coming from SAP PO vs. soapUI. A 400 bad request means the SF server is rejecting the data when it comes in so you would need to trace as Eng Swee is suggesting or find some way to trap the payload information so you can validate it against a known good request in soapUI.
Regards,
Ryan Crosby