Guia para Usar RFC_READ_TABLE para Consultar Tabelas SAP
Introdução
Este guia para o Harmony SAP Connector no Design Studio aborda a consulta de tabelas SAP usando a função RFC RFC_READ_TABLE
. Para demonstrar a consulta de dados SAP, usamos a tabela SAP padrão KNA1 (Dados Gerais no Cadastro de Clientes) para consultar IDs e endereços de clientes na Filadélfia.
Esta página está organizada em três partes:
-
Parte 1: Criando a Operação SAP
Primeiro, usamos o Design Studio SAP Connector para criar um SAP Endpoint e uma Função SAP. Usando a função SAP, criamos uma transformação de solicitação e uma transformação de resposta e, em seguida, construímos uma operação usando essas estruturas. (Os detalhes dos mapeamentos de transformação ainda precisam ser concluídos.)
-
Parte 2: Modelando a Consulta na Instância SAP
A seguir, para fins de modelagem da consultar que queremos criar no Design Studio, utilizamos o Function Builder do SAP para testar a função RFC na instância SAP.
-
Parte 3: Concluindo a operação SAP
Por fim, mapeamos os campos das transformações request e response, testamos a operação para visualizar os dados que serão recuperados e executamos a operação para recuperar os dados do SAP.
No final deste guia, também fornecemos dicas para consultar dados SAP, incluindo considerações como limitações de uso deste RFC e uma alternativa de uso de um BAPI.
Parte 1: Criando a Operação SAP
Primeiro, usamos o Design Studio SAP Connector para criar a estrutura de uma operação SAP usando a função RFC RFC_READ_TABLE
.
Os detalhes dos mapeamentos de transformação serão concluídos na Parte 3: Concluindo a operação SAP.
Siga estas etapas para criar a estrutura da operação SAP:
- Crie o Endpoint SAP
- Criar a Função SAP
- Criar a Transformação de solicitação
- Crie a Transformação de resposta
- Criar a Operação
Criar o Endpoint SAP
Crie um SAP Endpoint com as informações que permitirão que o Harmony se conecte à instância SAP.
Criar a Função SAP
Crie uma Função SAP com esta configuração:
-
Na etapa Tipo, selecione RFC.
-
Na etapa Função, selecione
RFC_READ_TABLE
.
Após clicar em Concluir, a tela de configuração da função SAP exibe as estruturas de solicitação e resposta geradas, mostradas na próxima etapa.
Criar a Transformação de Solicitação
-
Na tela de configuração da função SAP, clique em Criar solicitação:
-
Na próxima tela, use o menu suspenso Fonte para selecionar a fonte da transformação. Para este guia, selecione (Nenhum) como a origem, pois você usará valores codificados posteriormente ao configurar a transformação em Parte 3: Concluindo a operação SAP. Clique em Concluir para criar a transformação de solicitação:
-
A tela de configuração da transformação de solicitação é exibida:
Criar a Transformação de Resposta
-
Na árvore do projeto à esquerda em Connectors > SAP > SAP Functions > RFC_READ_TABLE, localize a função SAP que você criou em Create the SAP Function. Clique com o botão direito do mouse na função e selecione Criar Transformação de resposta.
-
Na próxima tela, use o menu suspenso Destino para selecionar o destino da transformação. Para este guia, selecione Texto como destino, pois você criará um arquivo de texto simples para usar como destino. Clique em Avançar:
-
Na próxima tela, use o menu suspenso Available File Format Definitions para selecionar Create New:
-
Uma área para criar um novo formato de arquivo é exibida. Para criar um novo arquivo de texto para fins deste guia, digite um Nome de Endereço do cliente. Em Create Manually, selecione Simple Text Document como o tipo de documento e Character Delimited como o formato do documento e clique em Create Manually:
-
Em Define Segment Properties, adicione campos um de cada vez clicando em New e inserindo o Field Name (Customer, Name, City, Region e Street). Clique em Concluir para criar a transformação de resposta:
-
A tela de configuração da transformação de resposta é exibida:
Criar a Operação
-
Localize a Função SAP que você criou anteriormente na árvore do projeto à esquerda em Conectores > SAP > Funções SAP > RFC_READ_TABLE. Clique com o botão direito na função e selecione Create Operation.
-
Uma operação usando a função SAP é criada com espaços reservados para outras partes da operação:
-
Clique com o botão direito do mouse no espaço reservado Solicitar e selecione Selecionar Transformação existente. Na caixa de diálogo, selecione a transformação de solicitação que você criou anteriormente (RFC_READ_TABLE - Request) e clique em OK.
Nota
O marcador de posição Source é removido automaticamente, pois a transformação de solicitação foi definida anteriormente para ter uma fonte de (None), pois os valores codificados serão configurados em um etapa posterior.
-
Clique com o botão direito do mouse no espaço reservado Resposta e selecione Selecionar Transformação existente. Na caixa de diálogo, selecione a transformação de resposta que você criou anteriormente (RFC_READ_TABLE - Response) e clique em OK.
-
Clique com o botão direito do mouse no espaço reservado Destino e selecione Criar novo destino. Insira um Nome de RFC_READ_TABLE e selecione um Tipo de Armazenamento temporário. Em Connection Parameters, forneça um Filename como output.txt. Salve o novo alvo:
-
-
Retorne à operação na árvore do projeto à esquerda em Operations > RFC_READ_TABLE. Se necessário, você pode redefinir o layout da operação usando
Control+F5
(Windows) ouCommand+F5
(macOS).
Parte 2: Modelando a Consulta na Instância SAP
Em seguida, para fins de modelagem da consultar que queremos criar no Design Studio, usamos o Function Builder da SAP para testar a função RFC_READ_TABLE.
-
Efetue login na GUI do SAP.
-
Na caixa de pesquisa, insira o código de transação SAP SE16N.
-
A tela Exibição geral da tabela é exibida. Forneça um nome de Tabela de KNA1 para exibir a tabela e seus campos. Os nomes na coluna Technical Name são usados pelo RFC:
-
Na caixa de pesquisa, insira o código de transação SAP SE37.
-
O Function Builder: Initial Screen é exibido. Insira um Módulo de Função de RFC_READ_TABLE. Em seguida, clique em Exibir:
-
A tela Function Builder: Exibir RFC_READ_TABLE é exibida. Use o menu para selecionar Testar/Executar:
-
A tela Test Function Module: Initial Screen é exibida. Uma vez configurado conforme descrito abaixo, a tela fica assim:
-
Na primeira tabela, insira estes valores na coluna Valor:
-
QUERY_TABLE
: KNA1 -
DELIMITER
: |Nota
O delimitador de canal é necessário, pois a resposta deste RFC não é estruturada.
-
-
Na segunda tabela, siga estas etapas para configurar a coluna Valor para estes campos:
-
OPTIONS
: Clique na célula de valor (0 Entradas) para exibir a tela Editor de Estrutura: Alterar OPÇÕES da Entrada 1. NoTEXT
área, insira as condições da consultar usando a versão SAP do SQL (consulte Dicas para consultar dados SAP no final desta página para informações do operador): -
FIELDS
: Clique na célula de valor (0 Entries) para exibir a tela Editor de Estrutura: Alterar CAMPOS da Entrada 1. Adicione essas entradas noFIELDNAME
coluna, usando o menu para selecionar New Line para cada nova linha:Nota
Os nomes dos campos usam os nomes técnicos mostrados na Parte 2, Etapa 1.
-
-
-
Na tela Test Function Module: Initial Screen, clique no botão Execute:
-
A tela Test Function Module: Result Screen é exibida. Clique no
DATA
célula de valor da tabela para visualizar os resultados da consultar: -
A tela Editor de Estrutura: Exibir DADOS da Entrada 1 é exibida, mostrando os IDs e as informações de endereço dos clientes na Filadélfia:
Parte 3: Concluindo a Operação SAP
Nesta etapa, completamos os detalhes da operação SAP que criamos em Criando a operação SAP e execute a operação para recuperar os dados do SAP:
- Configurar a Transformação de solicitação
- Configurar a Transformação de resposta
- Implantar o Projeto
- Teste a operação
- Executar a Operação
Configurar a Transformação de Solicitação
-
Na árvore do projeto à esquerda em Transformações > RFC_READ_TABLE - Request, clique duas vezes para abrir a transformação de solicitação que você criou anteriormente.
-
Conclua o mapeamento de transformação da seguinte forma:
-
Na estrutura de destino, em
INPUT
>RFC_READ_TABLE
, clique duas vezes para abrir oDELIMITER
campo. Digite este script para codificar o delimitador:<trans> "|" </trans>
-
Na estrutura de destino, em
INPUT
>RFC_READ_TABLE
, clique duas vezes para abrir oQUERY_TABLE
campo. Digite este script para usar a tabela KNA1:<trans> "KNA1" </trans>
-
Na estrutura de destino, em
INPUT
>RFC_READ_TABLE > FIELDS
, clique duas vezes para abrir oFIELDNAME
campo. Digite este script para o primeiro nome de campo:<trans> "KUNNR" </trans>
-
Como há mais campos para adicionar, mas apenas uma pasta, adicione outras pastas clicando com o botão direito
FIELDS
e selecionando Criar pasta extra para mapeamentos. Faça isso para cada campo adicional e insira o script para cadaFIELDNAME
seguindo o mesmo formato do passo anterior: -
Na estrutura de destino, em
INPUT
>RFC_READ_TABLE > OPTIONS
, clique duas vezes para abrir oTEXT
campo. Digite este script para a consultar:<trans> "ORT01 EQ 'PHILADELPHIA'" </trans>
Dica
O
RFC_READ_TABLE
a função tem um limite de 75 caracteres por linha de opção, portanto, se sua consultar exceder isso, você poderá adicionar pastas adicionais conforme descrito na etapa anterior.
-
-
Quando os mapeamentos estiverem concluídos, a estrutura da solicitação deve ser semelhante a esta:
Configurar a Transformação de Resposta
-
Na árvore do projeto à esquerda em Transformações > RFC_READ_TABLE - Response, clique duas vezes para abrir a transformação de resposta que você criou anteriormente. Conclua o mapeamento de transformação da seguinte maneira:
-
Na estrutura de destino, clique com o botão direito do mouse
_flat_
nó e selecione Adicionar condição para adicionar o elemento de dados chamadoCondition
como o primeiro elemento sob o nó: -
Clique duas vezes no
Condition
elemento de dados e insira este script para dividir a saída em campos individuais:<trans> $arr=Split(jbroot$jbresponse$OUTPUT$RFC_READ_TABLE.DATA.WA$, "|"); true </trans>
-
Clique duas vezes em cada campo restante da estrutura de resposta e preencha cada script com as posições da matriz:
Customer<trans> $arr[0] </trans>
Name<trans> $arr[2] </trans>
City<trans> $arr[4] </trans>
Region<trans> $arr[6] </trans>
Street<trans> $arr[8] </trans>
-
-
Quando os mapeamentos estiverem concluídos, a estrutura de resposta deve ser semelhante a esta:
Implantar o Projeto
Na barra de ferramentas superior, clique no ícone de implantar e implantar tudo no projeto.
Teste a Operação
No canto inferior direito da transformação de resposta, clique no ícone de teste de operação para testar a operação.
Os dados das tabelas SAP são exibidos em cada linha na transformação de resposta, mostrando como os dados seriam preenchidos se a operação fosse executada:
Execute a Operação
Abra a operação e clique no ícone executar no canto superior direito.
O Operation Monitor deve indicar que a operação foi executada com sucesso. Agora podemos verificar o arquivo de saída e ver que os dados consultados foram gravados no arquivo:
Dicas para Consultar Dados SAP
Esta seção fornece dicas para consultar dados SAP:
-
RFC ou BAPI: Se você tiver limitações usando o RFC
RFC_READ_TABLE
, existem outras opções, como usar o BAPIBBP_RFC_READ_TABLE
ou usando um RFC personalizado. As etapas para usar um BAPI ou RFC personalizado são semelhantes no Design Studio às etapas apresentadas para o RFCRFC_READ_TABLE
. -
Limite de linha: o RFC
RFC_READ_TABLE
tem um limite de linha de 512 caracteres. Ou seja, cada linha de dados não pode exceder 512 caracteres. -
Float: o RFC
RFC_READ_TABLE
não retorna nenhum campo que contenha um tipo de dados float. O BAPIBPP_RFC_READ_TABLE
não tem essa limitação. -
ROWSKIPS
eROWCOUNT
: O RFCRFC_READ_TABLE
retorna um máximo de 999999 registros de uma só vez. Como isso pode exceder as limitações do número de registros que podem ser processados por um endpoint em uma operação abaixo, você pode querer usar os camposROWSKIPS
eROWCOUNT
para implementar uma forma de fragmentação de dados.ROWSKIPS
é o número da linha inicial eROWCOUNT
é o número de linhas a serem buscadas. Por exemplo,ROWSKIPS = 0, ROWCOUNT = 500
busca os primeiros 500 registros,ROWSKIPS = 501, ROWCOUNT = 500
obtém os próximos 500 registros e assim por diante. Se deixado em0
, então nenhuma fragmentação de dados é implementada. O valor máximo para qualquer um desses campos é999999
. -
OPTION
: OOPTION
campo contém a condição de consultar. Há um limite de 75 caracteres para o comprimento da consultar, portanto, se a consultar exceder esse limite, pastas adicionais deverão ser criadas para conter toda a string de consultar. -
Tratamento de erros: o RFC
RFC_READ_TABLE
não retorna mensagens de erro. Erros ao usar o BAPIBPP_RFC_READ_TABLE
são retornados por meio do Conector SAP:-
Se o nome da tabela for inválido:
(126) TABLE_NOT_AVAILABLE: TABLE_NOT_AVAILABLE Message 029 of class SV type E, Par[1]: DD5T
-
Se houver uma condição inválida:
JCO_ERROR_SYSTEM_FAILURE: A condition specified dynamically has an unexpected format.
-
Se um nome de campo for inválido:
(126) FIELD_NOT_VALID: FIELD_NOT_VALID
-
-
Visualizações: Criando visualizações no SAP pode ser útil para lidar com tabelas unidas.
-
Operadores de consulta: a linguagem de consultar SAP usa estes operadores:
Operador Descrição EQ
igual a NE
diferente de LT
menos de LE
menor ou igual a GT
maior que GE
maior ou igual a LIKE
como em LIKE `Emma%`