This does not work:
UObject* bgo = NewObject<UObject>(this, TEXT("SOPScript"), RF_Transient, SopScriptType.Get());
Neither does this:
UObject* bgo = NewObject<UObject>(SopScriptType);
However, this does work:
#include "Kismet/GameplayStatics.h"
UObject* bgo = UGameplayStatics::SpawnObject(SopScriptType, this);
Which simply calls this:
NewObject<UObject>(Outer, ObjectClass, NAME_None, RF_StrongRefOnFrame);
I hope this helps.