【问题标题】:Get calling transaction name in ABAP program在ABAP程序中获取调用事务名称
【发布时间】:2018-08-22 07:36:06
【问题描述】:

我有两个事务调用同一个程序/报告。我想根据用于在其中运行的 t 代码来分支程序的行为。如何在 ABAP 代码中获取原始交易的名称?或者,我需要使用不同的方法吗?

【问题讨论】:

  • 为什么要根据调用事务来区分报表的行为?这相当于一个函数根据调用者返回不同的值 - 这是封装的中断。如果这两个事务需要与报告不同的行为,为什么不向它传递一个控制它的参数呢?更重要的是,当您有类和功能模块可供使用时,为什么还要调用 report

标签: abap


【解决方案1】:

你试过了吗? sy-tcode 总是显示前台事务代码,对你的后台程序不感兴趣。

IF sy-tcode = 'A'. 
    ... do your stuff
ELSEIF sy-tcode = 'B'.
    ... do your stuff
ENDIF.

【讨论】:

  • 太棒了!正是我需要的。我用谷歌找不到它。想知道为什么它不在这里:wiki.scn.sap.com/wiki/display/ABAP/ABAP+system+fields
  • 已将其添加到 Wiki。
  • @jcjr 它只是一个由社区维护的 wiki,而不是 SAP - 更喜欢查看 SY fields official documentation - 而不是 SY-TCODE,您也可以使用 CL_ABAP_SYST=>GET_TRANSACTION_CODE( )(请注意,它有两个很小的不同的行为,一种用于变体交易,另一种用于以编程方式更改 SY-TCODE)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-08-31
相关资源
最近更新 更多