通常,我会尝试使我的问题可重现。在这种情况下,我找不到办法。请随时指导我如何获取更多详细信息,我会附上。
在某些情况下,我们以编程方式使用 ABAP 调用堆栈来获取更多信息。IE:记录用户调用,当没有其他适当的方法来检索它们时,作为最后的手段从堆栈中的较低调用访问变量。
我们遇到了一个案例,其中奇怪的字符作为前缀添加到HR
模块“MP9XXX00”的中央程序的调用堆栈中(Module-Pool
为客户特定生成的程序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
. 让我们这么想的是,它发生QA
在生产中而不是生产中。