Knowledge-Base-Artikel (KB0169)

Beim Bearbeiten von SAP BEx-Berichten in Excel erhalte ich eine Fehlermeldung von think-cell mit dem Inhalt ‚_ASSERT ::IsWindow(hWnd)‘

Beim Bearbeiten von SAP BEx 7.x-Berichten (SAP NetWeaver BUSINESS EXPLORER ANALYZER) in Excel erhalten Sie eine Fehlermeldung von think-cell. Im Meldungstext wird auf den Fehler ‚_ASSERT ::IsWindow(hWnd)‘ verwiesen.

Ursache

Das BEx-Excel-Add-In BExAddin.dll verwendet eine Windows-API mit der Bezeichnung SetWindowLongA, um sich mittels eines Hooks in Excel-Fenster einzuklinken und aus diesen auszuklinken. Ein Hook ist ein Mechanismus, mithilfe dessen eine Funktion Ereignisse abfangen kann, bevor diese eine Anwendung erreichen. Die Funktion kann die Ereignisse verarbeiten und sie in einigen Fällen ändern oder verwerfen. Die Technik, die SAP BEx zum Einklinken verwendet, kann Fehler verursachen, wenn mehrere Add-Ins gleichzeitig geladen sind.

Ein häufig auftretendes Problem besteht darin, dass Add-Ins versuchen, sich auszuklinken, nachdem der von ihnen festgelegte Hook durch ein anderes Add-In überschrieben wurde. Leider ist es nicht in allen Fällen ausreichend, vor dem Einklinken einfach die alte Window Procedure zu speichern und diese beim Ausklinken wiederherzustellen. Eine ausführliche Beschreibung dieses Problems finden Sie in folgendem Artikel:
http://blogs.msdn.com/oldnewthing/archive/2003/11/11/55653.aspx

Das Problem kann durch den Wechsel von SetWindowLong/CallWindowProc zu den Funktionen SetWindowSubclass/RemoveWindowSubclass/DefSubclassProc vermieden werden, die für derartige Situationen unanfällig sind:
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

Lösung

Der SAP Support (SAP Installed Base Maintenance and Support – BW) hat uns darüber informiert, dass die Methode zum Einklinken in und zum Ausklinken aus Excel im Nachfolgeprodukt „SAP BusinessObjects Analysis, Edition für Microsoft Office“ geändert wurde. BEx Analyzer wird nur noch gewartet, sodass keine keine grundlegenden Änderungen an der Architektur mehr durchgeführt werden können.

Der SAP-Support empfiehlt, auf „SAP BusinessObjects Analysis, Edition für Microsoft Office“ umzusteigen, um dieses Problem zu vermeiden.

Zusätzlich empfiehlt der SAP Support, als Workaround die Drag-and-Drop-Funktion von BEx Analyzer zu deaktivieren. Wenden Sie sich an den SAP Support, um ausführliche Anweisungen hierzu zu erhalten.

Wenn Sie sich zum Beheben dieses Problems an den SAP-Support wenden, verweisen Sie bitte auf „SAP OSS note 1019869 / 2011“.