Chamada de Função Remota (RFC) em SAP Tutorial

O que é RFC?

RFC é um mecanismo que permite que aplicações de negócios se comuniquem e troquem informações (em formatos pré-definidos) com outros sistemas. RFC significa 'Chamada de Função Remota'

RFC consiste em duas interfaces:

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

Qualquer Programa ABAP pode chamar uma função remota usando o FUNÇÃO DE CHAMADA...DESTINO demonstração. O DESTINO parâmetro diz ao SAP Sistema em que a função chamada é executada em um sistema diferente do chamador.

Sintaxe-

CALL FUNCTION 'remotefunction'

DESTINATION dest

EXPORTING f1 =

IMPORTING f2 =

TABLES t1 =

EXCEPTIONS

Os destinos lógicos são definidos por meio de transação SM59 e armazenado na tabela RFCDES

Funções da interface RFC

  • Convertendo todos os dados de parâmetros para a representação necessária no sistema remoto
  • Chamar as rotinas de comunicação necessárias para conversar com o sistema remoto.
  • Tratamento de erros de comunicação e notificação do chamador, se desejado (usando o parâmetro EXCEPTIONS da CALL FUNCTION).

Funções da interface RFC

RFC é um SAP protocolo 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 chamador. RFCs também podem ser usados ​​para chamar um programa diferente na mesma máquina, mas geralmente são usados ​​quando módulos/programas de função 'chamados' e 'chamados' estão sendo executados em máquinas separadas.

Funções da interface RFC

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

Deve saber detalhes sobre RFC

  • SAP Usa protocolo CPIC (Common Programming Interface for Communication) para transferir dados entre sistemas. Isso é SAP Protocolo específico. Remote Function Call (RFC) é uma interface de comunicação baseada em CPI-C, mas com mais funções e mais fácil de usar para programadores de aplicativos
  • As funções da biblioteca RFC suportam o Linguagem de programação C e Visual Basic (em Windows plataformas)
  • 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) pela rede. Os módulos de função são comparáveis ​​com funções C ou procedimentos PASCAL. Eles possuem uma interface definida através da qual podem ser trocados dados, tabelas e códigos de retorno. Os módulos de função são administrados no sistema R/3 em sua própria biblioteca de funções, chamada Function Builder.
  • O Function Builder (transação SE37) fornece aos programadores de aplicativos um ambiente útil para programação, documentação e Testes 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ê mantém os parâmetros para conexões RFC usando a transação SM59. O sistema R/3 também é fornecido com um RFC-SDK (Software Development Kit) que utiliza extensas bibliotecas C 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 será executado.

As vantagens da RFC

A RFC ajuda a reduzir os esforços dos programadores, permitindo-lhes evitar 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).
  • Acesse certas rotinas necessárias para iniciar a comunicação com o sistema remoto.
  • Lidar com erros que possam ocorrer no processo de comunicação.

Tipos de RFC

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 é obrigatório quando o resultado é solicitado imediatamente após a execução do sRFC.

sRFC é um meio de comunicação entre sistemas onde são necessárias confirmações. Os recursos do sistema de origem aguardam no sistema de destino e garantem que entregam 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 aguardarão 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 SAP Servidor de aplicativos da Web para SAP GUI

Assíncrono

É a comunicação entre sistemas onde não são necessárias confirmações (é semelhante à entrega de cartão postal). Não requer que ambos os sistemas estejam disponíveis no momento da execução e o resultado não precisa ser enviado imediatamente de volta ao sistema chamador. .

O recurso do Sistema de Origem não espera pelo sistema de destino enquanto ele entrega 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 o tratamento semelhante a uma transação de 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 que os dados sejam 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 estiver executando um tRFC. O componente tRFC armazena a função RFC chamada, juntamente com os dados correspondentes, no SAP banco de dados sob um ID de transação exclusivo (TID). tRFC é semelhante a aRFC, pois não espera no sistema de destino (semelhante a um post registrado). Se o sistema não estiver disponível, ele gravará os dados em tabelas aRFC com um ID de transação (SM58) que é escolhido pelo planejador RSARFCSE (que é executado a cada 60 segundos). Usado para-

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

Enfileiradas

O RFC na fila é uma extensão do tRFC. Ele também garante que as etapas individuais sejam processadas em sequência. Para garantir que múltiplas LUWs (Unidade Lógica de Trabalho/Transação) sejam processadas na ordem especificada pela aplicação. tRFC pode ser serializado usando filas (filas de entrada e saída). Daí o nome RFC na fila (qRFC). Usado para-

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

Tipos de conexões RFC

Tipos de conexões RFC

Tipo 3 – entradas especificam a conexão entre Sistemas ABAP. Aqui, devemos especificar o nome do host/endereço IP. No entanto, você pode especificar informações de logon, se desejar. Isto é aplicável para ambos os tipos de RFCs, entre sistemas ABAP e chamadas externas para sistemas ABAP

Tipo I – 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. Exemplo de nome de entrada: ws0015_K18_24

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

Tipo T – destinos são conexões com programas externos que usam a API RFC para receber RFCs. O tipo de ativação pode ser Início ou Registro. Se for Iniciar, você deverá 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.

Como codificar um RFC

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

Como codificar um RFC

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

Como codificar um RFC

4) Declarando Parâmetros: Todos os campos de parâmetro para um módulo de função remoto devem ser definidos como campos de referência, ou seja, como 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.

Depurando 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. Os valores de dados e outras informações de execução da função remota são transmitidos do sistema remoto.

Resuma esta postagem com: