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:
- Uma interface de chamada para programas ABAP
- 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.