If I have the address of the solidity contract, can I from that address determine the source code and the ABI?
I mean by this, is there a function to call in etherscan or something like that?
Yes, both are documented here: https://etherscan.io/apis#contracts.
In short, to get the ABI:
https://api.etherscan.io/api?module=contract&action=getabi&address=0xBB9bc244D798123fDe783fCc1C72d3Bb8C189413&apikey=YourApiKeyToken and to get the source code:
https://api.etherscan.io/api?module=contract&action=getsourcecode&address=0xBB9bc244D798123fDe783fCc1C72d3Bb8C189413&apikey=YourApiKeyToken solc and get the abi methods array