19 septembre 2013

Fichier de rejet NRB standard en mode colonné

Il est possible depuis HRv7.1 de demander aux chaînes de mise à jour batch NRB la création de fichiers des rejets en remplacement des listings "kilométriques" $LIS/NRB362I* :


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,
  1. Le programme BMI produit un fichier colonné $FILE/PSBBEB0.C** contenant les erreurs suite aux contrôles intrinsèques,
  2. 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
(ici on voit un NULIGN à 538976288 - cas typique de champ numérique alimenté à SPACE)

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


Aucun commentaire:

Enregistrer un commentaire