Chamada de função remota (RFC) no tutorial SAP

Índice:

Anonim

O que é RFC?

RFC é um mecanismo que permite que aplicativos de negócios se comuniquem e troquem informações (em formatos predefinidos) com outros sistemas. RFC significa 'Remote Function Call'

RFC consiste em duas interfaces:

  1. Uma interface de chamada para programas ABAP
  2. Uma interface de chamada para programas não SAP.

Qualquer programa ABAP pode chamar uma função remota usando a instrução CALL FUNCTION… DESTINATION . O parâmetro DESTINATION informa ao sistema SAP que a função chamada é executada em um sistema diferente dos chamadores.Sintaxe-

FUNÇÃO DE CHAMADA 'função remota'DESTINO destEXPORTANDO f1 =IMPORTANDO f2 =TABELAS t1 =EXCEÇÕES

Os destinos lógicos são definidos via transação SM59 e armazenados na Tabela RFCDES
Funções da interface RFC

  • Converter todos os dados de parâmetro para a representação necessária no sistema remoto
  • Chamar as rotinas de comunicação necessárias para falar com o sistema remoto.
  • Manipular erros de comunicação e notificar o chamador, se desejar (usando o parâmetro EXCEPTIONS da FUNÇÃO CALL).


RFC é um protocolo SAP para lidar com comunicações entre sistemas para simplificar a programação relacionada. É o processo de chamar um módulo de função que reside em uma máquina diferente do programa do chamador. Os RFCs também podem ser usados ​​para chamar um programa diferente na mesma máquina, mas geralmente é usado quando os módulos / programas de função 'chamando' e 'chamados' estão sendo executados em máquinas separadas.


No SAP, o sistema de interface RFC é usado para configurar conexões RFC entre diferentes sistemas SAP e também entre um sistema SAP e um sistema externo (não SAP).

Deve saber detalhes sobre RFC

  • SAP usa protocolo CPIC (interface de programação comum para comunicação) para transferir dados entre sistemas. É um protocolo específico do SAP. Chamada de função remota (RFC) é uma interface de comunicação baseada em CPI-C, mas com mais funções e mais fácil para os programadores de aplicativos usarem
  • As funções da biblioteca RFC suportam a linguagem de programação C e Visual Basic (em plataformas Windows)
  • As conexões RFC sempre podem ser usadas em todo o sistema. Isso significa que uma conexão RFC definida no cliente 000 também pode ser usada no cliente 100 (sem qualquer diferença).
  • RFC é o protocolo para chamar sub-rotinas especiais (módulos de função) na rede. Módulos de função são comparáveis ​​com funções C ou procedimentos PASCAL. Eles têm uma interface definida por meio da qual dados, tabelas e códigos de retorno podem ser trocados. Os módulos de função são administrados no sistema R / 3 em sua própria biblioteca de funções, chamada de Function Builder.
  • O Function Builder (transação SE37) fornece aos programadores de aplicativos um ambiente útil para programar, documentar e testar módulos de função que podem ser chamados localmente ou remotamente. O sistema R / 3 gera automaticamente o código adicional (stub RFC) necessário para chamadas remotas.
  • Você atualiza os parâmetros para conexões RFC usando a transação SM59. O sistema R / 3 também é fornecido com um RFC-SDK (Kit de desenvolvimento de software) que usa bibliotecas C extensivas para permitir que programas externos sejam conectados ao sistema R / 3.
  • A única diferença entre uma chamada remota de um módulo de função para outro servidor e uma chamada local é um parâmetro especial (destino) que especifica o servidor de destino no qual o programa deve ser executado.

As vantagens do RFC:

O RFC ajuda a reduzir os esforços dos programadores, permitindo que evitem o redesenvolvimento de módulos e métodos em sistemas remotos. É capaz o suficiente para:

  • Converta os dados no formato compreensível pelo sistema remoto (destino).
  • Converta os dados no formato compreensível pelo sistema remoto (destino).
  • Chame certas rotinas que são necessárias para iniciar a comunicação com o sistema remoto.
  • Trate os erros que podem ocorrer no processo de comunicação.

Tipos de RFC:


Síncrono

Requer que ambos os sistemas (cliente e servidor) estejam disponíveis no momento da comunicação ou transferência de dados. É o tipo mais comum e é necessário quando o resultado é exigido imediatamente após a execução de sRFC.
sRFC é um meio de comunicação entre sistemas onde são necessários reconhecimentos. Os recursos do Sistema de Origem aguardam no sistema de destino e garantem que entreguem a mensagem / dados com ACKD. Os dados são consistentes e confiáveis ​​para comunicação.
O problema é que, se o sistema de destino não estiver disponível, os recursos do sistema de origem aguardam até que o sistema de destino esteja disponível. Isso pode fazer com que os processos do sistema de origem entrem no modo Sleep / RFC / CPIC nos sistemas de destino e, portanto, bloqueie esses recursos.
Usado para

  • Para comunicação entre sistemas
  • Para comunicação entre o SAP Web Application Server para SAP GUI

Assíncrono

É a comunicação entre sistemas em que não são necessários reconhecimentos (é semelhante à entrega de cartão postal). Não exige que os dois sistemas estejam disponíveis no momento da execução e o resultado não precisa ser imediatamente enviado de volta ao sistema de chamada .

O recurso Sistema de Origem não espera pelo sistema de destino enquanto eles entregam a mensagem / dados sem esperar por qualquer confirmação. Não é confiável para comunicação, pois os dados podem ser perdidos se o sistema de destino não estiver disponível. Usado para -

  • Para comunicação entre sistemas
  • Para processamento paralelo

Transacional

É uma forma especial de aRFC. A RFC transacional garante um tratamento semelhante a uma transação das etapas de processamento que eram originalmente autônomas.

RFC transacional é um método de comunicação assíncrona que executa o módulo de função chamado no servidor RFC apenas uma vez, mesmo se os dados forem enviados várias vezes devido a algum problema de rede. O sistema remoto não precisa estar disponível no momento em que o programa cliente RFC está executando um tRFC. O componente tRFC armazena a função RFC chamada, junto com os dados correspondentes, no banco de dados SAP sob um ID de transação exclusivo (TID). tRFC é semelhante a aRFC, pois não espera no sistema de destino (semelhante a uma postagem registrada). Se o sistema não estiver disponível, ele gravará os dados em tabelas aRFC com um ID de transação (SM58) que é selecionado pelo planejador RSARFCSE (que é executado a cada 60 segundos). Usado para-

  • Extensão de RFC assíncrono
  • Para comunicação segura entre sistemas

Enfileiradas

O RFC enfileirado é uma extensão do tRFC. Ele também garante que as etapas individuais sejam processadas em sequência.

Para garantir que várias LUWs (Unidade Lógica de Trabalho / Transação) sejam processadas na ordem especificada pelo aplicativo. O tRFC pode ser serializado usando filas (filas de entrada e saída). Daí o nome RFC enfileirado (qRFC). Usado para-

  • Extensão da RFC Transacional
  • Para uma sequência de processamento definida
  • A implementação de qRFC é recomendada se você quiser garantir que várias transações sejam processadas em uma ordem predefinida.

Tipos de conexões RFC


Tipo 3 - as entradas especificam a conexão entre os sistemas ABAP. Aqui, devemos especificar o nome do host / endereço IP. Você pode, entretanto, especificar as informações de logon, se desejar. Isso é aplicável para ambos os tipos de RFCs, entre sistemas ABAP e chamadas externas para sistemas ABAPTipo I - as entradas especificam sistemas ABAP conectados ao mesmo banco de dados que o sistema atual. Essas entradas são predefinidas e não podem ser modificadas. Nome de entrada de exemplo: ws0015_K18_24

  • ws0015 = nome do host
  • K18 = nome do sistema (nome do banco de dados)
  • 24 = nome do serviço TCP

Os destinos do tipo T são conexões com programas externos que usam a API RFC para receber RFCs. O tipo de ativação pode ser Iniciar ou Registro. Se for Iniciar, você deve especificar o nome do host e o nome do caminho do programa a ser iniciado.

Como codificar um RFC?

1. Na guia de atributos do módulo de função (código de transação SE37), defina o tipo de processamento como módulo habilitado para Remoto para criar um módulo de função remoto.


2. Escreva o código para o módulo de função.


3. Defina o destino do servidor RFC no sistema cliente RFC que chama a função remota (via transação SM59).


4.Declarando Parâmetros : Todos os campos de parâmetros de um módulo de função remota devem ser definidos como campos de referência, ou seja, como os campos do Dicionário ABAP.5. Exceções: O sistema gera COMMUNICATION_FAILURE e SYSTEM_FAILURE internamente. Você pode gerar exceções em uma função remota da mesma forma que faria em uma função chamada localmente.

Depurar chamadas de função remota

  • Não é possível depurar uma chamada de função remota para outro sistema.
  • No entanto, ao testar chamadas RFC ABAP para ABAP, você pode usar o depurador ABAP para monitorar a execução da função RFC no sistema remoto.
  • Com chamadas remotas, o depurador ABAP (incluindo a interface de depuração) é executado no sistema local. Valores de dados e outras informações de execução para a função remota são passados ​​do sistema remoto.