问题描述
通常,我会尽量使我的问题具有可重复性。 在这种情况下,我找不到办法。请随时指导我如何获取更多详细信息,我会附上。
在某些情况下,我们以编程方式使用 ABAP 调用堆栈来获取其他信息。 I.E:记录用户调用,当没有其他适当的方法来检索它们时,作为最后手段访问来自堆栈中较低调用的变量。
我们遇到过这样一种情况,在 HR
模块 'MP9XXX00'(Module-Pool
为客户特定的 {{1} }} PA
)。奇怪的字符是 infotypes
。
调用程序的完整字符串是 /A\
。
用于获取整个调用栈的代码:
/A\MP9XXX00
lt_call = cl_abap_get_call_stack=>format_call_stack_with_struct( cl_abap_get_call_stack=>get_call_stack( ) ).
中没有这样的程序 /A\MP9XXX00
。
此外,当尝试从调用程序接收变量时,如下所示:
SE80
,它导致转储。当我们查看 ASSIGN |( { ls_call-prog })PSYST| it failes
时,堆栈不包含任何 ST22
,只有 /A\MP9XXX00
(MP9XXX00
包含 ls_call-prog
)。
如前所述,我们没有设法重现和调试它。刚刚看到结果。
这些字符是从哪里来的?
我们的想法
- 我们认为这可能与我们的客户命名空间以
/A\MP9XXX00
开头的事实有关,但是,为什么会显示它?为什么只有几次?为什么只有前两个字符?另一个/A
来自哪里? - 我们认为前缀
\
可能是临时添加到(那些)程序名称中的,比如在导入相关传输请求时。而这可能/A\
是为A
准备的。让我们这么认为的原因是它在Active/Activating
中发生的比在生产中发生的更多。
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)