一些事物代码在内部通过RFC提交一个程序/函数到后台执行,在此场景下,如果想debug 那一段程序/函数,一般通用的debug方式往往力不从心,因为点击F5键的话,debugger不会进入,并直接跳到下一行。以下图为例,可执行MRP的函数 MRP_KD_AUFTRAG_RFC 在事务代码VA01通过RFC提交到后台执行,为了查明此函数如何执行MRP, 点击F5键希望进入函数里面的源代码,但是debugger直接跳到函数的下一行代码 endloop,即,无法进入函数MRP_KD_AUFTRAG_RFC


Program_background.JPG


这种情况下,可采取以下方法. (RFC 一般可通过两种方式提交,一种是 queue RFC, 被提交的程序/函数通过事物代码 SMQ1和SMQ2顺序执行并且可以在那些事物代码里debug’. 另外一种是 transactional RFC,就是我们在此要讨论的)。

刚进入debugger后,到下图显示的菜单 (这是新一代debugger)。

Debugger_1.JPG

在弹出的对话框里选择下图显示的选项后,点击F8键一直执行到结束。


Debugger_2.JPG

(在前一代debugger, 到菜单’Settings’ > ‘Display and change all’, 选择 ‘In background task: Do not process’去触发相同功能。 菜单项 ‘Display and change all’ doesn’t 只有当 debugger 进入到屏幕的PBO Module子程序后才出现)。

现在,因为选择了菜单里的上述项目,即使事物代码已经执行完,函数MRP_KD_AUFTRAG_RFC并没有被执行,而是如下图暂挂到事物代码SM58等待用户手动执行并可以在那里debug。

SM58_1.JPG

用光标选择相关行后,到下图显示的菜单,点击‘Debug LUW’, 就可以debug函数MRP_KD_AUFTRAG_RFC

SM58_2.JPG

To report this post you need to login first.

Be the first to leave a comment

You must be Logged on to comment or reply to a post.

Leave a Reply