For SSIS to use a stored proc as a datasource, the stored proc has to result in only one possible resultset structure.
You can let SSIS see the meta data for a complex stored proc by starting with something like this:
IF 1=2
SELECT
1 AS MyIntColumn
, 1.11 AS MyMoneyColumn
, 'test' AS MyVarcharColumn
ELSE
BEGIN
...
The thing is to put in a SELECT statement in the 1=2 block that would return the Columns and the DataTypes that your stored procedure will ultimately return. That way SSIS can look at that first statement and know what columns and datatypes to expect from the stored proc. That's all it needs. It doesn't need "real" data in that first select. It can be all dummy values that don't even come from a table.