Welcome to FlyerTalk!
Are you spending any time in JNB before connecting on? If not you should be able to have the agents at CLT check your bags all the way through to CPT and not have to pay extra. If you do something like overnight in JNB and then check back in the next morning then you'll have to pay as you check them in with SA.