Appel de fonction à distance (RFC) dans le didacticiel SAP

Qu'est-ce que le RFC ?

RFC est un mécanisme qui permet aux applications métiers de communiquer et d'échanger des informations (dans des formats prédéfinis) avec d'autres systèmes. RFC signifie 'Appel de fonction à distance'

RFC se compose de deux interfaces :

  1. Une interface d'appel pour les programmes ABAP
  2. Une interface d'appel pour les programmes non-SAP.

Toutes Programme ABAP peut appeler une fonction distante à l'aide du FONCTION D'APPEL…DESTINATION déclaration. le DESTINATION Le paramètre indique au système SAP que la fonction appelée s'exécute dans un système autre que les appelants.

Syntaxe-

CALL FUNCTION 'remotefunction'

DESTINATION dest

EXPORTING f1 =

IMPORTING f2 =

TABLES t1 =

EXCEPTIONS

Les destinations logiques sont définies via la transaction SM59 et stocké dans le tableau RFCDES

Fonctions de l'interface RFC

  • Conversion de toutes les données de paramètres en représentation nécessaire dans le système distant
  • Appel des routines de communication nécessaires pour parler au système distant.
  • Gérer les erreurs de communication et avertir l'appelant, si désiré (en utilisant le paramètre EXCEPTIONS de la FONCTION D'APPEL).

Fonctions de l'interface RFC

RFC est un protocole SAP permettant de gérer les communications entre les systèmes afin de simplifier la programmation associée. Il s'agit du processus d'appel d'un module fonction qui réside sur une machine différente de celle du programme appelant. Les RFC peuvent également être utilisées pour appeler un programme différent sur la même machine, mais elles sont généralement utilisées lorsque des modules/programmes de fonction « appelant » et « appelés » s'exécutent sur des machines distinctes.

Fonctions de l'interface RFC

In SAP, Le système d'interface RFC est utilisé pour établir des connexions RFC entre différents Systèmes SAP, ainsi qu'entre un système SAP et un système externe (non SAP).

Doit savoir Details À propos des RFC

  • SAP utilise le protocole CPIC (Common Programming Interface for Communication) pour transférer des données entre les systèmes. Il s'agit d'un protocole spécifique à SAP. Remote Function Call (RFC) est une interface de communication basée sur CPI-C, mais avec plus de fonctions et plus facile à utiliser pour les programmeurs d'applications.
  • Les fonctions de la bibliothèque RFC prennent en charge le C programming language et Visual Basic (sur Windows plates-formes)
  • Les connexions RFC peuvent toujours être utilisées sur l’ensemble du système. Cela signifie qu'une connexion RFC que vous avez définie dans le client 000 peut également être utilisée à partir du client 100 (sans aucune différence).
  • RFC est le protocole permettant d'appeler des sous-programmes spéciaux (modules de fonction) sur le réseau. Les modules fonction sont comparables aux fonctions C ou aux procédures PASCAL. Ils disposent d'une interface définie à travers laquelle des données, des tableaux et des codes de retour peuvent être échangés. Les modules fonction sont gérés dans le système R/3 dans leur propre bibliothèque de fonctions, appelée Function Builder.
  • Le Function Builder (transaction SE37) fournit aux programmeurs d'applications un environnement utile pour programmer, documenter et Essais des modules fonction qui peuvent être appelés localement comme à distance. Le système R/3 génère automatiquement le code supplémentaire (stub RFC) nécessaire aux appels à distance.
  • Vous gérez les paramètres des connexions RFC à l'aide de la transaction SM59. Le système R/3 est également livré avec un RFC-SDK (Software Development Kit) qui utilise des bibliothèques C étendues pour permettre la connexion de programmes externes au système R/3.
  • La seule différence entre un appel distant d'un module fonction vers un autre serveur et un appel local réside dans un paramètre spécial (destination) qui spécifie le serveur cible sur lequel le programme doit être exécuté.

Les avantages du RFC

RFC contribue à réduire les efforts des programmeurs, en leur permettant d'éviter le redéveloppement de modules et de méthodes sur des systèmes distants. Il est suffisamment capable de :

  • Convertissez les données dans un format compréhensible par le système distant (cible).
  • Convertissez les données dans un format compréhensible par le système distant (cible).
  • Appelez certaines routines nécessaires pour démarrer la communication avec le système distant.
  • Gérez les erreurs qui peuvent survenir au cours du processus de communication.

Types de RFC

Types de RFC

Mesures synchrones

Nécessite que les deux systèmes (client et serveur) soient disponibles au moment de la communication ou du transfert de données. Il s'agit du type le plus courant et il est requis lorsque le résultat est requis immédiatement après l'exécution de sRFC.

sRFC est un moyen de communication entre les systèmes où des accusés de réception sont requis. Les ressources du système source attendent sur le système cible et s'assurent qu'elles délivrent le message/les données avec ACKD. Les Données sont cohérentes et fiables pour la communication.

Le problème est que si le système cible n'est pas disponible, les ressources du système source attendent que le système cible soit disponible. Cela peut conduire les processus du système source à passer en mode veille/RFC/CPIC sur les systèmes cibles et ainsi bloquer ces ressources.

Utilisé pour

  • Pour la communication entre les systèmes
  • Pour la communication entre SAP Web Application Server et SAP GUI

asynchrones

Il s'agit d'une communication entre systèmes pour laquelle aucun accusé de réception n'est requis (c'est similaire à la livraison d'une carte postale). Elle ne nécessite pas que les deux systèmes soient disponibles au moment de l'exécution et il n'est pas nécessaire que le résultat soit immédiatement renvoyé au système appelant. .

La ressource du système source n'attend pas le système cible car il transmet le message/les données sans attendre aucun accusé de réception. Il n'est pas fiable pour la communication car les données peuvent être perdues si le système cible n'est pas disponible. Utilisé pour -

  • Pour la communication entre les systèmes
  • Pour le traitement parallèle

Transactionnel

Il s'agit d'une forme spéciale d'aRFC. Transactional RFC garantit une gestion de type transactionnel des étapes de traitement qui étaient à l'origine autonomes.

La RFC transactionnelle est unsyncméthode de communication hroneuse qui exécute le module de fonction appelé sur le serveur RFC une seule fois, même si les données sont envoyées plusieurs fois en raison d'un problème de réseau. Le système distant n'a pas besoin d'être disponible au moment où le programme client RFC exécute un tRFC. Le composant tRFC stocke la fonction RFC appelée, ainsi que les données correspondantes, dans la base de données SAP sous un ID de transaction unique (TID). tRFC est similaire à aRFC car il n'attend pas sur le système cible (similaire à une publication enregistrée). Si le système n'est pas disponible, il écrira les données dans les tables aRFC avec un ID de transaction (SM58) qui est sélectionné par le planificateur RSARFCSE (qui s'exécute toutes les 60 secondes). Utilisé pour-

  • Extension de AsyncRFC hronique
  • Pour une communication sécurisée entre les systèmes

En file d'attente

Le RFC en file d'attente est une extension du tRFC. Cela garantit également que les étapes individuelles sont traitées dans l’ordre. Pour garantir que plusieurs LUW (Logical Unit of Work/Transaction) sont traitées dans l’ordre spécifié par l’application. tRFC peut être sérialisé à l'aide de files d'attente (files d'attente entrantes et sortantes). D'où le nom RFC en file d'attente (qRFC). Utilisé pour-

  • Extension de la RFC transactionnelle
  • Pour une séquence de traitement définie
  • La mise en œuvre de qRFC est recommandée si vous souhaitez garantir que plusieurs transactions sont traitées dans un ordre prédéfini.

Types de connexions RFC

Types de connexions RFC

Tapez 3 – les entrées précisent la connexion entre Systèmes ABAP. Ici, nous devons spécifier le nom d'hôte/l'adresse IP. Vous pouvez toutefois spécifier les informations de connexion si vous le souhaitez. Ceci s'applique aux deux types de RFC, entre les systèmes ABAP et les appels externes aux systèmes ABAP.

Type I- les entrées spécifient les systèmes ABAP connectés à la même base de données que le système actuel. Ces entrées sont prédéfinies et ne peuvent pas être modifiées. Exemple de nom d'entrée : ws0015_K18_24

  • ws0015=nom d'hôte
  • K18=nom du système (nom de la base de données)
  • 24=Nom du service TCP

Type t – les destinations sont des connexions à des programmes externes qui utilisent l'API RFC pour recevoir des RFC. Le type d'activation peut être soit Démarrage, soit Inscription. S'il s'agit de Démarrer, vous devez spécifier le nom d'hôte et le chemin d'accès du programme à démarrer.

Comment coder une RFC ?

1) Dans l'onglet Attributs du module fonction (code de transaction SE37), définissez le type de traitement sur Module activé à distance pour créer un module fonction distant.

Comment coder une RFC

2) Écrivez le code du module fonction.

Comment coder une RFC

3) Définissez la destination du serveur RFC dans le système client RFC qui appelle la fonction distante (via la transaction SM59).

Comment coder une RFC

4) Déclaration des paramètres: Tous les champs de paramètres d'un module fonction distant doivent être définis comme champs de référence, c'est-à-dire comme les champs du dictionnaire ABAP.

5) Exceptions : Le système génère COMMUNICATION_FAILURE et SYSTEM_FAILURE en interne. Vous pouvez déclencher des exceptions dans une fonction distante comme vous le feriez dans une fonction appelée localement.

Débogage des appels de fonction à distance

  • Il est pas possible de déboguer un appel de fonction à distance vers un autre système.
  • Toutefois, lors du test des appels RFC ABAP vers ABAP, vous pouvez utiliser le débogueur ABAP pour surveiller l'exécution de la fonction RFC dans le système distant.
  • Avec les appels à distance, le débogueur ABAP (y compris l'interface de débogage) s'exécute sur le système local. Les valeurs des données et autres informations d'exécution pour la fonction distante sont transmises depuis le système distant.