Partilhar via


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

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

Coletar rastreamentos avançados do SAP BW

Nota

A coleta de um rastreamento de uma consulta enviada ao servidor SAP BW requer algumas opções e configurações que só podem ser fornecidas usando o Power BI Desktop. Se ainda não tiver uma cópia do Power BI Desktop, pode obter uma cópia no Centro de Transferências 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 SAP BW e sua resposta. O procedimento a seguir mostra como configurar rastreamentos avançados para problemas que ocorrem usando o conector SAP BW.

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

  2. Crie uma nova variável de ambiente:

    1. No Painel de Controle do Windows, selecione Configurações Avançadas do Sistema (System>Advanced System Settings).

      Você também pode abrir um prompt de comando e digitar sysdm.cpl.

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

    3. Em Variáveis de Ambiente, em Variáveis do Sistema, selecione Novo.

    4. Em Nova variável de sistema, em 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 Traces . Consulte o restante deste procedimento para obter o local da pasta Rastreamentos .

  3. Abra 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. Enquanto você ainda estiver em Opções e configurações, habilite o rastreamento.

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

  7. Reproduza o problema.

  8. Uma vez feito, feche o Power BI Desktop para que os logs sejam liberados no disco.

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

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

Colete rastreamentos avançados do SAP BW com rastreamentos CPIC

Se você estiver investigando problemas de autenticação ou logon único (SSO), use o mesmo procedimento descrito em Coletar rastreamentos avançados do SAP BW, exceto na etapa 2d, 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 resto do procedimento permanece o mesmo. Você pode exibir os rastreamentos CPIC na pasta especificada na variável de ambiente CPIC_TRACE_DIR. Você também pode visualizar os rastreamentos regulares na pasta SapBw .

Certifique-se também de desativar esse rastreamento avançado quando terminar, removendo as variáveis de ambiente ou definindo BI_EnableSapBwTracing como false e CPIC_TRACE como 0.

Execute a instalação limpa do conector SAP .NET

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

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

  2. Após a remoção, verifique se o SAP .NET Connector não está instalado no GAC (Global Assembly Cache), certificando-se de que 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

    • GAC de 64 bits:

      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:\Arquivos de Programas\SAP\SAP_DotNetConnector3_Net40_x64

    C:\Arquivos de programas (x86)\sap\SAP_DotNetConnector3_Net40_x86

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

Solução de problemas de mensagens de erro

Método SAP BW ErrorCode não encontrado

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

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

  • Usando uma versão antiga do conector SAP .NET.

  • Várias versões do conector SAP .NET estão instaladas.

  • O conector SAP .NET foi instalado duas vezes, uma no GAC (Global Assembly Cache) e outra não no 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' lançou uma exceção.

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

Este 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 comprimento de bit correto. Se tiver o Power BI Desktop de 64 bits instalado, certifique-se de que instalou o conector SAP .NET de 64 bits.

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

          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, ele 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 gacutil (uma das opções para desativar a assinatura de nome forte). Você precisaria executá-lo a partir de 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ê deve 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 a função ...*

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

  • Conectividade:

    • RFC_PING
    • RFC_METADATA_GET
  • Execução 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
  • Achatamento do Modo de Execução:

    • RSR_MDX_GET_FLAT_DATA
    • RSR_MDX_GET_FS_DATA
    • BAPI_MDDATASET_GET_FLAT_DATA
    • BAPI_MDDATASET_GET_FS_DATA
  • Streaming ExecutionMode:

    • BAPI_MDDATASET_GET_STREAMDATA
    • BAPI_MDDATASET_GET_STREAMINFO
  • ExecutionMode BasXml:

    • 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ário para dimensões digitadas (DATS, TIMS))
    • BAPI_USER_GET_DETAIL (usado apenas para nivelamento da interface)
    • RFC_READ_TABLE (necessário para chamadas de nomes de catálogo e determinados valores variáveis)
  • Pode ser chamado pelo conector 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 instalação limpa do conector SAP .NET.

Este erro aparece quando a versão instalada no GAC é inferior à versão esperada 3.0.18.0. O SAP Note 2417315 discute esse cenário.

Propriedades da cadeia de conexão definidas pelo conector

Quando o nome do parceiro SNC e a biblioteca SNC são fornecidos, o conector do SAP BW Application Server (implementação 2.0) definirá estas 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

Eles são usados para conexões do SAP BW Application Server e do SAP BW Message Server.

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

  • LANG (Idioma)
  • CLIENTE

Para a conexão do SAP BW Application Server, o conector define:

  • ASHOST (AppServerHost)
  • SYSNR (SystemNumber)

Para conexões do SAP BW Message Server, o conector define:

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

Comando MDX inválido com <comando interno>

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

Esta questão é discutida nas seguintes notas SAP. O acesso a estas notas requer um utilizador S. Entre em contato com sua equipe do SAP Basis para aplicar as correções relevantes para esse problema.

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

Problemas e limitações

A alteração de nomes de variáveis em um cubo SAP coloca o relatório DirectQuery em um estado quebrado e irrecuperável

Os seguintes sintomas ocorrem:

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

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

  • StackTrace:

    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 possível é:

  1. Faça uma cópia do arquivo PBIX (pois as coisas podem quebrar).

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

    Nota

    Esta variável de ambiente não é suportada, 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 comece com "{Cube.ApplyParameter, "[! V000004]" (o parâmetro em falta)". Remova essa linha.

  5. Selecionar 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 é recriar o relatório.

Dados numéricos do SAP BW

Nota

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

As contas de usuário no SAP BW têm configurações padrão para como os valores decimais ou de data/hora são formatados quando exibidos ao usuário na GUI do SAP.

As configurações padrão são mantidas no sistema SAP no Perfil de Usuário de uma conta, e o usuário pode visualizar ou alterar essas configurações na GUI do SAP com o caminho do menu System>User Profile>Own Data.

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

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

O SAP BW retorna dados decimais com um , (vírgula) ou um . (ponto) como separador decimal. Para especificar qual desses SAP BW deve usar para o separador decimal, o driver usado pelo Power BI Desktop faz uma chamada para BAPI_USER_GET_DETAIL. Esta 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 está falhando para um usuário específico, que está mostrando os dados incorretos, com uma mensagem de erro semelhante à seguinte mensagem:

   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 devem solicitar ao administrador do SAP que conceda 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 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 habilitando uma propriedade específica, conforme mostrado na imagem a seguir:

Habilite a versão para acesso externo.

Limitação da interface MDX

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

Sem pré-visualização de dados na janela Navegador

Em alguns casos, a caixa de diálogo Navegador não exibe uma visualização de dados e, em vez disso, fornece uma referência de objeto não definida como uma instância de uma mensagem de erro de objeto .

Os usuários SAP precisam ter acesso a módulos de função BAPI específicos para obter metadados e recuperar dados dos InfoProviders do SAP BW. Estes 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 habilitar o rastreamento. Selecione Ficheiro>Opções e definiçõ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 encontrar 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 SAP BW e são devidas 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 junções cruzadas.

Para resolver esse erro, a recomendação é simplificar a consulta ou dividi-la em consultas menores. Se possível, envie mais agregação para o servidor. Como alternativa, entre em contato com sua 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ê pode achar que as cadeias de caracteres de texto estão sendo truncadas para 60 caracteres no Power BI Desktop.

Primeiro, siga as instruções em 2777473 - MDX: FAQ para o Power BI acessar BW ou BW/4HANA e veja se isso resolve seu problema.

Como o conector do Power Query SAP Business Warehouse usa a interface MDX fornecida pela SAP para acesso de terceiros 3rd, você precisará entrar em contato com a SAP para obter possíveis soluções, pois elas possuem a camada entre a interface MDX e o servidor SAP BW. Pergunte como "texto longo é XL" pode ser especificado para o seu cenário específico.

Imagem mostrando onde definir texto longo é configuração xl.

Limite CHAR de 60 apesar do "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 do MDX nesta Nota SAP.

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

Devido à descontinuação da implementação 1.0 do conector do SAP Business Warehouse, talvez seja necessário atualizar suas 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 a transição facilmente 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. Observe que 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é o Explorador>de Arquivos Este PC>Propriedades>Configurações>avançadas do sistema Variáveis de ambiente Variáveis>do sistema Variáveis do>sistema Novo, ou abrindo um prompt de comando e inserindo sysdm.cpl e selecionando Novo em Variáveis do Sistema.
  2. Nomeie a variável PBI_AlwaysEnableQueryEditor de ambiente e defina o valor true. Essa configuração de variável permite o acesso ao editor de consultas mesmo no modo Direct Query.
  3. No Power BI Desktop, no separador Base , selecione Transformar Dados para abrir o editor do Power Query.
  4. Atualize a consulta para usar a implementação 2.0 seguindo estas instruções, começando com a Etapa 2 nesse artigo.

Sua consulta final deve se parecer com SapBusinessWarehouse.Cubes("server", "system", "clientId", [Implementation = "2.0"]).