Compartilhar via


Solução de problemas do conector do SAP Business Warehouse

Este artigo fornece situações de problemas (e possíveis soluções) para trabalhar com o conector do SAP BW (Business Warehouse).

Coletar rastreamentos avançados do SAP BW

Observação

A coleta de rastreamento de uma consulta enviada para o servidor do SAP BW requer algumas opções e configurações que só podem ser fornecidas usando o Power BI Desktop. Se você ainda não tiver uma cópia do Power BI Desktop, obtenha uma no Centro de Download da Microsoft. Você pode definir todas as opções e configurações necessárias para rastreamentos avançados usando esta versão gratuita.

Muitas vezes, quando ocorre um erro, pode ser vantajoso coletar um rastreamento da consulta que foi enviada para o servidor do SAP BW e sua resposta. O procedimento a seguir mostra como configurar rastreamentos avançados para problemas que ocorrem usando o conector do SAP BW.

  1. Feche o Power BI Desktop se estiver em execução.

  2. Crie uma variável de ambiente:

    1. Na Painel de Controle do Windows, selecione Sistema>Configurações Avançadas do Sistema.

      Você também pode abrir um Prompt de Comando e inserir sysdm.cpl.

    2. Nas Propriedades do Sistema, selecione a guia Avançado e selecione Variáveis de Ambiente.

    3. Nas Variáveis de Ambiente, em Variáveis do Sistema, selecione Nova.

    4. Em Nova Variável do Sistema, no Nome da variável, insira PBI_EnableSapBwTracing e, em Valor da variável, insira true.

    5. Selecione OK.

    Quando esse rastreamento avançado for ativado, uma pasta adicional chamada SapBw será criada na pasta Rastreamentos. Confira o restante deste procedimento para saber o local da pasta Rastreamentos.

  3. Abra o Power BI Desktop.

  4. Limpe o cache antes de capturar.

    1. No Power BI Desktop, selecione a guia Arquivo.
    2. Selecione Opções e configurações>Opções.
    3. Em configurações Globais, escolha Carregamento de Dados.
    4. Selecione Limpar Cache.
  5. Ainda em Opções e configurações, habilite o rastreamento.

    1. Em configurações Globais, escolha Diagnóstico.
    2. Selecione Habilitar rastreamento.
  6. Enquanto você ainda estiver em Opções e configurações>Global>Diagnóstico, selecione Abrir pasta de rastreamentos/despejo de memória. Verifique se a pasta está limpa antes de capturar novos rastreamentos.

  7. Reproduza o problema.

  8. Depois de concluído, feche Power BI Desktop para que os logs sejam liberados para o disco.

  9. Você poderá ver os rastreamentos recém capturados na pasta SapBw (a pasta Rastreamentos que contém a pasta SapBw é mostrada ao selecionar Abrir pasta de rastreamentos/despejo de memória na página Diagnóstico no Power BI Desktop).

  10. Não se esqueça de desativar esse rastreamento avançado quando terminar, removendo a variável de ambiente ou definindo PBI_EnableSapBwTracing como false.

Coletar rastreamentos avançados do SAP BW com rastreamentos CPIC

Se você estiver investigando problemas de autenticação ou SSO (logon único), use o mesmo procedimento descrito em Coletar rastreamentos avançados do SAP BW, exceto na etapa 2d, e insira as seguintes variáveis e valores adicionais do sistema:

  • CPIC_TRACE – 3
  • CPIC_TRACE_DIR – uma pasta válida, por exemplo: E:\traces\CPIC

O restante do procedimento permanece o mesmo. Você pode ver os rastreamentos CPIC na pasta especificada na variável de ambiente CPIC_TRACE_DIR. Você também pode ver os rastreamentos regulares na pasta SapBw.

Você também precisa desativar esse rastreamento avançado quando terminar, removendo a variável de ambiente ou definindo BI_EnableSapBwTracing como false CPIC_TRACE como 0.

Executar uma instalação limpa do conector SAP .NET

Se for necessário reinstalar o conector SAP .NET:

  1. Remova (desinstale) o Conector SAP .NET.

  2. Depois de remover, verifique se o Conector SAP .NET não está instalado no GAC (Cache de Assembly Global), confirmando se os seguintes caminhos NÃO existem ou NÃO contêm DLLs:

    • GAC de 32 bits:

      C:\Windows\Microsoft.NET\assembly\GAC_32\sapnco\v4.0_3.0.0.42__50436dca5c7f7d23

      C:\Windows\Microsoft.NET\assembly\GAC_32\sapnco_utils\v4.0_3.0.0.42__50436dca5c7f7d23

    • 64 bit GAC:

      C:\Windows\Microsoft.NET\assembly\GAC_64\sapnco\v4.0_3.0.0.42__50436dca5c7f7d23

      C:\Windows\Microsoft.NET\assembly\GAC_64\sapnco_utils\v4.0_3.0.0.42__50436dca5c7f7d23

  3. Verifique se os binários não estão em Arquivos de Programas. Verifique se os seguintes locais NÃO existem ou estão vazios:

    C:\Program Files\SAP\SAP_DotNetConnector3_Net40_x64

    C:\Program Files (x86)\sap\SAP_DotNetConnector3_Net40_x86

  4. Reinstale o conector e lembre-se de selecionar a opção Instalar assemblies no GAC. Recomendamos que você use o mais recente, 3.0.23.

Solucionar problemas de mensagens de erro

Método ErrorCode do SAP BW não encontrado

Method not found: 'Int32 SAP.Middleware.Connector.RfcBaseException.get_ErrorCode()'

Esse erro é gerado quando ocorre um erro no servidor do SAP BW e o conector SAP .NET tenta recuperar informações sobre esse erro. No entanto, esse erro pode estar ocultando o erro real. Esse erro pode acontecer quando:

  • Estiver usando uma versão antiga do conector SAP .NET.

  • Várias versões do conector SAP .NET estiverem instaladas.

  • O conector SAP .NET tiver sido instalado duas vezes, uma no GAC (Cache de Assembly Global) e outra fora do GAC.

Siga as instruções em Executar instalação limpa do conector SAP .NET para reinstalar o conector.

Isso não resolverá o problema, mas fornecerá a mensagem de erro real.

Exceção: o inicializador de tipo para "Microsoft.Mashup.Engine1.Library.SapBusinessWarehouse.
SapBwMicrosoftProviderFactoryService" gerou uma exceção.

Siga as instruções em Executar instalação limpa do conector SAP .NET para reinstalar o conector.

Esse conector requer um ou mais componentes adicionais

Se você receber essa mensagem de erro, use as seguintes etapas de solução de problemas:

  1. Verifique se a versão do conector SAP .NET está instalada no tamanho correto de bits. Se você tiver o Power BI Desktop de 64 bits instalado, verifique se instalou o conector SAP .NET de 64 bits.

  2. Verifique se, durante a instalação do Conector SAP .NET, a opção Instalar assemblies no GAC foi marcada. Para verificar se o GAC está instalado, abra o Windows Explorer e acesse:

          C:\Windows\Microsoft.NET\assembly\GAC_64\sapnco

    Por exemplo, o caminho completo pode ser:

          C:\Windows\Microsoft.NET\assembly\GAC_64\sapnco\v4.0_3.0.0.42__50436dca5c7f7d23\sapnco.dll

Se você instalou a versão de 32 bits do conector SAP .NET, ela seria C:\Windows\Microsoft.NET\assembly\GAC_32\sapnco\v4.0_3.0.0.42__50436dca5c7f7d23\sapnco.dll (e você precisaria de uma versão de 32 bits do Power BI Desktop).

Outra maneira de verificar o GAC é usar a gacutil (uma das opções para desabilitar a assinatura de nome forte). Você precisaria executá-la em um prompt de comando de 64 bits. Você pode verificar o conteúdo do GAC abrindo um prompt de comando, navegando até o caminho gacutil.exe e executando:

      gacutil -l

Por exemplo, na saída, você deverá ver:

      sapnco, Version=3.0.0.42, Culture=neutral, PublicKeyToken=50436dca5c7f7d23, processorArchitecture=AMD64 sapnco_utils, Version=3.0.0.42, Culture=neutral, PublicKeyToken=50436dca5c7f7d23, processorArchitecture=AMD64

"Nenhuma autorização RFC para função ...*

A implementação 2.0 requer acesso às BAPIs a seguir. Para resolver, entre em contato com a equipe do SAP Basis e solicite permissões para essas BAPIs e RFCs para o usuário.

  • Conectividade:

    • RFC_PING
    • RFC_METADATA_GET
  • Execução de MDX:

    • RSR_MDX_CREATE_OBJECT
    • BAPI_MDDATASET_CREATE_OBJECT
    • BAPI_MDDATASET_SELECT_DATA
    • BAPI_MDDATASET_DELETE_OBJECT
    • RSR_MDX_GET_AXIS_INFO
    • RSR_MDX_GET_AXIS_DATA
    • RSR_MDX_GET_CELL_DATA
    • BAPI_MDDATASET_GET_AXIS_INFO
    • BAPI_MDDATASET_GET_AXIS_DATA
    • BAPI_MDDATASET_GET_CELL_DATA
  • Nivelamento de ExecutionMode:

    • RSR_MDX_GET_FLAT_DATA
    • RSR_MDX_GET_FS_DATA
    • BAPI_MDDATASET_GET_FLAT_DATA
    • BAPI_MDDATASET_GET_FS_DATA
  • Fluxo de ExecutionMode:

    • BAPI_MDDATASET_GET_STREAMDATA
    • BAPI_MDDATASET_GET_STREAMINFO
  • BasXml de ExecutionMode:

    • RSR_MDX_BXML_GET_DATA
    • RSR_MDX_BXML_GET_GZIP_DATA
    • RSR_MDX_BXML_GET_INFO
    • RSR_MDX_BXML_SET_BINDING
  • Metadados:

    • BAPI_MDPROVIDER_GET_DIMENSIONS
    • BAPI_MDPROVIDER_GET_CATALOGS
    • BAPI_MDPROVIDER_GET_CUBES
    • BAPI_MDPROVIDER_GET_MEASURES
    • BAPI_MDPROVIDER_GET_HIERARCHYS
    • BAPI_MDPROVIDER_GET_LEVELS
    • BAPI_MDPROVIDER_GET_PROPERTIES
    • BAPI_MDPROVIDER_GET_MEMBERS
    • BAPI_MDPROVIDER_GET_VARIABLES
  • Informações:

    • BAPI_IOBJ_GETDETAIL (necessária para dimensões tipadas (DATS, TIMS))
    • BAPI_USER_GET_DETAIL (usada apenas para a interface de nivelamento)
    • RFC_READ_TABLE (necessária para nomes de catálogo e determinadas chamadas de valores variáveis)
  • Pode ser chamada pelo conector do SAP .NET subjacente:

    • RFC_GET_FUNCTION_INTERFACE
    • FUNCTION_IMPORT_INTERFACE
    • DDIF_FIELDINFO_GET
    • SYSTEM_FINISH_ATTACH_GUI
    • BGRFC_DEST_CONFIRM
    • BGRFC_CHECK_UNIT_STATE_SERVER
    • BGRFC_DEST_SHIP
    • ARFC_DEST_SHIP
    • RFC_FUNCTION_SEARCH
    • RFC_SYSTEM_INFO
    • RFC_SET_REG_SERVER_PROPERTY
    • RFC_DOCU
    • SEO_GET_CLIF_REMOTE
    • SYSTEM_PREPARE_ATTACH_GUI
    • API_CLEAR_TID
    • ARFC_DEST_CONFIRM

Método não encontrado "Int32 SAP.Middleware.Connector.RfcBaseException.get_ErrorCode()

Verifique se o conector SAP .NET está instalado corretamente. Consulte Executar uma instalação limpa do conector SAP .NET.

Esse erro aparece quando a versão instalada no GAC é inferior à versão 3.0.18.0 esperada. A Nota SAP 2417315 discute esse cenário.

Propriedades da cadeia de conexão definidas pelo conector

Quando ambos, Nome do Parceiro SNC e a Biblioteca SNC, são fornecidos, o conector do Servidor de Aplicativos do SAP BW (implementação 2.0) definirá essas propriedades na cadeia de conexão:

  • SNC_MODE – SncModeApply
  • SNC_LIB – com o caminho da biblioteca especificado; se for uma variável de ambiente, ela será expandida neste momento
  • SNC_PARTNERNAME – com o valor fornecido
  • SNC_QOP = RfcConfigParameters.RfcSncQOP.Default

Essas são usadas para conexões do Servidor de Aplicativos do SAP BW e Servidor de Mensagens do SAP BW.

Para ambos os tipos de conexão, o conector define:

  • LANG (Idioma)
  • CLIENT

Para a conexão do Servidor de Aplicativos do SAP BW, o conector define:

  • ASHOST (AppServerHost)
  • SYSNR (SystemNumber)

Para conexões do Servidor de Mensagens do SAP BW, o conector define:

  • MSHOST (MessageServerHost)
  • SYSID (SystemID)
  • GROUP (LogonGroup)

Comando MDX inválido com <internal>

Esse erro vem diretamente do servidor do SAP BW. A implementação 1 do conector, com base no Netweaver RFC, não expôs esses erros ao usuário, retornando, portanto, um conjunto de resultados vazio.

Esse problema é discutido nas seguintes Notas do SAP. O acesso a essas notas requer um S-user. Entre em contato com a equipe do SAP Basis para aplicar as correções pertinentes a esse problema.

Além disso, para outros erros semelhantes, você pode examinar o conteúdo das seguintes notas do SAP e aplicá-las conforme apropriado para seu ambiente:

Limitações e problemas

Alterar nomes de variáveis em um cubo SAP coloca o relatório DirectQuery em um estado corrompido e irrecuperável

Os seguintes sintomas ocorrem:

  • Mensagem de erro – [Expression.Error] The import [XXXX] matches no exports.

  • Nos logs – Message: [Expression.Error] The key didn't match any rows in the table.

  • Rastreamento de Pilha:

    at Microsoft.Mashup.Engine1.Runtime.TableValue.get_Item(Value key)
    at Microsoft.Mashup.Engine1.Library.Cube.CubeParametersModule.Cube.ApplyParameterFunctionValue.GetParameterValue(CubeValue cubeValue, Value parameter)
    at Microsoft.Mashup.Engine1.Library.Cube.CubeParametersModule.Cube.ApplyParameterFunctionValue.TypedInvoke(TableValue cube, Value parameter, Value arguments)
    Detail: [Key = [Id = \"[!V000004]\"], Table = #table({...}, {...})]
    

Uma solução alternativa possível é:

  1. Fazer uma cópia do arquivo PBIX (pois as coisas podem falhar).

  2. Adicionar uma variável de ambiente chamada PBI_AlwaysEnableQueryEditor com um valor verdadeiro. Essa configuração permitirá o acesso ao editor de consultas mesmo no modo DirectQuery.

    Observação

    Essa variável de ambiente não tem suporte, portanto, só deve ser usada conforme descrito aqui.

  3. Clique com o botão direito do mouse na consulta "Cubo" e selecione Editor Avançado.

  4. A consulta deve ter uma linha que começa com "{Cube.ApplyParameter, "[!V000004]" (o parâmetro ausente)". Remova essa linha.

  5. Selecione Concluído.

  6. Feche o Editor do Power Query.

  7. Atualize o visual afetado.

Se a solução alternativa acima não funcionar, a única correção alternativa será recriar o relatório.

Dados numéricos do SAP BW

Observação

As informações a seguir só se aplicam ao usar a Implementação 1.0 do conector do SAP BW ou a Implementação 2.0 do conector do SAP BW com o modo de Nivelamento (quando ExecutionMode=67).

As contas de usuário no SAP BW têm configurações padrão para a formatação dos valores decimais ou de data/hora, quando exibidos para o usuário na GUI do SAP.

As configurações padrão são mantidas no sistema SAP no Perfil do Usuário de uma conta e o usuário pode exibir ou alterar essas configurações na GUI do SAP com o caminho de menu Sistema>Perfil do Usuário>Dados Próprios.

Menu de configurações de notação decimal.

O Power BI Desktop consulta o sistema SAP para saber a notação decimal do usuário conectado e usa essa notação para formatar valores decimais nos dados provenientes do SAP BW.

O SAP BW retorna dados decimais com uma , (vírgula) ou um . (ponto) como separador decimal. Para especificar qual desses SAP BW deve ser usado para o separador decimal, o driver usado pelo Power BI Desktop faz uma chamada para BAPI_USER_GET_DETAIL. Essa chamada retorna uma estrutura chamada DEFAULTS, que tem um campo chamado DCPFM que armazena Notação de Formato Decimal. O campo usa um dos seguintes valores:

  • ' ' (espaço) = Ponto decimal é vírgula: N.NNN,NN
  • 'X' = Ponto decimal é ponto: N,NNN.NN
  • 'Y' = Ponto decimal é N NNN NNN,NN

Os clientes que relataram esse problema descobriram que a chamada para BAPI_USER_GET_DETAIL falhava para um usuário específico, mostrando dados incorretos, com uma mensagem de erro semelhante à seguinte:

   You are not authorized to display users in group TI:
      <item>
         <TYPE>E</TYPE>
         <ID>01</ID>
         <NUMBER>512</NUMBER>
         <MESSAGE>You are not authorized to display users in group TI</MESSAGE>
         <LOG_NO/>
         <LOG_MSG_NO>000000</LOG_MSG_NO>
         <MESSAGE_V1>TI</MESSAGE_V1>
         <MESSAGE_V2/>
         <MESSAGE_V3/>
         <MESSAGE_V4/>
         <PARAMETER/>
         <ROW>0</ROW>
         <FIELD>BNAME</FIELD>
         <SYSTEM>CLNTPW1400</SYSTEM>
      </item>

Para resolver esse erro, os usuários deverão solicitar ao administrador do SAP para conceder ao usuário do SAP BW que está sendo usado no Power BI, o direito de executar BAPI_USER_GET_DETAIL. Também vale a pena verificar se o usuário tem o valor necessário de DCPFM, conforme descrito anteriormente nesta solução de solução de problemas.

Conectividade para consultas SAP BEx

Você pode executar consultas BEx no Power BI Desktop ativando uma propriedade específica, conforme mostrado na imagem a seguir:

Habilitar Liberar para Acesso Externo.

Limitação da interface MDX

Uma limitação da interface MDX é que variáveis longas perdem o nome técnico e são substituídas por V00000#.

Nenhuma visualização de dados na janela Navegador

Em alguns casos, a caixa de diálogo Navegador não exibe uma visualização dos dados. Em vez disso, ela fornece a mensagem de erro Referência de objeto não definida para uma instância de um objeto.

Os usuários SAP precisam acessar módulos de função BAPI específicos para obter metadados e recuperar dados dos InfoProviders do SAP BW. Esses módulos incluem:

  • BAPI_MDPROVIDER_GET_CATALOGS
  • BAPI_MDPROVIDER_GET_CUBES
  • BAPI_MDPROVIDER_GET_DIMENSIONS
  • BAPI_MDPROVIDER_GET_HIERARCHYS
  • BAPI_MDPROVIDER_GET_LEVELS
  • BAPI_MDPROVIDER_GET_MEASURES
  • BAPI_MDPROVIDER_GET_MEMBERS
  • BAPI_MDPROVIDER_GET_VARIABLES
  • BAPI_IOBJ_GETDETAIL

Para resolver esse problema, verifique se o usuário tem acesso aos vários módulos MDPROVIDER e BAPI_IOBJ_GETDETAIL. Para solucionar ainda mais esse ou problemas semelhantes, você pode ativar o rastreamento. Selecione Arquivo>Opções e configurações>Opções. Em Opções, selecione Diagnóstico e, em seguida, selecione Ativar rastreamento. Tente recuperar dados do SAP BW enquanto o rastreamento estiver ativo e examine o arquivo de rastreamento para obter mais detalhes.

Exceções de memória

Em alguns casos, você pode se deparar com um dos seguintes erros de memória:

  • Message: No more memory available to add rows to an internal table.
  • Message: [DataSource.Error] SAP Business Warehouse: The memory request for [number] bytes could not be complied with.
  • Message: The memory request for [number] bytes could not be complied with.

Essas exceções de memória são do servidor do SAP BW e ocorrem devido ao servidor ficar sem memória disponível para processar a consulta. Isso pode acontecer quando a consulta retorna um grande conjunto de resultados ou quando a consulta é muito complexa para o servidor manipular, por exemplo, quando uma consulta tem muitas crossjoins.

Para resolver esse erro, a recomendação é simplificar a consulta ou dividi-la em consultas menores. Se possível, envie mais agregação por push para o servidor. Como alternativa, entre em contato com a equipe do SAP Basis para aumentar os recursos disponíveis no servidor.

Falha ao carregar cadeias de caracteres de texto com mais de 60 caracteres no Power BI Desktop

Em alguns casos, você poderá descobrir que as cadeias de caracteres de texto estão sendo truncadas em 60 caracteres no Power BI Desktop.

Primeiro, siga as instruções no 2777473 – MDX: perguntas frequentes sobre o Power BI acessando BW ou BW/4HANA e veja se isso resolve o problema.

Como o conector SAP Business Warehouse do Power Query usa a interface MDX fornecida pelo SAP para acesso de terceiros, você precisará entrar em contato com o SAP para obter as soluções possíveis, pois eles são proprietários da camada entre a interface MDX e o servidor do SAP BW. Pergunte como a configuração "long text is XL" pode ser especificada em seu cenário específico.

Imagem mostrando o local para definir a configuração long text is xl.

Limite de 60 caracteres apesar de "texto longo" no SAP BW

Há uma limitação conhecida em que as características de "texto longo" no SAP BW aparecem com um limite de 60 caracteres no Power BI. Esse limite de caracteres é devido a uma limitação na interface MDX e não há nenhuma solução alternativa conhecida disponível. A SAP documentou essa limitação MDX nesta Nota da SAP.

Migrando para a implementação 2.0 ao usar o Direct Query

Devido à substituição da implementação 1.0 do conector SAP Business Warehouse, talvez seja necessário atualizar as consultas para aproveitar a implementação 2.0. Quando você usa o Direct Query, o acesso ao editor de consultas é restrito. Portanto, você não pode fazer facilmente a transição para a implementação 2.0 sem recriar toda a consulta. A solução alternativa é adicionar uma variável de ambiente do sistema para permitir o acesso ao editor de consultas. As etapas a seguir não são oficialmente suportadas e só devem ser usadas conforme descrito aqui.

  1. Crie uma nova variável de ambiente navegando até Explorador de Arquivos>Este PC>Propriedades>Configurações avançadas do sistema>Variáveis de ambiente>Variáveis de sistema>Novo ou abrindo um prompt de comando e inserindo sysdm.cpl e selecionando Novo em Variáveis de sistema.
  2. Escolha o nome da variável de ambiente PBI_AlwaysEnableQueryEditor e defina o valor true. Essa configuração de variável permite acesso ao editor de consultas mesmo no modo Direct Query.
  3. Para abrir o editor do Power Query, no Power BI Desktop, na guia Página Inicial, selecione Transformar Dados.
  4. Atualize a consulta para usar a implementação 2.0 seguindo estas instruções, começando com a Etapa 2 nesse artigo.

A consulta final deve ser parecida com SapBusinessWarehouse.Cubes("server", "system", "clientId", [Implementation = "2.0"]).