Is it just the case of not being able to specifically work out how to pick up an object, or is it more to do with inventory management? If it’s just picking up the object I usually handle all interaction between classes like this with interfaces.
So I would create a base class that you want to be interacted with, in this case. picked up. and assign a custom blueprint interface to it that will execute your code when called. For instance if you create a blueprint interface and inside you create an event called “Pickup” you can then call that message from within any blueprint by doing, for example a trace in front of your character, and any actors that it hits, call the pickup message on them and the interface will fire if it is hit by the trace. If you then create a bunch of child blueprints off this base class they will all take advantage of this base code and you can add individual behaviour to each child if so desired.
For more information on this method there’s an old live stream on this stuff, it’s long but has a lot of information in it that should still be relevant.
Hopefully this is what you were after, otherwise I've completely misunderstood the question and I apologise.