A year later, but I'm having the same issue. I keep trying to directly translate word-for-word, and that doesn't work. "Har på sig" literally translates to "has on [he/she/it]self." And then you have the word "bär", which means "wearing/bearing/carrying" etc.
It's confusing stuff, yo.
"Has on" is a perfectly natural use in English, though not "has on him/herself".
"She has on a red coat" is just as valid as "She's wearing a red coat". I just agree that it would rarely ever be said as "She has on herself a red coat." Though "She has on her red coat" would again be fine.