Ryan Rickelton hit a maiden one-day international century to lead South Africa to a comfortable 107-run victory over Afghanistan in their Champions Trophy Group B opener in Karachi.