Knowledge base KB0169

When editing SAP BEx reports in Excel, I receive a think-cell error message containing '_ASSERT ::IsWindow(hWnd)'

When editing SAP BEx 7.X (SAP NetWeaver BUSINESS EXPLORER ANALYZER) reports in Excel, you receive a think-cell error message. The message text refers to the error, '_ASSERT ::IsWindow(hWnd)'.

Cause

The BEx Excel add-in BExAddin.dll uses a windows API called SetWindowLongA to hook/unhook windows in Excel. A hook is a mechanism by which a function can intercept events before they reach an application. The function can act on events and, in some cases, modify or discard them. The technique used for hooking by SAP BEx can cause errors when several add-ins are present at the same time.

One common problem is when add-ins attempt to unhook themselves after another add-in has overwritten the window hook that they set. Unfortunately simply remembering the old window proc before hooking and setting it back when unhooking isn't always sufficient. There is a detailed description of this problem in the following article:
http://blogs.msdn.com/oldnewthing/archive/2003/11/11/55653.aspx

The issue can be avoided by switching to the SetWindowSubclass/RemoveWindowSubclass/DefSubclassProc functions rather than SetWindowLong/CallWindowProc to be robust against this situation:
http://msdn.microsoft.com/en-us/library/windows/desktop/bb762102
http://msdn.microsoft.com/en-us/library/windows/desktop/bb762094
http://msdn.microsoft.com/en-us/library/windows/desktop/bb776403

Solution

The SAP support (SAP Installed Base Maintenance & Support - BW) informed us that they have changed the method of hooking/unhooking Excel in the successor product 'SAP BusinessObjects Analysis, edition for Microsoft Office'. BEx Analyzer is only in maintenance and basic architectural changes cannot be made anymore.

The SAP support suggests to migrate to "SAP BusinessObjects Analysis, edition for Microsoft Office" to avoid this problem.

Moreover, the SAP support suggests as a workaround to disable the drag and drop functionality in BEx Analyzer. On details how to do this please contact the SAP support.

If you contact SAP support with inquiries about this issue, refer to "SAP OSS note 1019869 / 2011".