Dans l'écran "Import/export de données" des outils d'administration, cochez :
Ce témoin ERRMNG va être repris dans la carte paramètre PA24.
Sur présence de ce témoin,
- Le programme BMI produit un fichier colonné $FILE/PSBBEB0.C** contenant les erreurs suite aux contrôles intrinsèques,
- Le programme BMF produit un fichier $FILE/PSBBBME1.C** contenant les erreurs issues :
- Des rejets suite aux contrôles fonctionnels des programmes BMA et BMK,
- Des rejets suite à une erreur d'accès aux tables relationnelles par BML.
Il crée aussi un fichier $FILE/PSBBBMF0.C** concaténant les deux premiers.
Attention si vous souhaitez utiliser ces fichiers en exploitation. Pour avoir un bilan complet il faut aussi :
- Disposer du code retour de la chaîne (certaines erreurs pouvant perturber l'alimentation desdits fichiers),
- Contrôler l'absence de "dossiers à recycler" (listing $LIS/NRB212IZ, ou table M91 code RECY).
Exemples de sorties
En cas de filtrage par BMI (contrôles intrinsèques) vous aurez par exemple :AS0FT ZD00 COMDLA01 000000000000000000 2013-09-17-14.41.305A120 Erreur sur dossier Bordereau inconnu
En cas de rejet par BMA/K (erreurs fonctionnelles) vous aurez par exemple :
001230000AS0FT ZY0X 001701000 0000002550000000003 2013-09-17-16.00.505C102 Erreur sur mouvement Création à tort
Et en cas d'erreur SQL par BML (accès aux tables) vous aurez par exemple :
001230000AS0FT ZY0X 001718010 000000593538976288 2013-09-17-16.00.505C999 Erreur sur dossier Dossier incohérent
Format des fichiers
Ces fichiers sont colonnés. Leur format est décrit dans le guide technique (mais faux) :0001 à 0008 Code de l'utilisateur ayant déclenché la mise à jour (si disponible)
0009 à 0017 Code partition du dossier concerné par le mouvement (numérique)
0018 à 0022 Code processus
0023 à 0042 Zone utilisateur 2 du mouvement
0043 à 0044 Nom de la structure de données concernée par le mouvement
0045 à 0046 Nom de l'information concernée par le mouvement en erreur
0047 à 0052 Nom de la rubrique en erreur pour une erreur de type D Dictionnaire (blanc pour les autres types d'erreur).
0053 à 0152 Identifiant logique du dossier concerné par le mouvement en erreur
0153 à 0161 Identifiant interne (NUDOSS) du dossier concerné par le mouvement en erreur
0162 à 0170 Identifiant interne (NULIGN) de l'occurrence d'information concernée par le mouvement en erreur (0 si création ou information unique fixe).
0171 à 0171 Code mouvement
0172 à 0191 Zone utilisateur 1 du mouvement
0192 à 0210 Horodatage de détection de l'erreur
0211 à 0211 Poids de l'erreur
0212 à 0212 Type d'erreur (C:Compatibilité D:Dictionnaire U:traitement Utilisateur)
0213 à 0218 Code erreur
0219 à 0220 Nom du groupe du traitements spécifique ayant déclenché l'erreur (si erreur Utilisateur)
0221 à 0226 Nom du traitement ayant déclenché l'erreur (si erreur Utilisateur)
0227 à 0229 Nom du répertoire cible (si erreur sur contrôle de correspondance)
0230 à 0329 Description de l'erreur
0330 à 0629 Libellé de l'erreur
Conversion en CSV
Du fichier standard vous pouvez obtenir un CSV grâce a un script awk comme celui ci :awk 'BEGIN {
OFS=";"
print "CdUtil", "CdPart", "CdPros", "ZonUt2", "CdStDo", "CdInfo", "CdRubr", "IdDoss", "NuDoss", "NuLign", "CdMvt", "ZonUt1", "TimErr", "PdsErr", "TypErr", "CodErr", "GpTrai", "CdTrai", "VaCdSt", "DesErr", "LibErr"
}
{
CdUtil=substr($0,1,8)
CdPart=substr($0,9,9)
CdPros=substr($0,18,5)
ZonUt2=substr($0,23,20)
CdStDo=substr($0,43,2)
CdInfo=substr($0,45,2)
CdRubr=substr($0,47,6)
IdDoss=substr($0,53,100)
NuDoss=substr($0,153,9)
NuLign=substr($0,162,9)
CdMvt=substr($0,171,1)
ZonUt1=substr($0,172,20)
TimErr=substr($0,192,19)
PdsErr=substr($0,211,1)
TypErr=substr($0,212,1)
CodErr=substr($0,213,6)
GpTrai=substr($0,219,2)
CdTrai=substr($0,221,6)
VaCdSt=substr($0,227,3)
DesErr=substr($0,230,100)
LibErr=substr($0,330,300)
print CdUtil, CdPart, CdPros, ZonUt2, CdStDo, CdInfo, CdRubr, IdDoss, NuDoss, NuLign, CdMvt, ZonUt1, TimErr, PdsErr, TypErr, CodErr, GpTrai, CdTrai, VaCdSt, DesErr, LibErr
}' PSBBBMF0.C**
Ce qui donnera :
;001230000;AS0FT; ;ZD;0X; ; ;000000277;000000000; ; ;2013-09-17-16.00.49;5;A;120 ; ; ; ; ;Erreur sur dossier Bordereau inconnu
;001230000;AS0FT; ;ZY;0X; ;001701000 ;000000255;000000000;3; ;2013-09-17-16.00.50;5;C;102 ; ; ; ; ;Erreur sur mouvement Création à tort
;001230000;AS0FT; ;ZY;0X; ;001718010 ;000000593;538976288; ; ;2013-09-17-16.00.50;5;C;999 ; ; ; ; ;Erreur sur dossier Dossier incohérent
Comment fait-on pour faire le lien entre la ligne en erreur dans $FILE/PSBBBME1.C** et la ligne dans le bordereau si nous avons plusieurs lignes avec le même matricule. J'ai pensé au NULIGN interne mais je ne vois pas où on le trouve.
RépondreSupprimerBonne remarque - il faudrait les identifiants fonctionnels. Utiliser la ZONUT2 pour y placer un n° unique ? Mais si l'erreur est liée à un mouvement induit par un traitement, il n'est pas possible de faire de lien ...
SupprimerY a t'il un moyen simple d'avoir le fichier sous $LIS (le NRB362I1) en ligne?
RépondreSupprimerAPRES LA REMONTÉE D'UNE PAIE NOUS OBSERVONS UN REJET SUIVANT:
RépondreSupprimerType d'erreur : Compatibilité Nature : Dossier Gravité : Erreur I
I Structure de données : ZY Code information : Zone libre : I
I Code erreur : 999 Libellé : Erreur sur dossier Dossier incohérent I
I I
I -- DOSSIER REJETE --
=> Hotline ...
SupprimerPour information TBPF01 - Appartient au type de traitement Contextes BMF
RépondreSupprimerIl permet de sélectionner les mouvements à intégrer dans le fichier des erreurs, sous réserve que l'option d'écriture du fichier soit activée.
Exemple d'utilisation : Si vous avez activé l'écriture du fichier des erreurs, vous pouvez choisir d'intégrer tous les mouvements dans le fichier des erreurs, y compris les mouvements ne comportant pas d'erreurs
Bonjour. Auriez vous la possibilité de montrer comment utiliser la chaine RJ2 dans le cadre d'une NRB? En effet, contrairement aux autres chaines (NJ6, K25...), on ne peut pas se permettre d'analyser uniquement les codes erreur technique, il faut aussi analyser les "rejets fonctionnels". Comment savoir si tout s'est bien passé? Cdt.
RépondreSupprimermerci, en effet, il y a pas mal de cas à tester dans ce que vous donnez comme exemple.
SupprimerMerci :)