Ir para o conteúdo

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:

  1. Crie o Endpoint SAP
  2. Criar a Função SAP
  3. Criar a Transformação de solicitação
  4. Crie a Transformação de resposta
  5. 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

  1. Na tela de configuração da função SAP, clique em Criar solicitação:

    anexo

  2. 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:

    anexo

  3. A tela de configuração da transformação de solicitação é exibida:

    anexo

Criar a Transformação de Resposta

  1. 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.

  2. 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:

    anexo

  3. Na próxima tela, use o menu suspenso Available File Format Definitions para selecionar Create New:

    anexo

  4. 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:

    anexo

  5. 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:

    anexo

  6. A tela de configuração da transformação de resposta é exibida:

    anexo

Criar a Operação

  1. 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.

  2. Uma operação usando a função SAP é criada com espaços reservados para outras partes da operação:

    anexo

    1. 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.

    2. 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.

    3. 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:

      anexo

  3. 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) ou Command+F5 (macOS).

    anexo

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.

  1. Efetue login na GUI do SAP.

  2. Na caixa de pesquisa, insira o código de transação SAP SE16N.

  3. 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:

    anexo

  4. Na caixa de pesquisa, insira o código de transação SAP SE37.

  5. O Function Builder: Initial Screen é exibido. Insira um Módulo de Função de RFC_READ_TABLE. Em seguida, clique em Exibir:

    anexo

  6. A tela Function Builder: Exibir RFC_READ_TABLE é exibida. Use o menu para selecionar Testar/Executar:

    anexo

  7. A tela Test Function Module: Initial Screen é exibida. Uma vez configurado conforme descrito abaixo, a tela fica assim:

    anexo

    1. Na primeira tabela, insira estes valores na coluna Valor:

      1. QUERY_TABLE: KNA1

      2. DELIMITER: |

        Nota

        O delimitador de canal é necessário, pois a resposta deste RFC não é estruturada.

    2. Na segunda tabela, siga estas etapas para configurar a coluna Valor para estes campos:

      1. OPTIONS: Clique na célula de valor (0 Entradas) para exibir a tela Editor de Estrutura: Alterar OPÇÕES da Entrada 1. No TEXT á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):

        anexo

      2. FIELDS: Clique na célula de valor (0 Entries) para exibir a tela Editor de Estrutura: Alterar CAMPOS da Entrada 1. Adicione essas entradas no FIELDNAME coluna, usando o menu para selecionar New Line para cada nova linha:

        anexo

        Nota

        Os nomes dos campos usam os nomes técnicos mostrados na Parte 2, Etapa 1.

  8. Na tela Test Function Module: Initial Screen, clique no botão Execute:

    anexo

  9. A tela Test Function Module: Result Screen é exibida. Clique no DATA célula de valor da tabela para visualizar os resultados da consultar:

    anexo

  10. 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:

    anexo

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:

  1. Configurar a Transformação de solicitação
  2. Configurar a Transformação de resposta
  3. Implantar o Projeto
  4. Teste a operação
  5. Executar a Operação

Configurar a Transformação de Solicitação

  1. 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.

  2. Conclua o mapeamento de transformação da seguinte forma:

    1. Na estrutura de destino, em INPUT > RFC_READ_TABLE, clique duas vezes para abrir o DELIMITER campo. Digite este script para codificar o delimitador:

      <trans>
      "|"
      </trans>
      
    2. Na estrutura de destino, em INPUT > RFC_READ_TABLE, clique duas vezes para abrir o QUERY_TABLE campo. Digite este script para usar a tabela KNA1:

      <trans>
      "KNA1"
      </trans>
      
    3. Na estrutura de destino, em INPUT > RFC_READ_TABLE > FIELDS, clique duas vezes para abrir o FIELDNAME campo. Digite este script para o primeiro nome de campo:

      <trans>
      "KUNNR"
      </trans>
      
    4. 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 cada FIELDNAME seguindo o mesmo formato do passo anterior:

      anexo

    5. Na estrutura de destino, em INPUT > RFC_READ_TABLE > OPTIONS, clique duas vezes para abrir o TEXT 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.

  3. Quando os mapeamentos estiverem concluídos, a estrutura da solicitação deve ser semelhante a esta:

    anexo

Configurar a Transformação de Resposta

  1. 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:

    1. 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 chamado Condition como o primeiro elemento sob o nó:

      anexo

    2. 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>
      
    3. 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>
      
  2. Quando os mapeamentos estiverem concluídos, a estrutura de resposta deve ser semelhante a esta:

    anexo

Implantar o Projeto

Na barra de ferramentas superior, clique no ícone de implantar anexo 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 anexo 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:

anexo

Execute a Operação

Abra a operação e clique no ícone executar anexo 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:

anexo

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 BAPI BBP_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 RFC RFC_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 BAPI BPP_RFC_READ_TABLE não tem essa limitação.

  • ROWSKIPS e ROWCOUNT: O RFC RFC_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 campos ROWSKIPS e ROWCOUNT para implementar uma forma de fragmentação de dados.

    ROWSKIPS é o número da linha inicial e ROWCOUNT é 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 em 0, então nenhuma fragmentação de dados é implementada. O valor máximo para qualquer um desses campos é 999999.

  • OPTION: O OPTION 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 BAPI BPP_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%`