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 é 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".