现状:标准的CALL Transaction关键字虽然可以通过CALL TRANSACTION WITH AUTHORITY-CHECK这样的写法实现权限检查,但当没有权限的时候程序是直接DUMP的,不友好。虽然可以通过外面加TRY CATCH,LOOP自定义内表等方式做权限检查,但增加了工作量,代码不优雅。关于调用事务代码和其他程序的总结参见文章call transaction的几种方式。
需求:想使用类似CALL Transaction 调用事务代码的方式完成相同的操作,自动进行权限检查,同时支持新开一个窗口、而不是直接从当前屏幕跳转。
方案:
If you have class CL_RECA_GUI_SERVICES available on your system you can call its static method CALL_TRANSACTION.
示例:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
SET PARAMETER ID 'ACC' FIELD LS_DATA-RACCT. SET PARAMETER ID 'BUK' FIELD LS_DATA-RBUKRS. SET PARAMETER ID 'GJR' FIELD LS_DATA-GJAHR. * call transaction 'FAGLB03' and skip first screen. * call transaction的方式还要自己做权限检查,下面的方法挺好的.自带权限检查、还能在新窗口开启事务码. CALL METHOD CL_RECA_GUI_SERVICES=>CALL_TRANSACTION EXPORTING ID_TCODE = 'FAGLB03' * if_leave_current = ABAP_FALSE IF_SKIP_FIRST_SCREEN = 'X' IF_NEW_EXTERNAL_MODE = 'X' EXCEPTIONS ERROR = 1 OTHERS = 2. IF SY-SUBRC <> 0. CALL TRANSACTION 'FAGLB03' AND SKIP FIRST SCREEN. ENDIF. |
本文作者: GavinDong
版权属于: GavinDong博客
文章链接: https://gavindong.com/4425.html
如果使用过程中遇到问题,可 **点击此处** 交流沟通。
版权所有,转载时必须以链接形式注明作者和原始出处及本声明。