14 juin 2012

BOP-BBAO0003-DOSSIER INCONNU 538976288 - Corriger par update SQL les ZO2B.NUDODE déphasés

Sous HRv7
Les dossiers ZO des chaînes d'enchaînement NRC font référence aux demandes à enchaîner dans l'information ZO2B.
Ils stockent en ZO2B.NUDODE le NUDOSS de ces demandes.

Si vous livrez des dossiers ZO NRC par NOZ, les NUDODE des demandes appelées sont re-numérotées.
Si la demande n'est pas trouvée, le NUDODE sera passé à zéro.

Lors de l'exécution de la NRC, si des NUDODE sont nuls, le programme BOP va de nouveau rechercher les demandes pour corriger le dossier de travail.
S'il ne le trouve pas vous aurez une erreur BOP-BBAD0015-ERREUR D'ACCES ... : ZO00/8K/DD/SELECT/000000000000100

Il peut toutefois arriver que les NUDODE de la ZO2B ne soient plus en phase avec les NUDOSS des dossiers ZO concernés :
  • Du fait d'un bug, il est parfois alimenté à 538976288, ce qui correspond à la valeur associée à un SPACE mis dans une variable numérique ...
  • En cas de suppression et de recréation SQL d'un dossier de demande ZO référencé par une NRC (en TP un traitement empêche la suppression d'une demande référencée).

Dans le "meilleur" des cas, le NUDODE pointe sur un dossier inexistant.
Vous aurez alors l'erreur BOP-BBAO0003-DOSSIER INCONNU

En revanche si le NUDODE pointe sur un NUDOSS attribué à une autre demande que celle prévue ...
Vous aurez des surprises (ex : imaginez si une NRB s'exécute à la place d'une NBX) !

Pour faire un constat, exécutez :
select ZO2B.NUDOSS, ZO2B.NUDODE, ZO2B.CDPH01, ZO2B.IDREQU, ZO2B.CDELMT, ZO2B.LIBEDE,
 '<->', ZO00.CDPHAS, ZO00.CDPHAS, ZO00.IDREQU, ZO00.CDELMT, ZO00.LISOUM
 from ZO2B LEFT OUTER JOIN ZO00 on ZO2B.NUDODE=ZO00.NUDOSS
 where ((ZO2B.CDPH01<>ZO00.CDPHAS or ZO00.CDPHAS is null)
   or (ZO2B.IDREQU<>ZO00.IDREQU or ZO00.IDREQU is null)
   or (ZO2B.CDELMT<>ZO00.CDELMT or ZO00.CDELMT is null));

Ci joint un exemple d'update pour corriger ZO2B.NUDODE (pour Oracle) :
update ZO2B set ZO2B.NUDODE = (select coalesce(
         (select ZO00.NUDOSS from ZO00
            where ZO00.CDPHAS=ZO2B.CDPH01 and ZO00.CDELMT=ZO2B.CDELMT and ZO00.IDREQU=ZO2B.IDREQU
              and ZO00.FLGJOB='0' and ZO00.TISOUM='0001-01-01-00.00.00'),0)
         from DUAL);

(Pour DB2 remplacez DUAL par SYSIBM.SYSDUMMY1)

13 juin 2012

Livrer une mise en page spécialisée

Un objet "Mise en page spécialisée" concerne la mise en forme d'un état batch (PDF, HTML, CSV ...).

Sur l'environnement source, il faut "déployer" l'objet (avec HRv5 le terme utilisé est "mettre en exploitation").

Cette action va créer un dossier ZO avec CDPHAS='NPM', IDREQU=' ', FLGJOB='0' et CDELMT égal au code de l'objet concerné (avec HRv5, remplacer IDREQU=' ' par SUFXDM=' ' et FLGJOB='0' par TISOUM='0001-01-01').

  • Les données de déploiement sont à livrer sur la cible (par une NOY/NOZ sur le dossier ZO concerné).
  • Livrer l'objet est utile (pour les besoins de suivi et de maintenance à chaud) mais pas indispensable : l'objet n'est pas utilisé lors de l'exécution de la mise en forme par le serveur de Query.
Il peut être nécessaire d'évaluer les "références croisées", car la description de cette mise en page peut être "copiée" par des dossier de demande ZO de chaînes batchs (exploration, paie) : ZO4T (champs CDPHAS CDELMT TIMODI TERAFR) et ZO4C (CDMEPA TYPOUT NULINE ZONVAR).

Vous pouvez retrouver les demandes ZO utilisant vos mises en page par une requête sur la table ZO3P :

Avec HRv5
select CDPHAS,CDELMT,SUFXDM,LISOUM,CDMEPA from ZO00,ZO3P where ZO00.NUDOSS=ZO3P.NUDOSS and TISOUM='0001-01-01' and SUFXDM <> ' ' and CDMEPA <> ' ' order by CDMEPA

Avec HRv7
select CDPHAS,CDELMT,IDREQU,LISOUM,CDMEPA from ZO00,ZO3P where ZO00.NUDOSS=ZO3P.NUDOSS and FLGJOB='0' and IDREQU <> ' ' and CDMEPA <> ' ' order by CDMEPA


  • Sur la source rafraichissez le(s) dossier(s) de demande ZO utilisant vos mises en page puis  les livrer.

Un écran dans HRaSpace permet de faire ce "refresh" : Outils d'administration, Configurer les travaux batch, Rafraichissement des objets (en HRv5 dans "Assistant de Gestion")