The CRM framework is using a mechanism to optimize frontend performance which is called automatic delta handling (ADH).
There are certain situations that can not be handled in ADH. You can switch off a view for ADH in that case. Or you can try to change the views content to be ADH compatible. This page gives you information how to analyze if your view has issues related to delta handling and what you can do to make it compatible.
In few words, how ADH works?
When the page is being prepared for the rendering, ADH detects which areas (e.g. views) of the page have changed. Only such changed areas are then redrawn in the browser.
How can I see if my view was loaded with ADH
Use an http viewer, such as HttpWatch? for IE, to see the sent and received http headers. If the roundtrip
- uses POST method, and
- has a sent header x-requested-with equal to XMLHttpRequest, and
- has a received header sap-ajax-targets equal to a list of changed areas (e.g. C1_W1_V2_C1_W1_V2_V3_$subHeader,C1_W1_V2_C1_W1_V2_V3_$workCenterContent,), and
- doesn't have a received header sap-ajax_http_redirect equal to X.
then the page is loaded using ADH.
Remark. There could be a situation when the roundtrip uses POST method and has a sent header x-requested-with equal to XMLHttpRequest, but no received header sap-ajax-targets. This correspond to one of the following cases:
- ADH is active, but it didn't detect any change to the page, so no list of changed area is received;
- Nothing can be said about the status of ADH because the roundtrip is the result of custom Ajax request generated by an individual view on the page.
How can I temporarily switch off ADH to see if the problem happens without ADH
You can set the following user parameter with transaction SU3:
How to switch off ADH on user basis You can - TCode: SU3 - Select "Parameters" TAB - Add the following user parameter "CRM_TAJAX_DH_MODE" and set it to "OFF" - Save
Make sure you close the browser and open a new one after the change.
How can I permanently switch off my view for ADH
Once you know that your view is not compatible you can enter it to the "switch off" table and ship that entry (cross client customizing. Requires workbench request)
- TCode: SM31
- Enter "BSPWDV_ADH_DSBL" in Table/View input box
- Click Maintain
- Create New Entry
- Enter the component name (as in BSP_WD_CMPWB) in field APPLICATION
- Enter the view name without any extension (as in BSP_WD_CMPWB) in field PAGE
How can I permanently switch off ADH for my Business Role
- Find the technical profile for the business role.
- TCode "CRMC_UI_TPROFILE".
- Select technical profile.
- Select "Disable Automatic Delta Handling" check box.
What releases supports ADH
ADH is supported with CRMUIF 5.2 SP00. Which is used for SAP CRM 2006s/2 SP00.
What can not be handled by ADH
This section lists the situations not supported by the ADH. The views that are in a not-supported situation should have ADH turn off, if a workaround is not possible or not desirable.
Use of document.write() function inside a view
Unified rendering popups
Any view using THTMLB_SUPPORT_UR tag cannot rely on the features defined in UR library /sap/public/bc/ur/Design2002/js/popup*.js files, such as non CRM UI pop-up windows.
The external js libraries of applications are loaded only once, at the first time. This means that the application could not assume that after a roundtrip the state of js inside those libraries is initial.
Use of onLoad attribute
then the function viewSpecificJSFunction() will be called at each roundtrip, even if the view was not modified (so not reloaded) during the roundtrip.
If you call thtmlbRegisterOnLoad more than once for the same function, make sure to call thtmlbUnregisterOnLoad in the same roundtrip that thtmlbRegisterOnLoad, unless an additional string parameter is used - see the next paragraph below.
In CRMUIF 2007 SP02 (see Note 1110203) it is possible to unregister a function in a later roundtrip, not necessarily in the one where the registration happened. For that, the registration and unregistering must be done using an additional string parameter, e.g.
DOM changes outside Delta block
In ADH-enabled mode, the DOM is not entirely rebuilt after each round trip. If a view does some changes to DOM such as e.g. document.body.appendChild(newNode) then it should take into account that its changes could be still there after a roundtrip.
ADH only searches for tags and the content of them. Example
should be done as
There have been reported incidents where the "Sophos" antivirus was causing ADH some issues via its "Browser Helper Object" (BHO).
When Timeout Error scenarios are expected, i.e. for those views expecting long RoundTrips