Origem de lote de tabelas SAP

Esta página descreve como configurar extrações em massa de dados de aplicações SAP.

O plug-in de origem de lotes de tabelas SAP (plug-in de tabelas SAP) permite-lhe ler dados de tabelas ou vistas padrão e personalizadas do SAP. Permite o carregamento de dados em massa de aplicações SAP para o BigQuery ou qualquer outro sistema de destino suportado através do Cloud Data Fusion. O plug-in tem as seguintes funcionalidades principais:

  • Usa o SAP ECC, o SAP S4/HANA ou o SAP BW como sistema de origem
  • Não usa o SAP CDC (captura de dados de alterações) para acompanhar e extrair dados novos e delta nas origens de dados
  • Usa o modo de extração em lote
  • Suporta tabelas SAP e vistas CDS ABAP como origens de dados
  • Acede aos dados SAP através da camada de aplicação

Pode ler dados de:

  • Tabelas transparentes
  • Tabelas de cluster
  • Mesas de bilhar
  • Vistas CDS ABAP
  • Objetos ADSO do SAP BW

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 posteriores
SAP JCo Versão 3.0.20 e posterior do SAP JCo
Cloud Data Fusion 6.3 e posteriores

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

Antes de começar

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

  1. Configure o sistema SAP ERP. Este processo inclui os seguintes passos:
    • Instale os ficheiros de transporte do SAP.
    • Configure as autorizações e as funções SAP necessárias.
    • Configure o SAP Java Connector.
  2. Implemente 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 atualizar a versão da instância ou do plug-in do Cloud Data Fusion, avalie o impacto das alterações no âmbito funcional e no desempenho do pipeline.
  3. Estabeleça a conetividade RFC entre o Cloud Data Fusion e o SAP.

    • Certifique-se de que a comunicação está ativada entre a instância do Cloud Data Fusion e o servidor SAP.
    • Para instâncias privadas, configure o intercâmbio da rede da VPC.
    • Tanto o sistema SAP como a instância do Cloud Data Fusion têm de estar no mesmo projeto.

Configure o plug-in

  1. Aceda à interface Web do Cloud Data Fusion e clique em Studio.
  2. Verifique se a opção Data Pipeline - Batch está selecionada (e não Tempo Real).
  3. No menu Origem, clique em Tabela SAP. O nó da tabela SAP é apresentado no pipeline.
  4. Para configurar a origem, aceda ao nó da tabela SAP e clique em Propriedades.
  5. Introduza as seguintes propriedades. Para ver uma lista completa, consulte as Propriedades.

    1. Introduza uma etiqueta para o nó da tabela SAP, por exemplo, SAP tables.
    2. Introduza os detalhes da associação. Pode configurar uma nova associação única ou uma associação existente reutilizável.

      Nova associação

      Para adicionar uma associação única ao SAP, siga estes passos:

      1. Mantenha a opção Usar ligação desativada.
      2. Na secção Ligação, introduza as seguintes informações da conta SAP nestes campos:

        1. No campo Nome de referência, introduza um nome para a ligação que identifica esta origem para a linhagem.
        2. No campo Cliente SAP, introduza o nome do cliente de uma instância ou um ambiente específico no SAP. Um administrador do SAP pode indicar o nome do cliente.
        3. No campo Idioma do SAP, introduza um idioma de início de sessão do SAP. A predefinição é EN (inglês).
        4. Selecione um dos seguintes Tipos de associação.

          • Direta (através do servidor de aplicações SAP). Se escolher este tipo predefinido, introduza informações nos seguintes campos: Anfitrião do servidor de aplicações SAP, Número do sistema SAP e Router SAP.
          • Equilibrado de carga (através do servidor de mensagens SAP). Se escolher este tipo, introduza informações nos seguintes campos: Anfitrião do servidor de mensagens SAP, Serviço do servidor de mensagens SAP ou número da porta, ID do sistema SAP (SID) e Nome do grupo de início de sessão SAP.
        5. No campo Nome da tabela/vista SAP, introduza o nome da tabela ou da vista do seu sistema SAP.

        6. Faculte as credenciais da SAP: peça ao seu administrador da SAP o nome de utilizador de início de sessão da SAP e a palavra-passe.

        7. No campo Caminho do Cloud Storage da biblioteca JCo, introduza o caminho do SAP Java Connector (SAP JCo) no Cloud Storage que contém os ficheiros da biblioteca SAP JCo que carregou.

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

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

          1. A utilização das Opções de filtro permite-lhe extrair registos com base em condições de seleção, como colunas com um conjunto definido de valores. Defina as condições na sintaxe OpenSQL numa cláusula WHERE. Por exemplo, esta consulta devolve todas as linhas da tabela Roster onde a coluna SchoolID tem o valor SchoolID > 52:

            SELECT * FROM Roster WHERE SchoolID > 52;
            

            Para mais informações, consulte o artigo Filtros suportados.

          2. No campo Número de linhas a obter, pode limitar os dados extraídos fornecendo um número inteiro positivo de linhas.

          3. No campo Número de divisões, pode criar partições para extrair registos de dados em paralelo, o que melhora o desempenho. O número de divisões pode afetar os processos de trabalho do SAP e tem de ser selecionado cuidadosamente.

          4. No campo Tamanho do pacote, especifique o número de registos a extrair numa única chamada de rede SAP. O tamanho do pacote afeta o desempenho e os recursos disponíveis e tem de ser selecionado cuidadosamente.

      Ligação reutilizável

      Para reutilizar uma associação existente, siga estes passos:

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

      Se não existir uma associação, para criar uma associação reutilizável, siga estes passos:

      1. Clique em Adicionar associação > SapTable.
      2. Na página Crie uma associação SapTable apresentada, introduza um nome e uma descrição da associação.
      3. No campo Cliente SAP, introduza o nome do cliente de uma instância ou um ambiente específico no SAP. Um administrador do SAP pode indicar o nome do cliente.
      4. No campo Idioma do SAP, introduza um idioma de início de sessão do SAP. A predefinição é EN (inglês).
      5. Selecione um dos seguintes Tipos de associação.

        • Direta (através do servidor de aplicações SAP). Se escolher este tipo predefinido, introduza informações nos seguintes campos: Anfitrião do servidor de aplicações SAP, Número do sistema SAP e Router SAP.
        • Equilibrado de carga (através do servidor de mensagens SAP). Se escolher este tipo, introduza informações nos seguintes campos: Anfitrião do servidor de mensagens SAP, Serviço do servidor de mensagens SAP ou número da porta, ID do sistema SAP (SID) e Nome do grupo de início de sessão SAP.
      6. Faculte as credenciais da SAP: peça ao administrador da SAP os valores do nome de utilizador de início de sessão da SAP e da palavra-passe.

      7. No campo Caminho do Cloud Storage da biblioteca JCo, introduza o caminho do conetor Java (SAP JCo) do SAP no Cloud Storage que contém os ficheiros da biblioteca SAP JCo que carregou.

      8. Opcional: no campo Propriedades de ligação SAP adicionais, introduza pares de chave-valor que têm de substituir as predefinições do SAP JCo.

      9. Clique em Criar.

Propriedades

Propriedade O modo macro está ativado Propriedade obrigatória Descrição
Etiqueta Não Sim O nome do nó no pipeline de dados.
Usar ligação Não Não Use uma ligação reutilizável. Se for usada uma associação, não tem de fornecer as credenciais. Para mais informações, consulte o artigo Faça a gestão das associações.
Nome de referência Não Sim Se a opção Usar ligação não estiver ativada, este campo é apresentado. O nome da associação a usar para a linhagem.
Nome Não Sim Se a opção Usar ligação estiver ativada, este campo é apresentado. O nome da associação reutilizável.
Cliente SAP Sim Sim A instância ou o ambiente num sistema SAP.
Tirar instantâneo Sim Sim Ative os instantâneos de dados no SAP.
Quando ativar os instantâneos:
  • Extraindo dados de tabelas transacionais ativas
  • Extrair dados das tabelas onde as consultas de dados são mais lentas e consomem mais memória para cada chamada de extração.

Quando desativar as capturas instantâneas: estiver a executar várias extrações de dados de grande volume em paralelo. As imagens instantâneas usam tabelas de buffer no SAP, o que pode originar problemas de out of memory no SAP. No entanto, quando a extração de dados é concluída, a tabela de buffer é limpa.
Idioma do SAP Sim Sim O idioma em que a interface do utilizador e os dados do SAP são apresentados e processados.
Tipo de ligação Não Sim O tipo de ligação SAP: direta ou com equilíbrio de carga.
Anfitrião do servidor de aplicações SAP Sim Não Apenas para o tipo de ligação Direta, este nome do anfitrião é do servidor de aplicações SAP, que funciona como uma camada de software intermédio entre clientes SAP (como a interface Web SAP, navegadores de Internet ou apps para dispositivos móveis) e a base de dados subjacente.
Número do sistema SAP Sim Não Apenas para o tipo de ligação Direta, este número é o identificador exclusivo atribuído a cada sistema SAP. Por exemplo, 00.
Router SAP Sim Não Apenas para o tipo de ligação Direta, esta é a string do router para o servidor proxy, que fornece um canal seguro para a comunicação entre os sistemas SAP e os clientes ou os parceiros externos.
Anfitrião do servidor de mensagens SAP Sim Não Apenas para o tipo de ligação Equilibrado por carga, este é o nome do anfitrião, que facilita o equilíbrio de carga em vários servidores de aplicações no SAP.
Serviço ou número da porta do servidor de mensagens SAP Sim Não Apenas para o tipo de ligação Equilibrado por carga, esta é a porta de rede onde o servidor de mensagens SAP escuta as ligações recebidas de clientes SAP e servidores de aplicações no SAP.
ID do sistema SAP (SID) Sim Não Apenas para o tipo de ligação Equilibrado por carga, este ID é atribuído a cada sistema SAP.
Nome do grupo de início de sessão da SAP Sim Não O nome do agrupamento lógico ou da configuração de vários servidores de aplicações SAP. A predefinição é PUBLIC.
Nome da tabela/vista do SAP Sim Sim Um nome de tabela ou vista válido e não sensível a maiúsculas e minúsculas a partir do qual é possível extrair todas as colunas.
Nome de utilizador de início de sessão da SAP Sim Sim Nome de utilizador para o SAP
Recomendado: se o nome de utilizador mudar periodicamente, use uma macro.
Palavra-passe de início de sessão da SAP Sim Sim Palavra-passe da SAP.
Recomendado: use macros seguras.
ID do projeto da GCP Sim Sim Google Cloud ID do projeto.
Caminho do GCS da biblioteca SAP JCo Sim Sim O caminho para o Cloud Storage onde carregou os ficheiros da biblioteca SAP JCo.
Obter 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 do Cloud Data Fusion correspondentes. Consulte o artigo Mapeamento de tipos de dados.
Propriedades de associação SAP adicionais Sim Não Defina propriedades SAP JCo adicionais para substituir as predefinições do SAP JCo. Por exemplo, a definição de jco.destination.pool_capacity = 10 substitui a capacidade do conjunto de ligações predefinido.
Filtros Sim Não Condições especificadas na sintaxe SQL aberta que filtram através de uma cláusula SQL WHERE. Extrair registos com base em condições, como: Os que estão em colunas com um conjunto definido de valores ou um intervalo de valores.
Para mais informações, consulte os filtros compatíveis.
Número de linhas a obter Sim Não Limita o número de registos extraídos.
  • Introduza um número inteiro positivo.
  • Se o valor for 0 ou for deixado em branco, o Cloud Data Fusion extrai todos os registos da tabela.
  • Se introduzir um valor positivo superior ao número de registos selecionados (com base nos outros valores de filtro), o Cloud Data Fusion extrai apenas os registos selecionados.
Número de divisões a gerar Sim Não Cria partições para extrair registos em paralelo.
O motor de tempo de execução cria o número especificado de partições (e ligações SAP) enquanto extrai os registos.
Tenha cuidado ao aumentar este valor, uma vez que aumenta as ligações simultâneas com o SAP.
Recomendado: planeie ter ligações SAP para cada pipeline e o número total de pipelines em execução em simultâneo.
Se o valor for 0 ou for deixado em branco, o Cloud Data Fusion escolhe um valor adequado, com base no número de executores disponíveis, nos registos a extrair e no tamanho do pacote.
Tamanho da embalagem Sim Não O número de registos a extrair numa única chamada de rede SAP. É o número de registos que o SAP armazena em buffer na memória durante cada chamada de extração de rede.
Tenha cuidado ao definir esta propriedade. Vários pipelines de dados que extraem dados podem aumentar o uso de memória, o que causa falhas devido a erros Out of memory.
  • Introduza um número inteiro positivo.
  • Se for 0 ou ficar em branco, o plug-in usa um valor padrão de 70 000 ou um valor calculado adequadamente.
  • Se o pipeline de dados falhar devido a erros, diminua o tamanho do pacote ou aumente a memória disponível para os processos de trabalho do SAP.Out of memory

Filtros suportados

As seguintes condições de filtro são suportadas.

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

Use operadores de comparação para fazer uma 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

Use operadores LIKE para a correspondência de padrões. Para estabelecer correspondência com qualquer caráter, use o símbolo % como caráter universal.

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

Filtro que contém um operador IN

Use operadores IN para especificar uma lista de valores com os quais estabelecer uma 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 com os quais fazer a 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;
    
Exemplos
  • ( AUDAT EQ '20220615' ) AND ( ERNAM LIKE 'LEE%' )
  • ( AUDAT EQ '20220615' ) OR ( AUDAT EQ '20220617' )

Filtro que contém um intervalo de datas

Use intervalos de datas para obter linhas em que uma coluna de data/hora se enquadra num intervalo de datas 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 obter linhas onde a data/hora é usada.

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/hora incluir a data e a hora, pode filtrar em conformidade.

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

(Formato de data/hora : AAAAMMDDHHMMSS)

Filtre a combinação de várias condições com operadores lógicos

Pode obter linhas que cumprem várias condições através de 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' )
    

Combinação de filtros com condições aninhadas

Pode combinar condições de forma 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

Pode 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' )

Filtrar a combinação de condições de data e valor

Pode combinar condições baseadas em datas e valores num 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 que contém datas de formatação

No SAP, os campos de data e hora são sempre guardados sem - nem : ao nível da base de dados.

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

Não suportado: filtro que contém funções e operadores de comparação

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

Não suportado: filtro que contém intervalos

No SAP, a função NOW() não é suportada.

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

Não suportado: filtro que extrai o componente de data

No SAP, a filtragem de desvio não é suportada.

Exemplo
    WHERE YEAR+0(4) = 2023
    

Mapeamentos de tipos de dados

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

Tipo de dados SAP Tipo ABAP Descrição do SAP Tipo de dados do Cloud Data Fusion
INT1 (numérico) b Número inteiro de 1 byte int
INT2 (numérico) s Número inteiro de 2 bytes int
INT4 (numérico) i Número inteiro de 4 bytes int
INT8 (numérico) 8 Número inteiro de 8 bytes longo
DEC (numérico) p Número compactado no formato BCD (DEC) decimal
DF16_DEC, DF16_RAW (numérico) a Vírgula flutuante decimal de 8 bytes IEEE 754r dupla
DF34_DEC, DF34_RAW (numérico) e Vírgula flutuante decimal de 16 bytes IEEE 754r dupla
FLTP (numérico) f Número de vírgula flutuante binário dupla
CHAR, LCHR (personagem) c String de carateres de string
SSTRING, GEOM_EWKB (personagem) de string String de carateres de string
STRING (Caráter) de string CLOB de string de carateres bytes
NUMC, ACCP (personagem) n Texto numérico de string
RAW, LRAW (byte) x Dados binários bytes
RAWSTRING (byte) xstring BLOB de string de bytes bytes
DATS (data/hora) d Data data
TIMS (data/hora) t Hora tempo
TIMS (data/hora) utcl (Utclong), TimeStamp timestamp

Exemplos de utilização

São suportados dois contextos de extração:

  • Tabelas e vistas da base de dados SAP
  • SAP ABAP CDS

Em cada um dos contextos, o plug-in de tabela SAP suporta tabelas e vistas de base de dados padrão e personalizadas.

Limitações

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

  • Não suporta a união de tabelas.
  • Não suporta vistas CDS com parâmetros.
  • Não suporta campos sem chave.
  • Se a funcionalidade Snapshots estiver ativada, a utilização de um tamanho do pacote superior a 30 000 pode causar falhas no pipeline. O tamanho deste pacote pode variar consoante o número de colunas na tabela SAP. Pode calcular um tamanho ideal do pacote para uma tabela através desta fórmula: tamanho da linha (em número de carateres) * 5.
  • O Gestor de associações permite-lhe procurar um máximo de 1000 nomes de tabelas SAP.
  • Quando ocorre um erro no pipeline, como um erro no destino, o plug-in SAP Table tenta limpar todos os processos ativos do lado do SAP relacionados com a extração chamando o RFM personalizado destinado à limpeza: /GOOG/RFC_READ_TABLE_CLEANUP.

O que se segue?