BlueprintCallable function can't have return value?

The return value will be passed through the output pin, so BlueprintCallable functions can have return values. You very likely made another mistake, for example didn’t set USTRUCT(Blueprintable) to your own struct.