How to debug CRM WebUI using Conditional Breakpoints?
SOLUTION
Activate Conditional Breakpoints
In order to use conditional breakpoints you have to:
1) First, activate the checkpoint group CRMUIF_CONDITIONAL_BREAKPOINTS in the t-code SAAB
2) Secondly start the CRM WebUI using transaction CRM_UI_DBG (CRM 7.0), WUI_DBG (CRM 7.0 EHP1 and further) or t-code START_BSP with
- 'BSP Application': CRM_UI_START (CRM 7.0 and later), CRM_UI_FRAME (CRM 2007)
- Flag for 'External Debugging On'
3) At last login to CRM WebUI and then open the conditional breakpoint popup by using F2 + ALT
Use Conditional Breakpoints
First, open the conditional breakpoint popup using hot-key Alt-F2
'In:' It selects the software layer where the user wants to set a breakpoint
- Business Object Layer is the factor responsible for the processing of Business Objects: To investigate while entities of a given type are added, searched or removed from a BOL entity collection when entities are deleted or text messages are created. Use the event 'Delete Business Object' in order to find out why you got the message which said that the program was trying to access an entity which has already been deleted.
- BOL Entity Manager (central buffer for Business Objects to speed up BOL operations): 'Remove Entity' help user to find out why the BOL entity disappears in the application unexpectedly, or detect the unassigned entities which have lost the connection to their parent entity.
- Tag Library for Configurable and Thin HTML: It helps the user to find out how UI elements are created in configurable views or were a value help is coming from.
- UI Framework: In order to investigate the MVC processing, the processing of inbound plugs or delta handling (sorting of events = sequence during runtime).
- Design Layer (definition of field labels and field visibility): In order to find out how the label and visibility of a field are determined in the design layer.
- Common Application Features in the CRM UI Framework: In order to investigate how data loss handling works if a custom enhancement is loaded or cross component navigation.
At event: It select an event for the software layer
When, Is: It defines the 'Break condition' in order to ensure that the conditional breakpoint depending on your investigation purposes, also to make sure that it only stops when needed.
An Example
Say If the user to use conditional breakpoints in order to debug searching and displaying of accounts using business role SALESPRO:
User need want to stop when
- When the event for searching is triggered (Breakpoint 2) and
- When the message on how many search results get added (Text message)
- When the attribute value = 7000043636 (=number of the example business partner) is read from the context node (Breakpoint 1) and
Then we have to search for an account with Name 1 is 'Test Organization':
Therefore the debugger stops three times
1) First when the search event is triggered:
2) Second when the message is added to the message container
3) And third when the attributes are added to context node