Qu'est-ce que RFC?
La RFC est un mécanisme qui permet aux applications métier de communiquer et d'échanger des informations (dans des formats prédéfinis) avec d'autres systèmes. RFC signifie «Remote Function Call»
RFC se compose de deux interfaces:
- Une interface d'appel pour les programmes ABAP
- Une interface d'appel pour les programmes non SAP.
Tout programme ABAP peut appeler une fonction distante à l'aide de l' instruction CALL FUNCTION… DESTINATION . Le paramètre DESTINATION indique au système SAP que la fonction appelée s'exécute dans un système autre que les appelants.Syntaxe-
FONCTION D'APPEL 'télécommande'DESTINATION destEXPORTATION f1 =IMPORTATION f2 =TABLES t1 =DES EXCEPTIONS
Les destinations logiques sont définies via la transaction SM59 et stockées dans la table RFCDES
Fonctions de l'interface RFC
- Conversion de toutes les données de paramètres en la représentation nécessaire dans le système distant
- Appel des routines de communication nécessaires pour parler au système distant.
- Traiter les erreurs de communication, et notifier l'appelant, si désiré (en utilisant le paramètre EXCEPTIONS de la FONCTION D'APPEL).
RFC est un protocole SAP pour 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 du programme appelant. Les RFC peuvent également être utilisées pour appeler un programme différent sur la même machine, mais généralement, elles sont utilisées lorsque les modules / programmes de fonction «appelant» et «appelé» s'exécutent sur des machines séparées.
Dans SAP, le système d'interface RFC est utilisé pour configurer des connexions RFC entre différents systèmes SAP, ainsi qu'entre un système SAP et un système externe (non SAP).
Doit connaître les détails sur RFC
- SAP utilise le protocole CPIC (Common Programming Interface for Communication) pour transférer des données entre les systèmes. C'est 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 langage de programmation C et Visual Basic (sur les plates-formes Windows)
- Les connexions RFC peuvent toujours être utilisées sur l'ensemble du système, ce qui 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 pour appeler des sous-programmes spéciaux (modules de fonction) sur le réseau. Les modules fonctionnels sont comparables aux fonctions C ou aux procédures PASCAL. Ils ont une interface définie à travers laquelle des données, des tables et des codes de retour peuvent être échangés. Les modules de fonction sont gérés dans le système R / 3 dans leur propre bibliothèque de fonctions, appelée Function Builder.
- Le générateur de fonctions (transaction SE37) fournit aux programmeurs d'applications un environnement utile pour la programmation, la documentation et le test de modules fonctionnels qui peuvent être appelés localement ou à distance. Le système R / 3 génère automatiquement le code supplémentaire (stub RFC) nécessaire pour les 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 (kit de développement logiciel) qui utilise des bibliothèques C étendues pour permettre aux programmes externes d'être connectés 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 est un paramètre spécial (destination) qui spécifie le serveur cible sur lequel le programme doit être exécuté.
Les avantages RFC:
RFC aide à 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 pourraient survenir au cours du processus de communication.
Types de RFC:
Synchrone
Nécessite que les deux systèmes (client et serveur) soient disponibles au moment de la communication ou du transfert de données. C'est le 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 nécessaires. 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 jusqu'à ce que le système cible soit disponible. Cela peut conduire les processus du système source à passer en mode veille / RFC / CPIC au niveau des systèmes cibles et donc bloquer ces ressources.
Utilisé pour
- Pour la communication entre les systèmes
- Pour la communication entre SAP Web Application Server et SAP GUI
Asynchrone
Il s'agit de la communication entre les systèmes où les accusés de réception ne sont pas nécessaires (c'est similaire à la livraison par carte postale) .Il ne nécessite pas que les deux systèmes soient disponibles au moment de l'exécution et le résultat n'est pas immédiatement renvoyé au système appelant. .La ressource du système source n'attend pas le système cible lorsqu'il remet le message / les données sans attendre d'accusé de réception. Il n'est pas fiable pour la communication car des 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
C'est une forme spéciale d'aRFC. Le RFC transactionnel garantit une gestion transactionnelle des étapes de traitement qui étaient à l'origine autonomes.Le RFC transactionnel est une méthode de communication asynchrone qui exécute le module fonction appelé dans 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). Le 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 des 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 RFC asynchrone
- Pour une communication sécurisée entre les systèmes
En file d'attente
Le RFC mis en file d'attente est une extension de tRFC. Il garantit également que les étapes individuelles sont traitées en séquence.Pour garantir que plusieurs LUW (Unité Logique de Travail / Transaction) sont traitées dans l'ordre spécifié par l'application. Le 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
Type 3 - les entrées spécifient la connexion entre les systèmes ABAP. Ici, nous devons spécifier le nom d'hôte / l'adresse IP. Vous pouvez cependant spécifier les informations de connexion si vous le souhaitez. Cela 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 Début ou Inscription. S'il s'agit de Start, vous devez spécifier le nom d'hôte et le chemin du programme à démarrer.
Comment coder un RFC?
1. Dans l'onglet des attributs du module de fonction (code de transaction SE37), définissez le type de traitement sur Module activé à distance pour créer un module de fonction distant.
2. Écrivez le code du module fonction.
3. Définissez la destination du serveur RFC dans le système client RFC qui appelle la fonction distante (via la transaction SM59).
4.Déclarer les paramètres : tous les champs de paramètres d'un module de fonction distant doivent être définis comme champs de référence, c'est-à-dire comme les champs de dictionnaire ABAP.5.Exceptions: Le système déclenche 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 n'est pas possible de déboguer un appel de fonction à distance vers un autre système.
- Cependant, 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 distants, le débogueur ABAP (y compris l'interface de débogage) s'exécute sur le système local. Les valeurs de données et autres informations d'exécution pour la fonction distante sont transmises à partir du système distant.