Very broad question. I have listed below my preferences in descending order, mostly based on performance effectiveness and error handling.
1.IDOC
2.BAPI
3.Direct input
4.Recording
5.BDC with custom FM/BAPI/IDOC
Each method has its pros & cons. Choice shall be made based on business requirements, object complexity, timeframe, data volume etc.