如何获取ABAP中的程序调用堆栈跟踪?

vla*_*ean 3 sap events abap

我的程序可以通过两种方式启动:

从我的一个本地类START OF SELECTION调用MAIN函数的事件。ZAVGTTA4调用相同方法的事务。

在处PAI,对于BACK事件,在调用时LEAVE TO SCREEN '0'.,我的程序根据其启动方式以两种方式运行。我想回到选择屏幕(1000)。

我考虑过要查询堆栈,我肯定会在其中找到程序的调用方式。我可以看到堆栈跟踪不同,但是我不知道如何从程序访问堆栈。我听说过RTTI,我认为它可以为我提供帮助。

knu*_*nut 5

你可以试试看SYSTEM_CALLSTACK

DATA:
   abap_callstack_line TYPE abap_callstack_line,
   callstack TYPE  abap_callstack.


  CALL FUNCTION 'SYSTEM_CALLSTACK'
    EXPORTING
      max_level          = 4
    IMPORTING
      callstack          = callstack.
Run Code Online (Sandbox Code Playgroud)

但是在您的情况下,我希望使用其他参数,并且调用位置可以填充该条目。我不会调用参数,called_by而是类似behaviour或的参数mode