zoukankan      html  css  js  c++  java
  • 如何获取ABAP程序执行的调用堆栈 [SYSTEM_CALLSTACK]

    介绍一个有趣的函数SYSTEM_CALLSTACK(),这个函数可以得到abap程序执行的堆栈,包括事件(event),form。。。

    例子代码如下:

    REPORT ztest_stack.
    DATA: num1 TYPE i,
          num2 TYPE i,
          sum  TYPE i.
    
    num1 = 2. num2 = 4.
    PERFORM frm_call.
    
    *&---------------------------------------------------------------------*
    *&      Form  frm_call
    *&---------------------------------------------------------------------*
    *       text
    *----------------------------------------------------------------------*
    FORM frm_call.
      sum = num1 + num2.
      PERFORM frm_output.
    ENDFORM.                    "frm_call
    
    *&---------------------------------------------------------------------*
    *&      Form  frm_output
    *&---------------------------------------------------------------------*
    *       text
    *----------------------------------------------------------------------*
    FORM frm_output.
      FIELD-SYMBOLS: <fs> TYPE any.
      DATA: l_cstack_tab  TYPE sys_callst,
            ls_cstack_tab LIKE LINE OF l_cstack_tab.
    
      WRITE: / 'Sum of', num1, 'and', num2, 'is', sum.
      CALL FUNCTION 'SYSTEM_CALLSTACK'
        IMPORTING
          et_callstack = l_cstack_tab. " internal table
    * l_cstack_tab 里就是abap的调用堆栈
      WRITE: sy-uline.
      LOOP AT l_cstack_tab INTO ls_cstack_tab.
    
        WRITE: / sy-tabix, ls_cstack_tab-eventtype,  ls_cstack_tab-eventname.
    
        CLEAR: ls_cstack_tab.
      ENDLOOP.
    
    ENDFORM.                    "frm_output

    执行结果,先触发事件 start-of-selection,然后调用frm_call,最后是frm_output.

    2017-02-25_20-13-29

    以上

  • 相关阅读:
    为什么分库分表使用2的N次方 一个字节用两位16进制
    2018总结:理财(韭菜)、工作、生活
    为什么跨语言开发不是件难事
    nginx 关于client_max_body_size client_body_buffer_size配置
    mac openresty 源码安装 坑
    PIC32MZ tutorial -- Change Notification
    PIC32MZ tutorial -- Key Debounce
    PIC32MZ tutorial -- Timer Interrupt
    PIC32MZ tutorial -- Blinky LED
    PIC32MZ tutorial -- Hello World
  • 原文地址:https://www.cnblogs.com/datie/p/11435767.html
Copyright © 2011-2022 走看看