Did you read the parameter I_CALLBACK_PROGRAM documentation
Note: Never pass SY-REPID directly in the interface. If the desired program name is in SY-REPID, it must be assigned to an intermediate variable which is then passed to the interface.
Here you execute the perform of user_command in the main program of ALV FM and not in your program...
Regards,
Raymond