通过CL_ABAP_SYST获取交易代码

2020-09-07 15:21发布

点击此处---> 群内免费提供SAP练习系统(在群公告中)加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)大家好, 使用类CL_ABAP...

         点击此处--->   EasySAP.com群内免费提供SAP练习系统(在群公告中)

加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)


大家好,

使用类CL_ABAP_SYST及其方法GET_TRANSACTION_CODE时遇到问题。 根据方法文档,它应该返回用户显式调用的最后一个事务。 因此,如果我调用我的ZYX事务,并从那里通过语句CALL TRANSACTION我的ZXY事务,则在两种情况下该方法都应返回第一个事务,即ZYX,而SY-TCODE在CALL TRANSACTION之前的值为ZYX,在之后为ZXY。

但是它不起作用! 无论是显式调用还是隐式调用(即通过CALL TRANSACTION或LEAVE TO TRANSACTION),该方法始终返回最后一笔交易的值。 甚至方法文档中的示例也不起作用。 我可以观察到的唯一区别是带有参数的事务。 在这种情况下,该方法返回被调用的事务,而SY-TCODE等于原始事务(最佳示例:在SE80中直接执行报表-该方法返回SE80,但是SY-TCODE等于SEU_INT,因为SE80是一个 具有SEU_INT参数的交易)。

所以问题是:我是否缺少某些东西,做错了什么? 我在以下系统中尝试过:7.00 SP28、7.31 SP09和7.53。

这是代码:

 WRITE:/sy-tcode。
 写:/cl_abap_syst => get_transaction_code()。

 如果sy-tcode ='ZXY'。
   返回。
 万一。

 呼叫交易" ZXY"。

任何线索或建议,我将不胜感激。

最好的问候

Michał

5条回答
太Q了
2020-09-07 15:38

CL_DYNPRO => GET_CURRENT_TRANSACTION可被视为已释放,因为SAP注释中已提及 617930-新声明保留当前交易

1。 您只是不太了解文档/文档不清楚。 雷蒙德很好地解释了它是如何工作的。 您还可以阅读注释617930(如果您接受CL_ABAP_SYST => GET_TRANSACTION_CODE与CL_DYNPRO => GET_CURRENT_TRANSACTION具有相同的作用)。

2。 正如我所说:"要获得用户运行的交易代码,我认为必须对SAP Easy Access进行增强或修改。或者在某处进行C调用..."

一周热门 更多>