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 noFIELDNAMEcoluna, 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
DATAcé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 oDELIMITERcampo. Digite este script para codificar o delimitador:<trans> "|" </trans> -
Na estrutura de destino, em
INPUT>RFC_READ_TABLE, clique duas vezes para abrir oQUERY_TABLEcampo. 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 oFIELDNAMEcampo. 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
FIELDSe selecionando Criar pasta extra para mapeamentos. Faça isso para cada campo adicional e insira o script para cadaFIELDNAMEseguindo o mesmo formato do passo anterior:
-
Na estrutura de destino, em
INPUT>RFC_READ_TABLE > OPTIONS, clique duas vezes para abrir oTEXTcampo. Digite este script para a consultar:<trans> "ORT01 EQ 'PHILADELPHIA'" </trans>Dica
O
RFC_READ_TABLEa 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 chamadoConditioncomo o primeiro elemento sob o nó:
-
Clique duas vezes no
Conditionelemento 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_TABLEou 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_TABLEtem um limite de linha de 512 caracteres. Ou seja, cada linha de dados não pode exceder 512 caracteres. -
Float: o RFC
RFC_READ_TABLEnão retorna nenhum campo que contenha um tipo de dados float. O BAPIBPP_RFC_READ_TABLEnão tem essa limitação. -
ROWSKIPSeROWCOUNT: O RFCRFC_READ_TABLEretorna 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 camposROWSKIPSeROWCOUNTpara 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 = 500busca os primeiros 500 registros,ROWSKIPS = 501, ROWCOUNT = 500obté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: OOPTIONcampo 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_TABLEnão retorna mensagens de erro. Erros ao usar o BAPIBPP_RFC_READ_TABLEsã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 EQigual a NEdiferente de LTmenos de LEmenor ou igual a GTmaior que GEmaior ou igual a LIKEcomo em LIKE `Emma%`