Base de dados de conhecimento KB0169

Ao editar relatórios do SAP BEx no Excel, recebo uma mensagem de erro do think-cell que contém '_ASSERT ::IsWindow(hWnd)'

Ao editar relatórios do SAP BEx 7.X (SAP NetWeaver BUSINESS EXPLORER ANALYZER) no Excel, você recebe uma mensagem de erro do think-cell. O texto da mensagem refere-se ao erro '_ASSERT ::IsWindow(hWnd)'.

Motivo

O suplemento BExAddin.dll do BEx Excel usa uma API de janelas denominada SetWindowLongA para usar hook/unhook de janelas no Excel. Um hook é um mecanismo através do qual uma função pode interceptar eventos antes que eles atinjam um aplicativo. A função pode atuar em eventos e, em alguns casos, modificá-los ou descartá-los. A técnica usada para hook através do SAP BEx pode causar erros quando vários suplementos estão presentes ao mesmo tempo.

Um problema comum ocorre quando os suplementos tentam usar unhook neles próprios depois de outro suplemento ter substituído o hook da janela que eles definiram. Infelizmente, lembrar simplesmente o proc de janela anterior antes de usar o hook e defini-lo novamente ao usar o unhook nem sempre é suficiente. Existe uma descrição detalhada desse problema no seguinte artigo:
http://blogs.msdn.com/oldnewthing/archive/2003/11/11/55653.aspx

O problema pode ser evitado alternando-se para as funções SetWindowSubclass/RemoveWindowSubclass/DefSubclassProc em vez de SetWindowLong/CallWindowProc, para que seja eficiente contra essa situação:
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

Solução

O suporte para o SAP (SAP Installed Base Maintenance & Support - BW) informou-nos que alteraram o método de usar o hook/unhook no Excel no produto sucessor 'SAP BusinessObjects Analysis, edition for Microsoft Office'. O BEx Analyzer está somente em manutenção e já não é possível realizar alterações arquitetônicas básicas.

O suporte para SAP sugere migrar para o “SAP BusinessObjects Analysis, edição para o Microsoft Office” para evitar esse problema.

Além disso, o suporte para o SAP sugere uma solução alternativa para desativar a funcionalidade de arrastar e soltar no BEx Analyzer. Para obter detalhes sobre este procedimento, entre em contato com o suporte para o SAP.

Se você contatar o suporte para o SAP com dúvidas sobre este problema, faça referência a "SAP OSS note 1019869 / 2011".