A few points:
The “if (HasAuthority())” checks in the _Implementation function are not needed. That will only ever execute on the authority, unless you are calling MyFunction_Implementation directly (which you shouldn’t be).
You have a race condition in BeginPlay. Using IsLocallyControlled() there depends on the Controller and it’s properties replicating before the pawn calls BeginPlay - which you can’t garauntee will occur 100% of the time. Anything that is dependant on the state/existence of another actor needs to be driven via OnRep callbacks. Handling this in AController::SetPawn() would be the best place. Better yet, I would just have the server spawn these things itself - I’m not sure why the client would specifically request it in this case.
The last point is that the OnRep will only fire if the server actually replicates something, and by default only if the received value is different from the local one. If you are setting ‘Test’ to the same value, or if the client has manipulated it locally, the OnRep will not fire.