How to find update function module which is called dynamically
In this SCN discussion,
Find a Function Module in Update Task dynamically called,
a question is asked. For example, if the update function module CRM_PRODUCT_I_UPDATE_DU is called statically as:
CALL FUNCTION ‘CRM_PRODUCT_I_UPDATE_DU’ … Then we can easily find all calling places where this function module is called.
On the other hand, if the function module name is determined dynamicall in the runtime, for example: CALL FUNCTION lv_func_name, the where used list will not work.
In this case, even though I have already set the breakpoint in update function module itself and the breakpoint is triggered in the runtime, I still could not figure out which programs calls this update function module.
A quick solution is: set a breakpoint at a place where you can ensure that the update function module is not called yet. And create a new Breakpoint by clicking this button:
Specify the following command:
Once set, press F8, and the debugger will automatically stop at all the code place where CALL FUNCTION XXX IN UPDATE TASK exist. By this approach, I have efficiently found the code place where CRM_PRODUCT_I_UPDATE_DU is called.
There is another good post How to find out who calls a function module in update task in CRM written by Corrine Guan which contains another useful tip to achieve the same.
This is something new to me. I mean the way we can set break-point at a generic statement like “CALL FUNCTION IN UPDATE TASK” is very interesting. I just realized we can also set break-point on other generic statements like CALL METHOD or CALL TRANSFORMATION.
Thanks a lot for this wonderful piece of information.