When constructing “look at” you pass in a “forward” and an “up” vector.
Use the “up” vector of the character-walking-on-wall, and the forward vector as the vector from the character to the look target.
What you get out will be the (world space) look at direction, from the point of view of the wall-climbing character.
If you want to apply this to a head bone, you have to make sure you apply it in word space, OR pre-apply the inverse of the world-space rotation of the neck bone it’s parented to before applying it.
Btw, the math for “find lookat orientation” isn’t particularly crazy. If you don’t want to use the built-ins, you can do it yourself pretty easily.
Given two points, “eye location” and “target location,” and one vector, “up direction of looker,” you do this:
Vector Forward = Normalize(TargetLocation - EyeLocation);
Vector Right = Normalize(Cross(UpVector, Forward));
Vector RotUp = Cross(Forward, Right);
Matrix Rotation = Matrix(Forward, Right, RotUp);
(This assumes X-forward, Y-right, Z-up, which is the general left-handed Unreal coordinate system, and you’d need to translate the actual functions to whatever C++ or Blueprint you’re using.)