Un paquet IDoc fractionné contient plusieurs IDoc, chacun d'eux correspondant à un seul objet métier.
L'adaptateur traite l'événement entrant d'un paquet IDoc qui contient plusieurs IDoc individuels selon la procédure suivante :
- Lorsque le système SAP envoie un ID de transaction à l'adaptateur, ce dernier vérifie le statut de l'événement et effectue les actions suivantes :
- S'il s'agit d'un nouvel événement, l'adaptateur stocke EVNTID (qui correspond à l'ID de la transaction) avec le statut 0 (Created) dans la table de reprise des événements.
- Si le statut de l'événement est -1 (Rollback), l'adaptateur met l'état à jour en passant à 0 (Created).
- Si le statut de l'événement est 1 (Executed), l'adaptateur renvoie une indication de réussite au système SAP.
- Le système SAP envoie le paquet IDoc à l'adaptateur qui l'analyse et le convertit en plusieurs objets métier avant de les stocker en mémoire.
- L'adaptateur met à jour la colonne BQTOTAL (ou le champ de table) dans la table de reprise des événements en fonction du nombre d'IDoc présents dans le paquet. Ce nombre est utilisé à des fins
d'audit et de reprise.
- Si l'adaptateur rencontre une erreur lors du traitement du paquet IDoc, il peut se comporter de deux façons différentes selon la propriété de configuration IgnoreIDocPacketErrors :
- Si la propriété IgnoreIDocPacketErrors est définie sur false, l'adaptateur arrête le traitement des IDoc restants du paquet et génère des erreurs dans le système SAP.
- Si la propriété IgnoreIDocPacketErrors est définie sur true, l'adaptateur consigne une erreur et continue le traitement du reste des IDoc du paquet. Le statut de la transaction devient 3 (InProgress). Dans ce cas, le journal de l'adaptateur affiche les numéros d'IDoc ayant échoué. Vous devez resoumettre ces IDoc séparément. Vous devez également conserver manuellement ces enregistrements dans la table de reprise des événements.
- Le système SAP envoie un appel COMMIT à l'adaptateur.
- L'adaptateur envoie les objets métier au noeud final de message, les uns après les autres, et affecte à la propriété BQPROC le numéro de séquence de l'IDoc qu'il utilise. L'adaptateur distribue les objets au noeud final approprié au
sein d'une transaction XA unique (transaction de validation en deux phases) contrôlée par
le serveur d'applications.
- Lorsque le noeud final reçoit l'événement et que la transaction est validée, l'adaptateur incrémente le numéro de la propriété BQPROC.
Remarque : Le noeud final de message doit être configuré pour prendre en charge les transactions XA.
- Une fois que l'adaptateur a distribué tous les objets métier du paquet IDoc au noeud final de message, il affecte à l'événement le statut 1 (Executed).
- En cas d'interruption brutale lors du traitement des paquets IDoc, l'adaptateur
reprend le traitement des IDoc à partir du numéro de séquence en cours. L'adaptateur poursuit la mise à jour la propriété BQPROC même si la propriété IgnoreIDocPacketErrors est définie sur true. L'adaptateur continue le traitement au cas où vous y mettriez manuellement fin pendant qu'il traite un paquet IDoc.
- Si une exception se produit alors que l'adaptateur traite l'événement ou si le noeud final génère une exception, le statut de l'événement devient -1 (Rollback).
- Si aucune exception ne se produit, l'adaptateur effectue les tâches suivantes :
- Il envoie un appel COMMIT à l'adaptateur. Le statut de l'événement est alors mis à jour pour devenir 1 (Executed).
- Il envoie un appel CONFIRM à l'adaptateur.
L'adaptateur supprime alors les enregistrements dont le statut est 1 (Executed) et consigne un événement CEI (Common Event Infrastructure) qui pourra être utilisé à des fins de suivi et d'audit.