I think I doesn't explain very well.
In my situation, I needed to update a blanket agreement by DI API, and I was not able because BPName in OATT was different from CardName in OCRD, and I received a similar error. In that situation I needed to update from UI because the field BPName in OOAT is read-only.
I thought your problem was similar, but when you as pointed your item code and name are correct. I doesn't have any other idea.
Good luck.
Regards,
Diego