Origem em lote da tabela do SAP

Nesta página, descrevemos como configurar extrações em massa dos dados do aplicativo SAP.

O plug-in de origem em lote da tabela do SAP (plug-in de tabelas do SAP) permite ler dados de tabelas ou visualizações padrão e personalizadas do SAP. Ele permite a ingestão de dados em massa de aplicativos SAP para o BigQuery ou qualquer outro sistema de destino compatível usando o Cloud Data Fusion. O plug-in tem os seguintes recursos principais:

  • Usa SAP ECC, SAP S4/HANA ou SAP BW como sistema de origem.
  • Não usa o SAP CDC (captura de dados de alterações) para rastrear e extrair dados novos e delta nas fontes de dados
  • Usa o modo de extração em lote
  • Oferece suporte a tabelas SAP e visualizações ABAP CDS como fontes de dados.
  • Acessa dados SAP pela camada do aplicativo

É possível ler dados de:

  • Tabelas transparentes
  • Tabelas de clusters
  • Mesas de sinuca
  • Visualizações de CDS do ABAP
  • Objetos do SAP BW ADSO

Versões de software compatíveis

Software Versões
SAP S4/HANA SAP S4/HANA 1909 e posterior
SAP ECC SAP ERP6 NW 7.31 SP16 e posterior
SAP – JCo SAP JCo versão 3.0.20 e mais recente
Cloud Data Fusion 6.3 e mais recente

Para mais informações sobre SAP no Google Cloud, consulte a Visão geral do SAP no Google Cloud.

Antes de começar

Configure os seguintes sistemas e serviços usados pelo plug-in SAP Table:

  1. Configure o sistema SAP ERP. Esse processo inclui as seguintes etapas:
    • Instale os arquivos SAP Transport.
    • Configure as autorizações e os papéis necessários do SAP.
    • Configure o SAP Java Connector.
  2. Implante o plug-in no Cloud Data Fusion.

    • Importante: escolha uma versão do plug-in compatível com a versão do Cloud Data Fusion.
    • Se você fizer upgrade da versão da instância ou do plug-in do Cloud Data Fusion, avalie o impacto das alterações no escopo funcional e no desempenho do pipeline.
  3. Estabeleça a conectividade RFC entre o Cloud Data Fusion e o SAP.

    • Verifique se a comunicação está ativada entre a instância do Cloud Data Fusion e o servidor SAP.
    • Para instâncias particulares, configure o peering de rede VPC.
    • O sistema SAP e a instância do Cloud Data Fusion precisam estar no mesmo projeto.

Configurar o plug-in

  1. Acesse a interface da Web do Cloud Data Fusion e clique em Studio.
  2. Verifique se Pipeline de dados - Lote está selecionado (não em Tempo real).
  3. No menu Source, clique em Sap Table. O nó da tabela do SAP aparece no pipeline.
  4. Para configurar a origem, acesse o nó da tabela do SAP e clique em Propriedades.
  5. Insira as seguintes propriedades. Para ver uma lista completa, consulte Propriedades.

    1. Insira um Label para o nó da tabela do SAP, por exemplo, SAP tables.
    2. Digite os detalhes da conexão. É possível configurar uma conexão única ou uma atual reutilizável.

      Nova conexão

      Para adicionar uma conexão única ao SAP, siga estas etapas:

      1. Mantenha a opção Usar conexão desativada.
      2. Na seção Conexão, insira as seguintes informações da conta SAP nestes campos:

        1. No campo Nome de referência, insira um nome para a conexão que identifica essa origem para a linhagem.
        2. No campo Cliente SAP, insira o nome do cliente de uma instância ou ambiente específico no SAP. Um administrador do SAP pode fornecer o nome do cliente.
        3. No campo Linguagem SAP, insira um idioma de logon da SAP. O padrão é EN (inglês).
        4. Selecione um dos seguintes Tipos de conexão.

          • Direto (via servidor de aplicativos SAP): Se você escolher esse tipo padrão, insira as informações nos seguintes campos: host do servidor de aplicativos SAP, número do sistema SAP e roteador SAP.
          • Carga balanceada (via SAP Message Server). Se você escolher esse tipo, digite as informações nos seguintes campos: Host do SAP Message Server, Serviço ou número da porta do SAP Message Server, ID do sistema SAP (SID) e Nome do grupo de login SAP (em inglês).
        5. No campo Nome da tabela/visualização do SAP, insira o nome da tabela ou visualização do seu sistema SAP.

        6. Forneça as credenciais do SAP e solicite ao administrador da SAP o nome de usuário de logon da SAP e a senha.

        7. No campo Caminho do Cloud Storage da biblioteca JCo, insira o caminho do SAP Java Connector (SAP JCo) no Cloud Storage que contém os arquivos da biblioteca do SAP JCo que você enviou.

        8. Para gerar um esquema com base nos metadados do SAP que mapeia os tipos de dados do SAP para os tipos de dados correspondentes do Cloud Data Fusion, clique em Ver esquema. Para mais informações, consulte Mapeamentos de tipos de dados.

        9. Opcional: para otimizar a carga de ingestão do SAP, insira as informações nos seguintes campos:

          1. As opções de filtro permitem extrair registros com base nas condições de seleção, como colunas com um conjunto de valores definido. Defina as condições na sintaxe do OpenSQL em uma cláusula WHERE. Por exemplo, esta consulta retorna todas as linhas da tabela Roster em que a coluna SchoolID tem o valor SchoolID > 52:

            SELECT * FROM Roster WHERE SchoolID > 52;
            

            Para mais informações, consulte Filtros compatíveis.

          2. No campo Número de linhas para buscar, é possível limitar os dados extraídos fornecendo um número inteiro positivo de linhas.

          3. No campo Number of splits, é possível criar partições para extrair registros de dados em paralelo, o que melhora o desempenho. O número de divisões pode afetar os processos de trabalho do SAP e precisa ser selecionado com cuidado.

          4. No campo Tamanho do pacote, especifique o número de registros a serem extraídos em uma única chamada de rede SAP. O tamanho do pacote afeta o desempenho e os recursos disponíveis e precisa ser selecionado com cuidado.

      Conexão reutilizável

      Para reutilizar uma conexão existente, siga estas etapas:

      1. Ative a opção Usar conexão.
      2. Clique em Procurar conexões.
      3. Clique no nome da conexão.

      Se não houver uma conexão, siga estas etapas para criar uma reutilizável:

      1. Clique em Adicionar conexão > SapTable.
      2. Na página Criar uma conexão do SapTable que é aberta, insira o nome e a descrição da conexão.
      3. No campo Cliente SAP, insira o nome do cliente de uma instância ou ambiente específico no SAP. Um administrador do SAP pode fornecer o nome do cliente.
      4. No campo Linguagem SAP, insira um idioma de logon da SAP. O padrão é EN (inglês).
      5. Selecione um dos seguintes Tipos de conexão.

        • Direto (via servidor de aplicativos SAP): Se você escolher esse tipo padrão, insira informações nos seguintes campos: host do servidor de aplicativos SAP, número do sistema SAP e roteador SAP.
        • Carga balanceada (via SAP Message Server). Se você escolher esse tipo, digite informações nos seguintes campos: Host do SAP Message Server, Número do serviço ou número da porta do SAP Message Server, ID do sistema SAP (SID) e Nome do grupo de logon do SAP.
      6. Forneça as credenciais do SAP e solicite os valores de nome de usuário de logon da SAP e senha ao administrador SAP.

      7. No campo Caminho do Cloud Storage da biblioteca JCo, insira o caminho do SAP Java Connector (SAP JCo) no Cloud Storage que contém os arquivos da biblioteca do SAP JCo que você enviou por upload.

      8. Opcional: no campo Outras propriedades de conexão SAP, insira pares de chave-valor que precisam modificar os padrões do SAP JCo.

      9. Clique em Criar.

Propriedades

Propriedade Macro ativada Propriedade obrigatória Descrição
Rótulo Não Sim O nome do nó no pipeline de dados.
Usar conexão Não Não Use uma conexão reutilizável. Se uma conexão for usada, não será necessário fornecer as credenciais. Para mais informações, consulte Gerenciar conexões.
Nome de referência Não Sim Se a opção Usar conexão não estiver ativada, esse campo será exibido. O nome da conexão a ser usada para a linhagem.
Nome Não Sim Se a opção Usar conexão estiver ativada, esse campo será exibido. O nome da conexão reutilizável.
Cliente SAP (em inglês) Sim Sim A instância ou ambiente em um sistema SAP.
Criar um snapshot Sim Sim Ative snapshots de dados no SAP.
Quando ativar os snapshots:
  • Extração de quaisquer dados da tabela transacional ativa
  • Extração nas tabelas em que as consultas de dados são mais lentas e consomem mais memória para cada chamada de extração.

Quando desativar snapshots: você está executando várias extrações de dados de grande volume em paralelo. Os snapshots usam tabelas de buffer no SAP, o que pode levar a problemas out of memory no SAP. No entanto, após a conclusão da extração de dados, a tabela de buffer é apagada.
Idioma da SAP Sim Sim Idioma em que a interface de usuário e os dados SAP são exibidos e processados.
Tipo de conexão Não Sim O tipo de conexão SAP: direta ou com balanceamento de carga.
Host do servidor de aplicativos SAP Sim Não Somente para o tipo de conexão Direta, esse nome de host é do servidor de aplicativos SAP, que serve como uma camada de middleware entre clientes SAP (como a interface da Web do SAP, navegadores da Web ou aplicativos para dispositivos móveis) e o banco de dados subjacente.
Número do sistema SAP Sim Não Apenas para o tipo de conexão direta, esse número é o identificador exclusivo atribuído a cada sistema SAP. Por exemplo, 00.
Roteador SAP Sim Não Apenas para o tipo de conexão Direta, essa é a string do roteador para o servidor proxy, que fornece um canal seguro para a comunicação entre sistemas SAP e clientes ou parceiros externos.
Host do SAP Message Server (em inglês) Sim Não Somente para o tipo de conexão Balanceamento de carga, esse é o nome do host, que facilita o balanceamento de carga em vários servidores de aplicativos no SAP.
Número da porta ou do serviço do SAP Message Server (em inglês) Sim Não Apenas para o tipo de conexão Carga balanceada, é a porta de rede em que o SAP Message Server detecta conexões de entrada de clientes SAP e servidores de aplicativos no SAP.
ID do sistema (SID) SAP Sim Não Somente para o tipo de conexão Balanceamento de carga, esse ID é atribuído a cada sistema SAP.
Nome do grupo de logon da SAP Sim Não O nome do agrupamento lógico ou da configuração de vários servidores de aplicativos SAP. O padrão é PUBLIC.
Nome da tabela/visualização do SAP Sim Sim Um nome de tabela ou visualização válido e indiferente a maiúsculas em que todas as colunas podem ser extraídas.
Nome de usuário de login do SAP Sim Sim Nome de usuário do SAP
Recomendado: se o nome de usuário mudar periodicamente, use uma macro.
Senha de login SAP Sim Sim Senha do SAP.
Recomendado: use macros seguras.
ID do projeto do GCP Sim Sim ID do projeto do Google Cloud.
Caminho do GCS da biblioteca do SAP JCo Sim Sim O caminho para o Cloud Storage em que você fez upload dos arquivos da biblioteca SAP JCo.
Receber esquema N/A N/A O plug-in gera um esquema com base nos metadados do SAP, que mapeia os tipos de dados do SAP para os tipos de dados correspondentes do Cloud Data Fusion. Consulte Mapeamento de tipo de dados.
Outras propriedades de conexão SAP Sim Não Defina outras propriedades do SAP JCo para substituir os padrões do SAP JCo. Por exemplo, definir jco.destination.pool_capacity = 10 modifica a capacidade padrão do pool de conexão.
Filtros Sim Não Condições especificadas na sintaxe Open SQL que filtram usando uma cláusula SQL WHERE. Extraia registros com base em condições, como aqueles em colunas com um conjunto definido de valores ou um intervalo de valores.
Para mais informações, consulte Filtros compatíveis.
Número de linhas a serem buscadas Sim Não Limita o número de registros extraídos.
  • Insira um número inteiro positivo.
  • Se o valor for 0 ou for deixado em branco, o Cloud Data Fusion extrairá todos os registros da tabela.
  • Se você inserir um valor positivo maior que o número de registros selecionados (com base nos outros valores de filtro), o Cloud Data Fusion extrairá apenas os registros selecionados.
Número de divisões a serem geradas Sim Não Cria partições para extrair registros em paralelo.
O mecanismo de ambiente de execução cria o número especificado de partições e conexões SAP ao extrair os registros.
Tenha cuidado ao aumentar esse valor, porque ele aumenta as conexões simultâneas com o SAP.
Recomendado: planeje conexões SAP para cada pipeline e o número total de pipelines em execução simultânea.
Se o valor for 0 ou deixado em branco, o Cloud Data Fusion escolherá um valor apropriado, com base no número de executores disponíveis, nos registros a serem extraídos e no tamanho do pacote.
Tamanho do pacote Sim Não O número de registros a serem extraídos em uma única chamada de rede SAP. É o número de registros que o SAP armazena em buffer na memória durante cada chamada de extração de rede.
Tenha cuidado ao definir essa propriedade. Vários pipelines que extraem dados podem aumentar o uso da memória, causando falhas devido a erros Out of memory.
  • Insira um número inteiro positivo.
  • Se 0 ou for deixado em branco, o plug-in usará um valor padrão de 70000 ou um valor calculado adequadamente.
  • Se o pipeline de dados falhar devido a erros Out of memory, diminua o tamanho do pacote ou aumente a memória disponível para seus processos de trabalho SAP.

Filtros com suporte

As condições de filtro a seguir são aceitas.

Filtro que contém um operador de comparação

Use operadores de comparação para realizar filtragem mais complexa com base em comparações entre valores.

Sintaxe
    SELECT * FROM table_name WHERE column_name > value; \
    SELECT * FROM table_name WHERE column_name BETWEEN value1 AND value2;
    
Exemplo
AUDAT GT '20230914'

Filtro que contém um operador LIKE

Usar operadores LIKE para correspondência de padrões. Para corresponder a qualquer caractere, use o símbolo % como caractere curinga.

Sintaxe
    SELECT * FROM table_name WHERE column_name LIKE 'pattern%';
    
Exemplo
ERNAM LIKE 'KIRAN%'

Filtro que contém um operador IN

Use os operadores IN para especificar uma lista de valores para correspondência.

Sintaxe
    SELECT * FROM table_name WHERE column_name \
      IN ('value1', 'value2', 'value3');
    
Exemplo
ERNAM IN ( 'LEE' , 'KIRAN' )

Filtro que contém um operador lógico

Use operadores lógicos para especificar uma lista de valores para correspondência.

Sintaxe
    SELECT * FROM table_name WHERE condition1 AND condition2; \
      SELECT * FROM table_name WHERE condition1 OR condition2; \
      SELECT * FROM table_name WHERE NOT condition;
    
Examples
  • ( AUDAT EQ '20220615' ) AND ( ERNAM LIKE 'LEE%' )
  • ( AUDAT EQ '20220615' ) OR ( AUDAT EQ '20220617' )

Filtro que contém um período

Use períodos para recuperar linhas em que uma coluna de data e hora esteja dentro de um período específico.

Sintaxe
    SELECT * FROM table_name \
      WHERE datetime_column >= 'start_date' AND datetime_column <= 'end_date';
    
Exemplo
AUDAT GE '20230910' AND AUDAT LE '20230914'

Filtro que contém uma comparação de datas

Use comparações de datas para recuperar linhas em que datetime é usado.

Sintaxe
    SELECT * FROM table_name WHERE datetime_column > 'target_date';
    
Exemplo
AUDAT GE '20230910' AND AUDAT LE '20230914'

Filtro que combina data e hora

Se a coluna de data e hora incluir data e hora, será possível filtrar de acordo.

Sintaxe
    SELECT * FROM table_name \
      WHERE datetime_column >= 'target_datetime' \
      AND datetime_column <= 'target_datetime';
    
Exemplo
TIMESTAMP GE '20210602144800' AND TIMESTAMP LE '20210624080836'

(Formato do carimbo de data/hora : AAAAMMDDHHMMSS)

Filtro que combina várias condições com operadores lógicos

É possível recuperar linhas que atendam a várias condições usando operadores lógicos, como AND e OR.

Sintaxe
    SELECT * FROM table_name \
      WHERE (column1 = 'value1' AND column2 > value2) \
      OR (column3 = 'value3' AND column4 < value4);
    
Exemplo
    ( ERNAM EQ 'LEE' AND AUDAT GT '20220722' ) \
      OR ( BSTNK EQ 'PO54321065' AND BSTDK LT '20220714' )
    

Filtro que combina condições aninhadas

É possível combinar condições de maneira aninhada para criar filtros complexos.

Sintaxe
    SELECT * FROM table_name \
      WHERE (column1 = 'value1' OR (column2 = 'value2' AND column3 > value3)) \
      AND column4 = 'value4';
    
Exemplo
    ( ERDAT EQ '20220722' OR ( ERNAM EQ 'LEE' AND VDATU GT '20210623' ) ) \
      AND FMBDAT EQ '20220722'
    

Filtro que usa subconsultas

É possível usar subconsultas para filtrar com base nos resultados de outra consulta.

Sintaxe
    SELECT * FROM table_name \
      WHERE column1 IN (SELECT related_column FROM other_table WHERE condition);
    
Exemplo
VBELN IN ( SELECT VBELN FROM VBAK WHERE ERNAM = 'LEE' )

Filtro que combina condições de data e valor

É possível combinar condições com base na data e no valor em um filtro complexo.

Sintaxe
    SELECT * FROM table_name \
      WHERE (column1 = 'value1' OR column2 = 'value2') \
      AND datetime_column > 'target_datetime';
    
Exemplo
    ( ERDAT EQ '20220722' OR ERNAM EQ 'LEE' ) AND VDATU GT '20210623'
    

Filtro contendo datas para formatação

No SAP, os campos de data e hora são sempre salvos sem - ou : no nível do banco de dados.

Sintaxe
    SELECT * FROM table_name \
      WHERE datetime_column >= 'YYYY-MM-DD HH:MM:SS' \
      AND datetime_column <= 'YYYY-M
    

Incompatível: filtro que contém funções e operadores de comparação.

Em SAP, as funções na cláusula WHERE da QUERY não são suportadas.

Incompatível: filtro que contém intervalos

No SAP, a função NOW() não é compatível.

Sintaxe
    SELECT * FROM table_name \
      WHERE datetime_column >= NOW() - INTERVAL X DAY;
    

Incompatível: componente de data de extração de filtro

No SAP, a filtragem de deslocamento não é compatível.

Exemplo
    WHERE YEAR+0(4) = 2023
    

Mapeamentos de tipo de dados

A tabela a seguir é uma lista de tipos de dados SAP com os tipos correspondentes do Cloud Data Fusion.

Tipo de dados do SAP Tipo ABAP SAP description Tipo de dados do Cloud Data Fusion
INT1 (numérico) b Inteiro de 1 byte int
INT2 (numérico) s Inteiro de 2 bytes int
INT4 (numérico) i Inteiro de 4 bytes int
INT8 (numérico) 8 Inteiro de 8 bytes long
DEC (numérico) p Número no pacote no formato BCD (DEC) decimal
DF16_DEC, DF16_RAW (numérico) a Ponto flutuante decimal de 8 bytes IEEE 754r double
DF34_DEC, DF34_RAW (numérico) e Ponto flutuante decimal de 16 bytes IEEE 754r double
FLTP (numérico) f Número de ponto flutuante binário double
CHAR, LCHR (caractere) c String de caracteres string
SSTRING, GEOM_EWKB (caractere) string String de caracteres string
STRING (caractere) string CLOB de string de caracteres bytes
NUMC, ACCP (caractere) n Texto numérico string
RAW, LRAW (byte) x Dados binários bytes
RAWSTRING (byte) xstring String de bytes BLOB bytes
DATS (data/hora) d Data date
TIMS (data/hora) t Tempo time
TIMS (data/hora) utcl (Utclong), Indicação de data e hora carimbo de data/hora

Casos de uso

Dois contextos de extração são aceitos:

  • Tabelas e visualizações do banco de dados SAP
  • CDS do SAP ABAP

Em cada um dos contextos, o plug-in SAP Table oferece suporte a visualizações e tabelas de banco de dados padrão e personalizadas.

Limitações

O plug-in SAP Table tem as seguintes limitações:

  • Não é possível mesclar tabelas.
  • Ele não oferece suporte a visualizações de CDS com parâmetros.
  • Não há suporte sem campos-chave.
  • Se o recurso de snapshots estiver ativado, o uso de um tamanho de pacote maior que 30.000 poderá causar falhas no pipeline. Esse tamanho de pacote pode variar, dependendo do número de colunas na tabela do SAP. Use esta fórmula para calcular um tamanho de pacote ideal para uma tabela: tamanho da linha (em número de caracteres) * 5.
  • O Connection Manager permite navegar no máximo por 1.000 nomes de tabelas SAP.
  • Quando ocorre um erro de pipeline, como um erro no coletor, o plug-in da tabela SAP tenta limpar todos os processos ativos do lado do SAP relacionados à extração chamando o RFM personalizado destinado à limpeza: /GOOG/RFC_READ_TABLE_CLEANUP.

A seguir