2

通常,我会尝试使我的问题可重现。在这种情况下,我找不到办法。请随时指导我如何获取更多详细信息,我会附上。

在某些情况下,我们以编程方式使用 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\MP9XXX00SE80

此外,当尝试从上述调用程序接收变量时,像这样: ASSIGN |( { ls_call-prog })PSYST| it failes,它会导致转储。当我们查看堆栈时,除了(包含)之外ST22什么都不包含。/A\MP9XXX00MP9XXX00ls_call-prog/A\MP9XXX00

如前所述,我们没有设法重现和调试它。刚看到结果。

这些字符从哪里来?

我们想到了什么

  1. 我们认为这可能与我们的客户名称空间以 开头的事实有关/A,但为什么会出现?为什么只有几次?为什么只有前两个字符?另一个\是从哪里来的?
  2. 我们认为前缀/A\可能是临时添加到(那些)程序名称中的,例如在导入相关传输请求时。这可能A是为了Active/Activating. 让我们这么想的是,它发生QA在生产中而不是生产中。
4

0 回答 0