Nota
O acesso a esta página requer autorização. Podes tentar iniciar sessão ou mudar de diretório.
O acesso a esta página requer autorização. Podes tentar mudar de diretório.
APLICA-SE A:
Azure Data Factory
Azure Synapse Analytics
Gorjeta
Experimente o Data Factory no Microsoft Fabric, uma solução de análise tudo-em-um para empresas. O Microsoft Fabric abrange tudo, desde a movimentação de dados até ciência de dados, análises em tempo real, business intelligence e relatórios. Saiba como iniciar uma nova avaliação gratuitamente!
Este artigo descreve como usar a atividade de cópia nos pipelines do Azure Data Factory e do Azure Synapse Analytics para copiar dados de uma tabela SAP. Para obter mais informações, consulte Visão geral da atividade de cópia.
Gorjeta
Para saber o suporte geral no cenário de integração de dados SAP, consulte o whitepaper Integração de dados SAP usando o Azure Data Factory com introdução detalhada sobre cada conector, comparação e orientação SAP.
Capacidades suportadas
Este conector de tabela SAP é suportado para os seguintes recursos:
| Capacidades suportadas | IR |
|---|---|
| Atividade de cópia (fonte/-) | (2) |
| Atividade de Pesquisa | (2) |
(1) Tempo de execução de integração do Azure (2) Tempo de execução de integração auto-hospedado
Para obter uma lista dos armazenamentos de dados suportados como fontes ou destinos pela atividade de cópia, consulte a tabela de Armazenamentos de Dados Suportados.
Especificamente, este conector de tabela SAP suporta:
Copiando dados de uma tabela SAP em:
- SAP ERP Central Component (SAP ECC) versão 7.01 ou posterior (em um recente SAP Support Package Stack lançado após 2015).
- SAP Business Warehouse (SAP BW) versão 7.01 ou posterior (em um conjunto recente de pacotes de suporte SAP lançado após 2015).
- SAP S/4HANA.
- Outros produtos no SAP Business Suite versão 7.01 ou posterior (em um recente SAP Support Package Stack lançado após 2015).
Copiar dados de uma tabela transparente SAP, uma tabela agrupada, uma tabela clusterizada e uma exibição.
Copiar dados usando autenticação básica ou SNC (Secure Network Communications), se o SNC estiver configurado.
Conectando-se a um servidor de aplicativos SAP ou servidor de mensagens SAP.
Recuperação de dados via RFC padrão ou personalizada.
Para obter mais informações sobre o SNC, consulte Introdução ao SAP SNC para integrações RFC - Blog da SAP.
A versão 7.01 ou posterior refere-se à versão SAP NetWeaver em vez da versão SAP ECC. Por exemplo, o SAP ECC 6.0 EHP 7 em geral tem NetWeaver versão >=7.4. Caso você não tenha certeza sobre seu ambiente, aqui estão as etapas para confirmar a versão do seu sistema SAP:
- Use SAP GUI para se conectar ao sistema SAP.
- Vá para System ->Status.
- Verifique a liberação do SAP_BASIS, verifique se ele é igual ou maior que 701.
Pré-requisitos
Para usar este conector de tabela SAP, você precisa:
Configure um runtime de integração auto-hospedado (versão 3.17 ou posterior). Para mais informações, consulte Criar e configurar um runtime de integração auto-hospedado.
Descarregue o Conector SAP de 64 bits para Microsoft .NET 3.0 do site da SAP e instale-o na máquina de runtime de integração auto-hospedada. Durante a instalação, certifique-se de selecionar a opção Instalar assemblies no GAC na janela Etapas de configuração opcionais.
Instalar o SAP Connector para .NET
O usuário SAP que está sendo usado no conector de tabela SAP deve ter as seguintes permissões:
- Autorização para usar destinos de RFC (Remote Function Call).
- Permissões para a atividade Execute do objeto de autorização S_SDSAUTH. Você pode consultar a Nota SAP 460089 para a maioria dos objetos de autorização. Certas RFCs são necessárias pelo conector NCo subjacente, como, por exemplo, RFC_FUNCTION_SEARCH.
Introdução
Para executar a atividade de cópia com um pipeline, você pode usar uma das seguintes ferramentas ou SDKs:
- Ferramenta Copiar dados
- portal do Azure
- SDK do .NET
- Python SDK
- Azure PowerShell
- API REST
- Modelo Azure Resource Manager
Criar um serviço vinculado a uma tabela SAP usando a interface do usuário
Use as etapas a seguir para criar um serviço vinculado a uma tabela SAP na interface do usuário do portal do Azure.
Navegue até a guia Gerenciar em seu espaço de trabalho do Azure Data Factory ou Synapse e selecione Serviços Vinculados e clique em Novo:
Pesquise SAP e selecione o conector de tabela SAP.
Configure os detalhes do serviço, teste a conexão e crie o novo serviço vinculado.
Detalhes de configuração do conector
As seções a seguir fornecem detalhes sobre as propriedades que são usadas para definir as entidades específicas para o conector de tabela SAP.
Propriedades do serviço vinculado
As seguintes propriedades são suportadas para o serviço vinculado SAP BW Open Hub:
| Propriedade | Descrição | Obrigatório |
|---|---|---|
type |
A type propriedade deve ser definida como SapTable. |
Sim |
server |
O nome do servidor no qual a instância SAP está localizada. Use para se conectar a um servidor de aplicativos SAP. |
Não |
systemNumber |
O número do sistema SAP. Use para se conectar a um servidor de aplicativos SAP. Afeta o número da PORTA usado na comunicação com a tabela SAP. Valor permitido: um número decimal de dois dígitos representado como uma cadeia de caracteres. |
Não |
messageServer |
O nome do host do servidor de mensagens SAP. Use para se conectar a um servidor de mensagens SAP. |
Não |
messageServerService |
O nome do serviço ou o número da porta do servidor de mensagens. Use para se conectar a um servidor de mensagens SAP. |
Não |
systemId |
O ID do sistema SAP onde a tabela está localizada. Use para se conectar a um servidor de mensagens SAP. |
Não |
logonGroup |
O grupo de logon para o sistema SAP. Use para se conectar a um servidor de mensagens SAP. |
Não |
clientId |
A identificação do cliente no sistema SAP. Valor permitido: um número decimal de três dígitos representado como uma cadeia de caracteres. |
Sim |
language |
A linguagem que o sistema SAP usa. O valor predefinido é EN. |
Não |
userName |
O nome do usuário que tem acesso ao servidor SAP. | Sim |
password |
A palavra-passe do utilizador. Marque este campo com o SecureString tipo para armazená-lo com segurança ou faça referência a um segredo armazenado no Cofre de Chaves do Azure. |
Sim |
sncMode |
O indicador de ativação SNC para aceder ao servidor SAP onde está localizada a tabela. Use se quiser usar o SNC para se conectar ao servidor SAP. Os valores permitidos são 0 (off, o padrão) ou 1 (on). |
Não |
sncMyName |
O nome SNC do iniciador para acessar o servidor SAP onde a tabela está localizada. Aplica-se quando sncMode está ativado. |
Não |
sncPartnerName |
O nome SNC do parceiro de comunicação para acessar o servidor SAP onde a tabela está localizada. Aplica-se quando sncMode está ativado. |
Não |
sncLibraryPath |
A biblioteca do produto de segurança externa para aceder ao servidor SAP onde a tabela está localizada. Aplica-se quando sncMode está ativado. |
Não |
sncQop |
O nível de Qualidade de Proteção SNC a aplicar. Aplica-se quando sncMode está ativado. Os valores permitidos são 1 (Autenticação), 2 (Integridade), 3 (Privacidade), 8 (Padrão), 9 (Máximo). |
Não |
connectVia |
O ambiente de execução de integração a ser usado para se conectar ao armazenamento de dados. Um tempo de execução de integração auto-hospedado é necessário, conforme mencionado anteriormente em Pré-requisitos. | Sim |
Exemplo 1: Conectar-se a um servidor de aplicativos SAP
{
"name": "SapTableLinkedService",
"properties": {
"type": "SapTable",
"typeProperties": {
"server": "<server name>",
"systemNumber": "<system number>",
"clientId": "<client ID>",
"userName": "<SAP user>",
"password": {
"type": "SecureString",
"value": "<Password for SAP user>"
}
},
"connectVia": {
"referenceName": "<name of Integration Runtime>",
"type": "IntegrationRuntimeReference"
}
}
}
Exemplo 2: Conectar-se a um servidor de mensagens SAP
{
"name": "SapTableLinkedService",
"properties": {
"type": "SapTable",
"typeProperties": {
"messageServer": "<message server name>",
"messageServerService": "<service name or port>",
"systemId": "<system ID>",
"logonGroup": "<logon group>",
"clientId": "<client ID>",
"userName": "<SAP user>",
"password": {
"type": "SecureString",
"value": "<Password for SAP user>"
}
},
"connectVia": {
"referenceName": "<name of integration runtime>",
"type": "IntegrationRuntimeReference"
}
}
}
Exemplo 3: Conectar usando SNC
{
"name": "SapTableLinkedService",
"properties": {
"type": "SapTable",
"typeProperties": {
"server": "<server name>",
"systemNumber": "<system number>",
"clientId": "<client ID>",
"userName": "<SAP user>",
"password": {
"type": "SecureString",
"value": "<Password for SAP user>"
},
"sncMode": 1,
"sncMyName": "<SNC myname>",
"sncPartnerName": "<SNC partner name>",
"sncLibraryPath": "<SNC library path>",
"sncQop": "8"
},
"connectVia": {
"referenceName": "<name of integration runtime>",
"type": "IntegrationRuntimeReference"
}
}
}
Para obter mais informações sobre o SNC, consulte Introdução ao SAP SNC para integrações RFC - Blog da SAP.
Propriedades do conjunto de dados
Para obter uma lista completa das seções e propriedades para definir conjuntos de dados, consulte Datasets. A seção a seguir fornece uma lista das propriedades suportadas pelo conjunto de dados da tabela SAP.
Para copiar dados de e para o serviço vinculado SAP BW Open Hub, as seguintes propriedades são suportadas:
| Propriedade | Descrição | Obrigatório |
|---|---|---|
type |
A type propriedade deve ser definida como SapTableResource. |
Sim |
tableName |
O nome da tabela SAP da qual copiar dados. | Sim |
Exemplo
{
"name": "SAPTableDataset",
"properties": {
"type": "SapTableResource",
"typeProperties": {
"tableName": "<SAP table name>"
},
"schema": [],
"linkedServiceName": {
"referenceName": "<SAP table linked service name>",
"type": "LinkedServiceReference"
}
}
}
Propriedades da atividade Copy
Para obter uma lista completa das seções e propriedades para definir atividades, consulte Pipelines. A seção a seguir fornece uma lista das propriedades suportadas pela fonte da tabela SAP.
Tabela SAP como origem
Para copiar dados de uma tabela SAP, as seguintes propriedades são suportadas:
| Propriedade | Descrição | Obrigatório |
|---|---|---|
type |
A type propriedade deve ser definida como SapTableSource. |
Sim |
rowCount |
O número de linhas a serem recuperadas. | Não |
rfcTableFields |
Os campos (colunas) a serem copiados da tabela SAP. Por exemplo, column0, column1. |
Não |
rfcTableOptions |
As opções para filtrar as linhas em uma tabela SAP. Por exemplo, COLUMN0 EQ 'SOMEVALUE'. Consulte também a tabela do operador de consulta SAP mais adiante neste artigo. |
Não |
customRfcReadTableFunctionModule |
Um módulo de função RFC personalizado que pode ser usado para ler dados de uma tabela SAP. Você pode usar um módulo de função RFC personalizado para definir como os dados são recuperados do seu sistema SAP e retornados ao serviço. O módulo de função personalizado deve ter uma interface implementada (importação, exportação, tabelas) semelhante à /SAPDS/RFC_READ_TABLE2, que é a interface padrão usada pelo serviço. |
Não |
partitionOption |
O mecanismo de partição para ler a partir de uma tabela SAP. As opções suportadas incluem:
|
Não |
partitionColumnName |
O nome da coluna usada para particionar os dados. | Não |
partitionUpperBound |
O valor máximo da coluna especificada em partitionColumnName que será usado para continuar com o particionamento. |
Não |
partitionLowerBound |
O valor mínimo da coluna especificada em partitionColumnName que será usado para continuar com o particionamento. (Nota: partitionLowerBound não pode ser "0" quando a opção de partição é PartitionOnInt) |
Não |
maxPartitionsNumber |
O número máximo de partições para dividir os dados. O valor predefinido é 1. | Não |
sapDataColumnDelimiter |
O único caractere usado como delimitador passou para o SAP RFC para dividir os dados de saída. | Não |
Gorjeta
Se a sua tabela SAP tiver um grande volume de dados, como várias mil milhões de linhas, use partitionOption e partitionSetting para dividir os dados em partições menores. Nesse caso, os dados são lidos por partição e cada partição de dados é recuperada do seu servidor SAP por meio de uma única chamada RFC.
Tomando partitionOption como partitionOnInt exemplo, o número de linhas em cada partição é calculado com esta fórmula: (total de linhas situadas entre partitionUpperBound e partitionLowerBound)/maxPartitionsNumber.
Para carregar partições de dados em paralelo e acelerar a cópia, o nível de paralelismo é controlado pela configuração parallelCopies na atividade de cópia. Por exemplo, se você definir parallelCopies como quatro, o serviço gerará e executará simultaneamente quatro consultas com base na opção e nas configurações de partição especificadas, e cada consulta recuperará uma parte dos dados da tabela SAP. Recomendamos vivamente que faça maxPartitionsNumber um múltiplo do valor da propriedade parallelCopies. Ao copiar dados para o armazenamento de dados baseado em arquivo, também é recomendável gravar em uma pasta como vários arquivos (especifique apenas o nome da pasta), caso em que o desempenho é melhor do que gravar em um único arquivo.
Gorjeta
O BASXML é ativado por padrão para este conector de tabela SAP dentro do serviço.
No rfcTableOptions, você pode usar os seguintes operadores de consulta SAP comuns para filtrar as linhas:
| Operador | Descrição |
|---|---|
EQ |
Igual a |
NE |
Diferente de |
LT |
Menor que |
LE |
Menor que ou igual a |
GT |
Maior que |
GE |
Maior que ou igual a |
IN |
Como em TABCLASS IN ('TRANSP', 'INTTAB') |
LIKE |
Como em LIKE 'Emma%' |
Exemplo
"activities":[
{
"name": "CopyFromSAPTable",
"type": "Copy",
"inputs": [
{
"referenceName": "<SAP table input dataset name>",
"type": "DatasetReference"
}
],
"outputs": [
{
"referenceName": "<output dataset name>",
"type": "DatasetReference"
}
],
"typeProperties": {
"source": {
"type": "SapTableSource",
"partitionOption": "PartitionOnInt",
"partitionSettings": {
"partitionColumnName": "<partition column name>",
"partitionUpperBound": "2000",
"partitionLowerBound": "1",
"maxPartitionsNumber": 500
}
},
"sink": {
"type": "<sink type>"
},
"parallelCopies": 4
}
}
]
Juntar tabelas SAP
Atualmente, o conector SAP Table suporta apenas uma única tabela com o módulo de função padrão. Para obter os dados associados de várias tabelas, você pode aproveitar a propriedade customRfcReadTableFunctionModule no conector SAP Table seguindo as etapas abaixo:
- Escreva um módulo de função personalizado, que pode tomar uma consulta como OPTIONS e aplicar sua própria lógica para recuperar os dados.
- Para o "Módulo de função personalizado", insira o nome do módulo de função personalizado.
- Para as "Opções de tabela RFC", especifique a instrução de junção de tabelas para utilizar no seu módulo de função como OPTIONS, tal como "
<TABLE1>INNER JOIN<TABLE2>ON COLUMN0".
Abaixo encontra-se um exemplo:
Gorjeta
Você também pode considerar ter os dados associados agregados no VIEW, que é suportado pelo conector SAP Table. Você também pode tentar extrair tabelas relacionadas para integrar no Azure (por exemplo, Armazenamento do Azure, Banco de Dados SQL do Azure) e, em seguida, usar o Fluxo de Dados para prosseguir com novas junções ou filtragens.
Criar módulo de função personalizado
Para a tabela SAP, atualmente suportamos a propriedade customRfcReadTableFunctionModule na fonte de cópia, o que permite que você aproveite sua própria lógica e processe dados.
Como orientação rápida, aqui estão alguns requisitos para começar a usar o "Módulo de função personalizado":
Definição:
Exporte dados para uma das tabelas abaixo:
Abaixo estão ilustrações de como o conector de tabela SAP funciona com o módulo de funções personalizado.
Construa conexão com o servidor SAP via SAP NCO.
Invoque "Módulo de função personalizado" com os parâmetros definidos abaixo:
- QUERY_TABLE: o nome da tabela definida no conjunto de dados da Tabela SAP;
- Delimitador: o delimitador definido no SAP Table Source;
- ROWCOUNT/Option/Fields: o Rowcount/Aggregated Option/Fields que você definiu na origem da tabela.
Obtenha o resultado e analise os dados das seguintes maneiras:
Analise o valor na tabela Fields para obter os esquemas.
Obtenha os valores da tabela de saída para ver qual tabela contém esses valores.
Obtenha os valores no OUT_TABLE, analise os dados e escreva-os no coletor.
Mapeamentos de tipo de dados para uma tabela SAP
Quando você copia dados de uma tabela SAP, os mapeamentos a seguir são usados dos tipos de dados da tabela SAP para os tipos de dados provisórios usados no serviço. Para saber como a atividade de cópia mapeia o esquema de origem e o tipo de dados para o coletor, consulte Mapeamentos de esquema e tipo de dados.
| Tipo SAP ABAP | Tipo de dados provisórios de serviço |
|---|---|
C (String) |
String |
I (Inteiro) |
Int32 |
F (Flutuar) |
Double |
D (Data) |
String |
T (Tempo) |
String |
P (BCD embalado, moeda, decimal, Qty) |
Decimal |
N (Numérico) |
String |
X (Binário e Bruto) |
String |
Propriedades da atividade de consulta
Para saber detalhes sobre as propriedades, verifique Atividade de pesquisa.
Conteúdos relacionados
Para obter uma lista dos armazenamentos de dados suportados como fontes e destinos pela atividade de cópia, consulte Armazenamentos de dados suportados.