The downside is that you are hiding the code.
The upside is that you are hiding the code.
The downside usually outweights the upside.
Usually this particular approach is pretty much useless and unless the call looks more like
someModule->someStorage->functionList[storage.getFunctionName].pointer->SomeFunction(...equally obscure argument...);
there is no point doing so. If only the argument is an obscure call, shorthand only the argument. If it's only the function, shorthand only the function. If both, you might be better off with
SOME_FUNCTION(SOME_ARGUMENT);
If the function is never called with anything else, you might consider removing it from argument list and obtaining inside the function body. And if the pair repeats very often, in small variations, you might consider wrapper functions.
After you make several bugs in the code of a macro, you will learn it's pain to debug them and you won't use them frivolously.