I am having a wierd problem with RunAs in D365FO, when i try to call the method with runAs(runAsUser, classnum(TestRunAs), staticMethodStr(TestRunAs, d365User), parm) it fails with:
TestRunAs object does not have method 'd365User'.
But I have no problem calling the method normally using TestRunAs::d365User directly.
Here is some test code I made to show the problem.
class TestRunAs
{
public static void main(Args _args)
{
container test = conNull();
container result = conNull();
result = TestRunAs::d365User(test); // This Works.
TestRunAs::d365UserRunAs("Admin"); // This fails with "TestRunAs object does not have method 'd365User'."
}
public static server container d365User(container _param)
{
container ret = [curUserId()];
return ret;
}
public static server str d365UserRunAs(UserId _userId)
{
RunAsPermission perm;
UserId runasUser = _userId;
container parm = conNull();
container result ;
str userId;
perm = new RunAsPermission(runAsUser);
perm.assert();
result = runAs(runAsUser, classnum(TestRunAs), staticMethodStr(TestRunAs, d365User), parm);
CodeAccessPermission::revertAssert();
userId = conPeek(result, 1);
return userId;
}
}