Exemple : Comparer des valeurs dans les listes de spool SAP

Les listes de spool SAP affichent les jobs d'impression qui n'ont pas encore été transférés sur un appareil. Les données nécessaires à l'impression ou à la sortie sur un appareil sont enregistrées temporairement dans un format intermédiaire jusqu'à leur appel. Les valeurs pour ce type de requêtes de spool dans les listes respectives peuvent être comparées en utilisant les jobs SAP.

Comparer des valeurs de requêtes de spool – Workflow

Créez un Workflow avec deux objets job SAP. Chaque job produit une liste de spool. Un troisième objet job est utilisé pour comparer les nombres des valeurs de la liste spool.

Une fois les deux jobs terminés, les valeurs sont extraites des listes de spool et transférées au troisième job dans le Workflow.

Le statut du Workflow est défini conformément à la comparaison :

Les nombres sont identiques => ENDED_OK

Les nombres sont différents => ENDED_NOT_OK

Transférer le contenu d'une liste de spool vers un rapport de job

Ci-dessous, vous trouverez un exemple de l'un des deux jobs SAP dans le Workflow, chacun d'entre eux consiste de deux étapes :

Dans la première étape, le programme est exécuté, et au cours de la deuxième étape, le contenu de la liste de spool est ajouté au rapport.

Le rapport de ce job ressemble à celui-ci :

Il contient le log du job issu de SAP suivi de la liste de spool.

Extraire les valeurs

Job 1

Pour extraire les valeurs de la liste de spool, le script Automation Engine suivant est utilisé dans l'onglet Post-traitement du job.

Le script est exécuté dès que le job est terminé. Il traite le rapport et extrait les valeurs :

La fonction PREP_PROCESS_REPORT filtre toutes les lignes contenant un caractère "|".

Ceci a pour effet de retourner uniquement les valeurs suivantes :

| USD 123.456.789,01 1.234.567,89 |
| BEF 12.345.678.901 123.456.789 |
| KUD 123.456.789,01 365.413.243,87 |
| KUD 123.456.789,01 365.413.243,87

Avec PSET, la variable d'objet &JOB1_SUMME# du Workflow est mise à jour.

Le Workflow contient également une deuxième variable &JOB2_SUMME# qui est définie par le deuxième job SAP.

Job 2

Le rapport du deuxième job ressemble à celui-ci :

Un script Automation Engine est également utilisé dans ce cas pour obtenir la valeur :

Ce script filtre toutes les lignes contenant le mot "SQ". Le résultat est une ligne :

|SQ| 26|28.02.1995|365.413.243,86 | |DC-10-10| 380 | 2 |1.684,00 | 0 | 0 | 0 | 0 |

Le caractère "|" est défini comme séparateur de colonnes. Par conséquent, la valeur "5" (variable &column#) peut être directement utilisée pour obtenir la valeur 365 413 243,86 à partir du rapport.

STR_TRIM est utilisé pour supprimer les espaces. Le résultat est publié en tant que &JOB2_SUMME#

Comparer les jobs

Les deux jobs doivent être terminés pour que la comparaison des jobs démarre :

Elle accède aux variables &JOB1_SUMME# et &JOB2_SUMME#.

Ce job dispose du paramètre "Générer à l'exécution" activé dans la page "Attributs".

Dans cet exemple, il démarre un programme SAP avec des paramètres qui dépendent du résultat de la comparaison.

Le simple programme Z_INFO utilise des MESSAGES de type I ou E en fonction du paramètre SUCCÈS :

REPORT Z_INFO.
parameter text1 type string.
parameter text2 type string.
parameter text3 type string.
parameter success type c.
if success is initial.
MESSAGE I002(SY) WITH text1.
MESSAGE I002(SY) WITH text2.
MESSAGE E002(SY) WITH text3.
else.
MESSAGE I002(SY) WITH text1.
endif.

Le Workflow peut être configuré à ENDED_NOT_OK en cas d'échec de la comparaison des jobs :

Commentaires

La valeur du paramètre spécial (REPORT,REP) pour la commande du paramètre FICHIER dans le R3_GET_JOB_SPOOL n'est pas documentée, mais existe depuis la v9.
Normalement, la commande R3_GET_JOB_SPOOL peut uniquement écrire des fichiers. Cependant, l'agent SAP ne peut pas les lire. Un agent de système d'exploitation est requis pour extraire les valeurs avec PREP_PROCESS_FILE, et supprimer les vieux fichiers dès lors qu'ils ne sont plus nécessaires. Ceci représente également une solution possible, mais plus complexe que celle qui est décrite ici.