Audit des explorations

1/16
100%

HR Access

<?xml version="1.0"?><DocumentFile xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"> <GraphicCharterDefinitionId>0</GraphicCharterDefinitionId> <TemplateBaseTypeId>0</TemplateBaseTypeId> <CompanyId>6</CompanyId> <ConfidentialId>0</ConfidentialId> <ConfidentialDescription /> <CountryId>0</CountryId> <PageSizeId>1</PageSizeId> <PageOrientationId>1</PageOrientationId> <PrePrintedStationary>false</PrePrintedStationary> <Project>HRa Suite 9</Project> <Reference>20150313-150305-stcartier</Reference> <TemplateType>3</TemplateType> <CultureId>fr-FR</CultureId> <LanguageId>2</LanguageId> <Customer>I3F</Customer> <DocumentDate>2015-03-19T16:40:16.9879173+01:00</DocumentDate> <Saved>false</Saved> <IsValid>true</IsValid> <FirstPageCover>false</FirstPageCover> <IsNew>false</IsNew> <CurrentVersion>1.00</CurrentVersion> <DocumentType>Compte rendu d'intervention</DocumentType> <DocumentTypeId>-1</DocumentTypeId> <Entity /> <HasDistributionList>false</HasDistributionList> <HasForeword>false</HasForeword> <Title>Audit des explorations</Title> <Status>1</Status> <StatusDescription>Travail</StatusDescription> <SetEdition>false</SetEdition> <SetVersion>false</SetVersion></DocumentFile>

| | | | | | |

| --- | --- | --- | --- | --- | --- |

| | | | | | |

| | | | | | |

| | | Création d’un jeu d’essai pour test de performance | | | |

| | | | | | |

| | | | | | |

| | | | | | |

| | | | | | |

| | | | | | |

Historique du document

Révisions

Review this information if unsure how to fill out the Revision History table:

  • New Application: When the application is brand new, Drafts would be marked 0.1, 0.2 etc. The final test plan after modifications from a team walkthrough would be 1.0.
  • Subsequent Modifications: The test plan version would be 1.1, 1.2 etc. Include the section number where the changes occurred.
  • Maintenance Releases: This can be used as a working document for point releases under a major release, include the section number where the changes occurred.

| | | | |

| --- | --- | --- | --- |

| Version | Date | Auteur | Modifications |

| | 3 mars 2020 | P. DUCHESNE | |

| | 17 août 2020 | P. DUCHESNE | Modification Annexe 5.1 |

| | 22 janv. 2021 | P. DUCHESNE | Modification Paragraphes 3.2.1 et 4.1.2 |

| | 25 janv. 2021 | P. DUCHESNE | Adaptations pour jeu d’essai > 100.000 |

| | | | |

Table des matières

[1. Objet du document 4](#_Toc62202455)

[2. Opérations préalables 4](#_Toc62202456)

[2.1. Définir les règles de nommage 4](#_Toc62202457)

[2.2. Choisir les données de base à dupliquer 5](#_Toc62202458)

[2.2.1. Dossiers modèles 5](#_Toc62202459)

[2.2.2. Volumétrie 5](#_Toc62202460)

[3. Duplication des données 5](#_Toc62202461)

[3.1. Users de connexion 5](#_Toc62202462)

[3.2. Duplication des dossiers salariés 5](#_Toc62202463)

[3.2.1. Préparation des outils de duplication 6](#_Toc62202464)

[3.2.2. Lancement du job 6](#_Toc62202465)

[3.2.3. Remarque 6](#_Toc62202466)

[3.3. Duplication des UOs 6](#_Toc62202467)

[4. Variabilisation des dossiers 7](#_Toc62202468)

[4.1. Liens entre les dossiers 7](#_Toc62202469)

[4.1.1. Affectation des managers aux UOs 7](#_Toc62202470)

[4.1.2. Affectation des UOs aux salariés 7](#_Toc62202471)

[4.1.3. Affectation des users de connexion aux salariés 7](#_Toc62202472)

[4.1.4. Jobs batch exécutés 8](#_Toc62202473)

[4.2. Personnalisation du jeu d’essai 9](#_Toc62202474)

[4.2.1. Création d’équipes plus importantes 9](#_Toc62202475)

[4.2.2. Gestion des établissements 9](#_Toc62202476)

[5. Annexes 11](#_Toc62202477)

[5.1. Modifications du programme BCG pour dupliquer les dossiers 11](#_Toc62202478)

[5.1.1. Exemple avec des dossiers salariés 11](#_Toc62202479)

[5.1.2. Exemple avec des UOs 12](#_Toc62202480)

[5.2. Routine de création des codes utilisateurs 14](#_Toc62202481)

[5.2.1. Table UC10 14](#_Toc62202482)

[5.2.2. Table UC15 pour HR Access 14](#_Toc62202483)

[5.2.3. Table UC15 pour 4YOU 15](#_Toc62202484)

[5.3. Affectation d’un établissement à tous les salariés 15](#_Toc62202485)

Objet du document

Le but de ce document est de fournir une méthode de création de jeu d’essai adapté aux tests de performance.

Les données concernées sont :

  • Des dossiers salariés
  • Des UOs
  • Des users de connexion

Dans tous les cas il faut créer un ou plusieurs dossiers qui seront utilisés comme source lors de la duplication de données. Ensuite ils seront variabilisés par des ordres SQL.

La méthode répond à l’essentiel des besoins d’un benchmark, pas nécessairement à toutes les exigences d’un client, et peut devoir être adaptée.

Opérations préalables

Définir les règles de nommage

Les règles de nommage sont conçues pour :

  • Faciliter la création du jeu d’essai
  • Faciliter entre les différentes entités : salarié, user, manager, UO
  • Faciliter la variabilisation pour les outils de benchmark (JMeter ou Loadrunner par exemple)

Voici les règles proposées dans ce document :

  • Les salariés sont créés avec un matricule de format M0nnnnnn ou nnnnnn varie de 000000 au nombre de salariés voulu.
  • Les salariés sont organisés en équipes de 10 personnes. Parmi chaque dizaine de salariés le premier (M0nnnnn0) est le manager des 9 suivants (matricule M0nnnnn1 à M0nnnnn9). Le matricule du manager se déduit du matricule salarié en forçant à 0 le dernier caractère.
  • Chaque salarié de matricule M0nnnnnn peut se connecter avec le user U0nnnnnn.
  • Les UOs sont créées avec un code de format UO0nnnnn
  • Le manager M0nnnnn0 est responsable de l’ UO0nnnnn
  • Le salarié de matricule M0nnnnnx est rattaché à l’UO UO0nnnnn

Exemple :

Le user U0123450 correspond au matricule M0123450, il est manager de l’UO UO012345 à laquelle sont rattachés les matricules M0123450 à M0123459.

L’UO UO012345 a pour manager le matricule M0123450.

On voit que le seul nombre « 12345 » permet de variabiliser l’ensemble.

Choisir les données de base à dupliquer

Dossiers modèles

Pour chaque type de données (users, UOs, salariés) il faut identifier des dossiers assez riches fonctionnellement pour être utilisés comme modèles. Si les scénarios de benchmark concernent les absences par exemple, il faut choisir des dossiers qui en ont beaucoup, ou les enrichir avant d’effectuer la duplication.

Pour les salariés il est conseillé de saisir plusieurs dossiers modèles, afin d’avoir plus de variété dans les données.

Pour les codes utilisateurs, il faut sélectionner un profil qui a les droits nécessaires pour réaliser les opérations prévues dans les scénarios du benchmark.

Les UOs seront de type hiérarchique, mais on évite de créer la hiérarchie ; c’est compliqué et rarement utile, les tests de performance portant la plupart du temps sur des manipulations de dossiers salariés.

Volumétrie

Il faut définir le nombre de dossiers à créer. Avec les règles de nommage énoncées dans ce document, on définit uniquement le nombre de salariés :

  • Le nombre d’utilisateurs sera égal au nombre de salariés
  • Le nombre d’UOs sera égal à 1/10ème du nombre de salariés puisqu’on définit des équipes de 10 personnes.

Duplication des données

La fabrication du jeu d’essai consiste à créer des salariés, des users de connexion et des UOs.

Users de connexion

Il faut créer un user pour chacun des salariés à partir d’un user modèle.

L’alimentation de la table UC10 peut se faire en utilisant la routine PL/SQL fournie en Annexe 2. Les codes utilisateurs seront définis sur 8 caractères de format U0nnnnnn.

Rappel : dans HR Access les droits peuvent être définis soit dans les dossiers salariés (table ZY09), soit affectés aux codes utilisateurs dans UC15. Le choix est fonctionnel.

S’ils sont affectés dans ZY09, ils font partie du dossier salarié et seront dupliqués en même temps.

S’ils sont définis dans UC15, on peut initialiser la table en utilisant la routine PL/SQL fournie en Annexe 2.

Publicité

Duplication des dossiers salariés

Le principe consiste à utiliser les chaines standard d’export-import de données (NOY/NOZ) en modifiant le programme BCG de NOY pour qu’il duplique un certain nombre de fois chacun des dossiers lus. Il adapte à chaque ligne le matricule de l’employé, son nom (et éventuellement d’autres rubriques).

Ensuite on crée une population contenant les dossiers modèles et on lance NOY. Il constitue un fichier qui contient le nombre de dossiers voulus, que l’on charge par NOZ et BQL, les utilitaires HR Access classiques.

Les modifications du programme BCG sont décrites ci-dessous en Annexe 1.1.

Préparation des outils de duplication

Les jobs NOY/NOZ dépendent d’un processus qu’il faut définir au préalable. Pour savoir quelles informations rattacher au processus, on peut exécuter la requête suivante sur les dossiers modèles choisis pour la duplication :

SELECT CDINFO, MAX(NOMBRE) from ZYTD12 where nudoss in (select nudoss from ZY00 where matcle IN (…,…) ) group by cdinfo order by cdinfo ;

Le processus de duplication doit inclure toutes les infos présentes dans les dossiers modèles, et il est conseillé de supprimer les autres pour réduire la taille du processus.

Dans le processus, pour chaque info le nombre d’occurrences doit être soit à zéro, soit à une valeur supérieure au nombre de lignes à dupliquer (résultat de la requête ci-dessus).

Ensuite on peut générer le processus de duplication en prenant bien soin de remplacer le programme BCG standard par celui modifié pour la duplication.

Lancement du job

Il faut lancer NOY en mode « Population », mais il faut d’abord créer la population en question. Ça se fait soit :

  • En soumettant le job RBN
  • Directement en « bricolant » la table TP33. On peut ajouter des lignes dans la TP33 après avoir vérifié que la table ne contenait aucune ligne pour la population en question

Select count(\*) from TP33 where idpopl = 'XXXX' ; (Doit retourner 0)

Insert into tp33 values ('XXXX',mmmmmmmm,1,'0',' ');

Insert into tp33 values ('XXXX',nnnnnnn,1,'0',' ');

……

Ici XXXX représente l’identifiant population choisi, tandis que mmmmmmm et nnnnnnn sont les NUDOSS des dossiers modèles.

Remarque

Le programme BCG modifié va dupliquer chaque dossier de la population le même nombre de fois. Si l’on veut obtenir des dossiers dupliqués en nombre différents, il faut passer plusieurs fois le job en changeant le nombre d’occurrences dans BCG à chaque fois.

Duplication des UOs

Elles sont créées par duplication de l’UO choisie comme modèle et en utilisant également le programme BCG modifié et les jobs NOY/NOZ.

Les modifications de BCG pour les UOs sont listées en Annexe 1.2.

Dans cet exemple les codes des UOs varient de UO000000 à UO0nnnnn.

Les libellés court et long reprennent le code de l’UO.

Variabilisation des dossiers

Après la duplication, les dossiers sont tous identiques : il faut les modifier, entre autres pour créer les équipes et assigner des users de connexion aux salariés.

Liens entre les dossiers

Après la création de tous les dossiers les actions suivantes sont à réaliser pour établir les liens :

Affectation des managers aux UOs

On force le matricule du manager sur les UOs nouvellement créées :

Update ze0B b set matcle = (select 'M0'||substr(idou00,4,5)||'0' from ze00 a where a.nudoss=b.nudoss) where b.nudoss in (select nudoss from ze00 where idou00 like 'UO0%');

Affectation des UOs aux salariés

On force les UOs sur l’information ZY3B et aussi sur ZY35 pour un test 4YOU :

Update ZY3B a set A.IDOU00 = (select 'UO0'||substr(matcle,3,5) from ZY00 B WHERE A.NUDOSS=B.NUDOSS) where DTEN00= '2999-12-31-00.00.00' and nudoss in (select nudoss from zy00 where matcle like 'M0%');

Update ZY35 a set A.IDOU00 = (SELECT B.IDOU00 FROM ZY3B B WHERE A.NuDOSS=B.NUDOSS AND B. DTEN00 = '2999-12-31-00.00.00') where DATXXX = '2999-12-31-00.00.00' and nudoss in (select nudoss from zy00 where matcle like 'M0%');

Pour 4YOU, on force également les UOs sur l’information ZY3C:

UPDATE ZY3C A SET A.IDOU00 = (SELECT B.IDOU00 FROM ZY3B B WHERE A.NuDOSS=B.NUDOSS AND B. DTEN00 = '2999-12-31-00.00.00') WHERE DTEN00 = '2999-12-31-00.00.00' and nudoss in (select nudoss from zy00 where matcle like 'M0%');

Cas où le salarié n’a pas de d’info 3C

Pour HR Access ce n’est pas grave. Pour 4YOU il faut créer l’information ZY3C pour chaque dossier, et alimenter les tables techniques en conséquence. Ces opérations s’effectuent en lançant les requêtes suivantes :

INSERT INTO ZY3C A (SELECT B.NUDOSS,1,0,0, '3',SOCCLE,0, 'ORG', 'UO0'|| substr(matcle,3,5), '2010-01-01-00.00.00', ' 2999-12-31-00.00.00', 'C01', ' ',100, '0', ' ' from ZY00 B WHERE B.nudoss in (select nudoss from zy00 where matcle like 'M0%'));

INSERT INTO ZYTD12 (SELECT A.NUDOSS, 0, '3C', '0',1,0,0, ' ',' 2020-08-31-00.00.00' FROM ZY00 A WHERE nudoss in (select nudoss from zy00 where matcle like 'M0%') AND NOT EXISTS(SELECT 1 FROM ZYTD12 C WHERE C.NUDOSS=A.NUDOSS AND C.CDINFO='3C'));

Affectation des users de connexion aux salariés

Cas où le salarié a déjà un logon Id

Si le dossier modèle possède une information ZY4I, les dossiers dupliqués vont l’avoir également. Dans ce cas on met à jour les colonnes LOGNID et USERID de ZY4I par cet ordre SQL :

Update zy4I A set A.LOGNID = (SELECT 'U'||SUBSTR(B.MATCLE,2,7) from ZY00 B WHERE A.NUDOSS=B.NUDOSS), A.NMPRUS = (SELECT B.MATCLE from ZY00 B WHERE A.NUDOSS=B.NUDOSS), A.userid = 'SM'||substr(lognid,2,7)||'.\_\_\_' where nudoss in (select nudoss from zy00 where matcle like 'M0%');

Où ‘\_\_\_’ est le code réglementation des dossiers.

Cas où le salarié n’a pas de logon Id

Dans ce cas il faut créer l’information ZY4I pour chaque dossier, et alimenter les tables techniques en conséquence. Ces opérations s’effectuent en lançant les requêtes suivantes :

INSERT INTO ZY4I (SELECT A.NUDOSS, SOCDOS, 0, 'SM'||substr(MATCLE,2,7)||'.\_\_\_' ,'2010-01-01-00.00.00', ' 2999-12-31-00.00.00', 'U'||SUBSTR(MATCLE,2,7) , MATCLE, 'F', '0', ' ', ' ', ' ', '0001-01-01-00.00.00', ' ', ' ', ' ', '0', ' ' FROM ZY00 A WHERE A.nudoss in (select nudoss from zy00 where matcle like 'M0%') AND NOT EXISTS(SELECT 1 FROM ZYTD12 C WHERE C.NUDOSS=A.NUDOSS AND C.CDINFO='4I'));

Où ‘\_\_\_’ est le code réglementation des dossiers.

INSERT INTO ZYTD12 (SELECT A.NUDOSS, 0, '4I', '0',1,0,0, ' ',' 2019-08-31-00.00.00' FROM ZY00 A WHERE nudoss in (select nudoss from zy00 where matcle like 'M0%') AND NOT EXISTS(SELECT 1 FROM ZYTD12 C WHERE C.NUDOSS=A.NUDOSS AND C.CDINFO='4I'));

Remarque

Si certains modèles avaient une ZY4I et pas d’autre, on peut lancer les requêtes de création en premier, puis la requête de mise à jour. En effet les requêtes de création contiennent une clause EXISTS sur ZYTD12 pour ne pas planter si la ligne existe déjà.

Mise à jour du matricule dans la table UC15

Dans le cas où la confidentialité utilise la table UC15, il faut également forcer le matricule salarié sur le rôle EMPLOYEE :

UPDATE UC15 SET ROLVAL = '\_\_\_M0'||SUBSTR(CDUTIL,3,6) WHERE cdutil like 'U0%' AND ROLMOD = 'EMPLOYEE' ;

Où ‘\_\_\_’ est le code réglementation des dossiers.

Jobs batch exécutés

Après la modification des managers des UOs, il faut passer la génération des flat tables, d’abord sur ZE, puis sur ZY.

On peut aussi remplacer les jobs de génération par des ordres SQL. Les 2 instructions suivantes font la même chose pour les données du jeu d’essai (en plus rapide) :

Update ZY3E a set A.IDOU00 = (select 'UO0'||substr(matcle,3,5) from ZY00 B WHERE A.NUDOSS=B.NUDOSS) where nudoss in (select nudoss from zy00 where matcle like 'M0%');

Update ZY3E a set A.MATCLE = (select substr(matcle,1,7)||'0' from ZY00 B WHERE A.NUDOSS=B.NUDOSS) where nudoss in (select nudoss from zy00 where matcle like 'M0%');

Update zy3e set NMPRES = matcle where nudoss in (select nudoss from zy00 where matcle like 'M0%');

COMMIT;

On alimente l’UO et le manager du salarié en les calculant à partir de son matricule. On force le nom de présentation du manager par son matricule.

Personnalisation du jeu d’essai

Les étapes ci-dessus permettent de créer un jeu d’essai « standard », mais on peut avoir à le compliquer pour un test particulier. Deux exemples ci-dessous :

Création d’équipes plus importantes

Le jeu d’essai créé des équipes homogènes de 10 personnes, on peut vouloir créer une ou deux équipes plus importantes pour tester l’impact sur les temps de réponse.

Dans l’exemple suivant, on définit une équipe de 100 salariés :

• M0020900 est manager d’une équipe de 100 personnes (M0020900 a M0021000)

Forçage de l’affectation dans la table ZY35 sur les salariés sélectionnés :

Update ZY35 set idou00 = 'UO002090' where nudoss in (select nudoss from zy00 where matcle between 'M0020900' and 'M0021000') and idou00 like 'UO0%';

Forçage de l’affectation dans la table ZY3B sur les salariés sélectionnés :

Update ZY3B set idou00 = 'UO002090' where nudoss in (select nudoss from zy00 where matcle between 'M0020900' and 'M0021000') and idou00 like 'UO0%';

Forçage du manager sur l’UO de rattachement :

Update ze0b set matcle = 'M0020900' where nudoss in (select nudoss from ze00 where idou00 between 'UO002090' and 'UO002099');

Mise à jour manuelle des flat tables :

Update ZY3E a set A.IDOU00 = 'UO002090',MATCLE = 'M0020900' where nudoss in (select nudoss from zy00 where matcle between 'M0020900' and 'M0021000');

Gestion des établissements

Création de quelques établissements de test

Pour pouvoir tester une confidentialité par établissement, on peut vouloir rattacher des dossiers. Ici on crée un établissement de 250 salariés, un de 500, un de 1.000 et un de 2.000 salariés pour tester l’impact sur les temps de réponse :

UPDATE ZY38 SET IDESTA = 'FRYET250' where Nudoss in (select nudoss from zy00 where matcle > 'M0000000' and matcle < 'M0000251');

COMMIT;

UPDATE ZY38 SET IDESTA = 'FRYET500' where Nudoss in (select nudoss from zy00 where matcle > 'M0000500' and matcle < 'M0001001');

COMMIT;

UPDATE ZY38 SET IDESTA = 'FRYE1000' where Nudoss in (select nudoss from zy00 where matcle > 'M0002000' and matcle < 'M0003001');

COMMIT;

Publicité

UPDATE ZY38 SET IDESTA = 'FRYE2000' where Nudoss in (select nudoss from zy00 where matcle > 'M0003000' and matcle < 'M0005001');

COMMIT;

Affectation de tous les salariés à des établissements

Pour répartir les salariés par établissement, on peut utiliser les ordres SQL ci-dessous. Pour chaque salarié, ils vont affecter un établissement codifié « ETnnnnnn » regroupant 500 salariés de matricule M0nnnnnn à M0(nnnnnn + 500).

Exemple : l’établissement ET013000 regroupe les salariés M0013000 à M0013499. Et ET013500 regroupe les salariés M0013500 à M0013999.

UPDATE ZY38 A SET A.IDESTA = (SELECT 'ET'||substr(B.matcle,3,3)||'000' from ZY00 B where A.NUDOSS=B.NUDOSS) WHERE Nudoss in (select nudoss from zy00 where matcle like 'M0%' );

UPDATE ZY38 A SET A.IDESTA = (SELECT 'ET'||substr(B.matcle,3,3)||'500' from ZY00 B where A.NUDOSS=B.NUDOSS) WHERE Nudoss in (select nudoss from zy00 where matcle like 'M0%' and substr(matcle,6,1) >='5');

COMMIT;

En annexe 3, une routine qui fait la même chose en PL/SQL. On peut la modifier pour adapter le nombre de salariés par établissement, ou la codification des établissements.

Remarque : Si les paies ont déjà été calculées pour ces salariés, il est possible de modifier directement les dossiers de PRDB pour ne pas avoir à relancer les jobs de paie.

UPDATE ZX37 A SET A.ETABLI = (SELECT IDESTA FROM ZY38 WHERE NULIGN=1 AND NUDOSS = (SELECT B.NUGEST FROM ZX00 B WHERE A.NUDOSS=B.NUDOSS)) ;

COMMIT;

Si les paies sont calculées après la mise à jour, les dossiers PRDB contiendront la bonne valeur.

Annexes

Modifications du programme BCG pour dupliquer les dossiers

A partir d'une population de départ (voir la population totale) pour une SD dans un environnement, ces modifications du programme BCG vont permettre à une chaîne NOY de produire un fichier multipliant la population de départ par un facteur quelconque. Les modifications de BCG permettent en outre de faire évoluer un certain nombre d'informations des dossiers ainsi dupliqués (en particulier, il sera nécessaire d'adapter l'identifiant du dossier).

Exemple avec des dossiers salariés

Dans le squelette de BCG, il faut modifier les lignes identifiées ici avec le numéro ‘xxxxxx’ :

1. en Working :

xxxxxx 01 DUPLICATION.

xxxxxx\* indices de travail avec coefficient multiplicateur a 10000

xxxxxx\* c’est le nombre de copies de chaque dossier d’origine

xxxxxx 05 IDUPLR PICTURE S9(8) VALUE +10000.

xxxxxx 05 IDUPLM PICTURE S9(8) VALUE +10000.

xxxxxx\* valeur de départ NUDOSS (inutile s'il existe une séquence)

xxxxxx 05 DUPL-NUDOSS PICTURE S9(9) VALUE 000200000.

xxxxxx\* compteur de dossiers dupliqués

xxxxxx 05 DUPL-CPT PICTURE S9(9) VALUE ZERO.

xxxxxx\* variables de transformation des dossiers dupliqués

xxxxxx\* Numéro de départ

xxxxxx 05 DUPL-MATCLE-INIT PIC 9(6) VALUE 0.

xxxxxx 05 DUPL-MATCLE.

xxxxxx 10 DUPL-DEB-MATCLE PIC X(3) VALUE 'M0'.

xxxxxx 10 DUPL-FIN-MATCLE PIC 9(6).

xxxxxx 10 DUPL-FIL-MATCLE PIC X(4) VALUE SPACE.

xxxxxx 05 DUPL-NOMPAT VALUE SPACE.

xxxxxx 10 DUPL-DEB-NOMPAT PIC X(1).

xxxxxx 10 DUPL-SUI-NOMPAT PIC 9(5).

xxxxxx 10 DUPL-FIN-NOMPAT PIC X(26).

1. Dans la fonction F9FCD : on remplace le Perform F9N par un appel BLS

557300 F9FCD. IF IOCCUR = W-WP00-NOMBRE P005

557400 AND W-WP00-TESUIT = "1" P010

557500 NEXT SENTENCE ELSE GO TO F9FCD-FN. P010

557600 MOVE S-CDINFO TO W-ZP00-CDINFO P020

557700 MOVE W-SUIT-TYAPEL TO W-ZP00-TYAPEL P030

xxxxxx\\\* Remplacement Perform Fonction par appel direct BLS

xxxxxx\\ PERFORM F9N THRU F9N-FN P040

xxxxxx\*<SUBRAD>RDPROG CALDYN. P010

xxxxxx MOVE "%1BLS" TO W-WM00-CDMODU. P015

xxxxxx CALL W-WM00-CDMODU USING P020

xxxxxx Z-ZONE-ETAL P030

xxxxxx ZP00-ZONEUT P040

xxxxxx ZP00-GRTRAV P050

xxxxxx Z-ZTEC-ETAL. P060

557900 MOVE SPACE TO W-ZP00-TYAPEL. P050

558000\N9FCH. NOTE \ERREUR DE TRAITEMENT \*. P005

1. en remplacement de la fonction F9N :

496500\N9N. NOTE \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\. P005

496600\ \ \* P005

496700\ \LECTURE FICHIER GIP \* P005

496800\ \ \* P005

496900\ \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\. P005

497000 F9N. EXIT. P005

497100\N9NDB. NOTE \LECTURE PAR BLS \*. P005

xxxxxx F9NDB. IF IDUPLR = IDUPLM P005

xxxxxx NEXT SENTENCE ELSE GO F9NDB-FN.

xxxxxx MOVE +1 TO IDUPLR.

497300\*<SUBRAD>RDPROG CALDYN. P010

497400 MOVE "%1BLS" TO W-WM00-CDMODU. P015

497500 CALL W-WM00-CDMODU USING P020

497600 Z-ZONE-ETAL P030

497700 ZP00-ZONEUT P040

497800 ZP00-GRTRAV P050

497900 Z-ZTEC-ETAL. P060

xxxxxx GO TO F9NFB-FN.

498000 F9NDB-FN. EXIT. P060

xxxxxx F9NFB.

xxxxxx ADD +1 TO IDUPLR.

xxxxxx F9NFB-FN. EXIT.

xxxxxx F9NHB.

xxxxxx ADD +1 TO DUPL-CPT.

xxxxxx MOVE DUPL-NUDOSS TO Z-NUDOSS.

xxxxxx ADD DUPL-CPT TO Z-NUDOSS.

xxxxxx ADD DUPL-CPT DUPL-MATCLE-INIT GIVING DUPL-FIN-MATCLE.

xxxxxx MOVE DUPL-MATCLE TO Z-ZY00-MATCLE.

xxxxxx MOVE DUPL-MATCLE TO Z-ZY05-NOMPAT.

xxxxxx MOVE DUPL-MATCLE TO Z-ZY07-NOMUSE.

xxxxxx F9NHB-FN. EXIT.

498100 F9N-FN. EXIT. P060

Publicité

Dans l'exemple proposé, la population en entrée de NOY sera multiplié par 10000, les dossiers porteront un NUDOSS numéroté de 1 en 1 à partir de 200000, le matricule sera de format « M0nnnnnn », les NOMPAT et NOMUSE seront égaux au matricule.

En fonction du test à effectuer, il pourra être intéressant de compléter les modifications du dossier qui se trouve entièrement étalé et donc facilement modifiable.

Exemple avec des UOs

Au squelette de BCG, il faut ajouter :

1. en Working :

xxxxxx 01 DUPLICATION.

xxxxxx\* indices de travail avec coefficient multiplicateur à 5000

xxxxxx 05 IDUPLR PICTURE S9(8) VALUE +5000.

xxxxxx 05 IDUPLM PICTURE S9(8) VALUE +5000.

xxxxxx\* valeur de départ des NUDOSS créés

xxxxxx 05 DUPL-NUDOSS PICTURE S9(9) VALUE 000200000.

xxxxxx\* compteur de dossiers dupliqués

xxxxxx 05 DUPL-CPT PICTURE S9(9) VALUE ZERO.

xxxxxx\* variables de transformation des dossiers dupliqués

xxxxxx\* Numéro de départ

xxxxxx 05 DUPL-IDOU00-INIT PIC 9(5) VALUE 0.

xxxxxx 05 DUPL-IDOU00.

xxxxxx 10 DUPL-DEB-IDOU00 PIC X(4) VALUE 'UO0'.

xxxxxx 10 DUPL-FIN-IDOU00 PIC 9(5).

xxxxxx 10 DUPL-FIL-IDOU00 PIC X(2) VALUE SPACE.

1. Dans la fonction F9FCD : on remplace le Perform F9N par un appel BLS

557300 F9FCD. IF IOCCUR = W-WP00-NOMBRE P005

557400 AND W-WP00-TESUIT = "1" P010

557500 NEXT SENTENCE ELSE GO TO F9FCD-FN. P010

557600 MOVE S-CDINFO TO W-ZP00-CDINFO P020

557700 MOVE W-SUIT-TYAPEL TO W-ZP00-TYAPEL P030

xxxxxx\\\* Remplacement Perform Fonction par appel direct BLS

xxxxxx\\ PERFORM F9N THRU F9N-FN P040

xxxxxx\*<SUBRAD>RDPROG CALDYN. P010

xxxxxx MOVE "%1BLS" TO W-WM00-CDMODU. P015

xxxxxx CALL W-WM00-CDMODU USING P020

xxxxxx Z-ZONE-ETAL P030

xxxxxx ZP00-ZONEUT P040

xxxxxx ZP00-GRTRAV P050

xxxxxx Z-ZTEC-ETAL. P060

557900 MOVE SPACE TO W-ZP00-TYAPEL. P050

558000\N9FCH. NOTE \ERREUR DE TRAITEMENT \*. P005

1. en remplacement de la fonction F9N :

585500 F9N. EXIT. P005

585600\N9NDB. NOTE \LECTURE PAR BLS \*. P005

xxxxxx F9NDB. IF IDUPLR = IDUPLM P005

xxxxxx NEXT SENTENCE ELSE GO F9NDB-FN.

xxxxxx MOVE +1 TO IDUPLR.

585800\*<SUBRAD>RDPROG CALDYN. P010

585900 MOVE "%1BLS" TO W-WM00-CDMODU. P015

586000 CALL W-WM00-CDMODU USING P020

586100 Z-ZONE-ETAL P030

586200 ZP00-ZONEUT P040

586300 ZP00-GRTRAV P050

586400 Z-ZTEC-ETAL. P060

xxxxxx GO TO F9NFB-FN.

586500 F9NDB-FN. EXIT. P060

xxxxxx F9NFB.

xxxxxx ADD +1 TO IDUPLR.

xxxxxx F9NFB-FN. EXIT.

xxxxxx F9NHB.

xxxxxx ADD +1 TO DUPL-CPT.

xxxxxx MOVE DUPL-NUDOSS TO Z-NUDOSS.

xxxxxx ADD DUPL-CPT TO Z-NUDOSS.

xxxxxx ADD DUPL-CPT DUPL-IDOU00-INIT GIVING DUPL-FIN-IDOU00.

xxxxxx MOVE DUPL-IDOU00 TO Z-ZE00-IDOU00.

xxxxxx MOVE DUPL-IDOU00 TO Z-ZE01-LBOULG.

xxxxxx MOVE DUPL-IDOU00 TO Z-ZE01-LBOUSH.

xxxxxx F9NHB-FN. EXIT.

586600 F9N-FN. EXIT. P060

Dans l'exemple proposé, la population en entrée de NOY sera multiplié par 5000, les dossiers porteront un NUDOSS numéroté de 1 en 1 à partir de 200000, le code de l’UO sera de format « UO0nnnnn », les libellés longs et libellés courts de l’UO seront égaux au code.

Routine de création des codes utilisateurs

Table UC10

La routine ci-dessous permet de créer des codes utilisateurs dans la table UC10. Il suffit d’assigner à la variable n\_max le nombre de users à créer (entre 1 et 99999) et de lancer la routine suivante :

set serveroutput on

declare

n\_max number := nnnnnn ;

n number := 0 ;

res\_str varchar2(100);

begin

loop

n := n+1 ;

INSERT INTO UC10 (SELECT 'U0'||TO\_CHAR(n,'FM000000') , 'SALARIE M'||SUBSTR(CDUTIL,2,7), 'HR',CDLANG,CRYPTO,TECONC, TEGEST, TETRAD, TEDESI, TEAPPL, NUVCLI, NURCLI, TYUTIL, TICONN, TIMODI, TIMPSW, LASTCN, TEVERR, CDUTVE, IDSESS, NUVERS, CDUTMO, CDMC01, CDMC02, CDMC03, CDMC04, CDMC05, CDMC06, CDMC07, CDMC08, CDMC09, CDMC10, PGPUSE, STUDIO, ZONPSW from UC10 WHERE CDUTIL = '\_\_\_\_\_\_\_\_');

Exit when n = n\_max ;

end loop;

Commit;

end;

/

Table UC15 pour HR Access

Pour un test purement HR Access (sans 4YOU) par exemple, on peut créer une ligne de modèle de rôle ALLHRLO pour chaque utilisateur avec la routine suivante :

set serveroutput on

declare

n\_max number := nnnnnn;

n number := 0 ;

Publicité

res\_str varchar2(100);

begin

loop

n := n+1 ;

INSERT INTO UC15 (SELECT 'U0'||TO\_CHAR(n,'FM000000') , 'ALLHRLO','FR','1' from UC10 WHERE CDUTIL = '\_\_\_\_\_\_\_\_');

Exit when n = n\_max ;

end loop;

Commit;

end;

/

Résultat :

CDUTIL ROLMOD ROLVAL

-------- -------------------- ----------------

U0002341 ALLHRLO FR

U0002342 ALLHRLO FR

U0002343 ALLHRLO FR

Table UC15 pour 4YOU

Pour un test 4YOU, on peut créer des lignes Expert Paie et Expert PAD pour certains utilisateurs. La routine suivante ajoute un rôle Expert Paie tous les 500 users (U0000000, U0000500, ….)

set serveroutput on

declare

n\_max number := 50000;

paquet number := 0;

n number := 0;

cle char(8);

mat1 char(12);

uc15 char (27);

statmt varchar (150);

begin

loop

n := n+500 ;

cle := 'U0'||TO\_CHAR(n,'FM000000');

mat1 :='ET'||TO\_CHAR(n,'FM000000');

uc15 := 'FRL'||mat1;

INSERT INTO HR.UC15 VALUES (cle, 'PLCLPAY', uc15,'1') ;

paquet :=paquet+1;

Exit when n = n\_max ;

end loop;

dbms\_output.put\_line ('Nombre de lignes insérées : '||paquet);

end;

/

On peut aussi ajouter un rôle Gestionnaire aux experts Paie

INSERT INTO UC15 (SELECT CDUTIL,'PLCLPAD',ROLVAL,'0' FROM UC15 WHERE rolmod = 'PLCLPAY' and CDUTIL like 'U0%' and CDUTIL <> 'U0000000');

Affectation d’un établissement à tous les salariés

La routine suivante crée des paquets de 500 salariés par établissement dans ZY38.

set serveroutput on

declare

n\_max number := 500 ;

m number := 0 ;

n number := 0 ;

adresse rowid ;

recip VARCHAR2(36);

res\_str varchar2(100);

mat\_3 char(3) ;

mat\_num char(5) ;

mat char(12) ;

valideur char(8) :='M0000000';

num char(5) :='00000';

CURSOR RID\_Curs IS

SELECT b.rowid,a.matcle

FROM zy38 b,ZY00 a where a.nudoss=b.nudoss and a.matcle like 'M0%' order by a.matcle ;

begin

open RID\_Curs;

loop

Fetch RID\_Curs INTO adresse,mat;

EXIT WHEN RID\_Curs%NOTFOUND;

SELECT SUBSTR(mat,3,6) into mat\_num from dual;

SELECT SUBSTR(mat,6,3) into mat\_3 from dual;

IF mat\_3= '500' OR mat\_3= '000' THEN

num :=mat\_num;

END IF;

UPDATE ZY38 SET IDESTA = 'ET'||num where rowid = adresse;

m := m+1 ;

end loop;

CLOSE RID\_Curs;

commit;

res\_str := ' lignes mises a jour ';

res\_str := m||res\_str;

dbms\_output.put\_line(res\_str);

end;

/

Ici les salariés M0000001 à M0000499 pointeront sur ET000000, les M0000500 à M0000999 sur ET000500 par exemple.

Fin du document

Audit des explorations

HR Systems Performance Testing · notes

Voir tous les documents en gestion et économie

HR Access

<?xml version="1.0"?><DocumentFile xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"> <GraphicCharterDefinitionId>0</GraphicCharterDefinitionId> <TemplateBaseTypeId>0</TemplateBaseTypeId> <CompanyId>6</CompanyId> <ConfidentialId>0</ConfidentialId> <ConfidentialDescription /> <CountryId>0</CountryId> <PageSizeId>1</PageSizeId> <PageOrientationId>1</PageOrientationId> <PrePrintedStationary>false</PrePrintedStationary> <Project>HRa Suite 9</Project> <Reference>20150313-150305-stcartier</Reference> <TemplateType>3</TemplateType> <CultureId>fr-FR</CultureId> <LanguageId>2</LanguageId> <Customer>I3F</Customer> <DocumentDate>2015-03-19T16:40:16.9879173+01:00</DocumentDate> <Saved>false</Saved> <IsValid>true</IsValid> <FirstPageCover>false</FirstPageCover> <IsNew>false</IsNew> <CurrentVersion>1.00</CurrentVersion> <DocumentType>Compte rendu d'intervention</DocumentType> <DocumentTypeId>-1</DocumentTypeId> <Entity /> <HasDistributionList>false</HasDistributionList> <HasForeword>false</HasForeword> <Title>Audit des explorations</Title> <Status>1</Status> <StatusDescription>Travail</StatusDescription> <SetEdition>false</SetEdition> <SetVersion>false</SetVersion></DocumentFile>

| | | | | | |

| --- | --- | --- | --- | --- | --- |

| | | | | | |

| | | | | | |

| | | Création d’un jeu d’essai pour test de performance | | | |

| | | | | | |

| | | | | | |

| | | | | | |

| | | | | | |

| | | | | | |

Historique du document

Révisions

Review this information if unsure how to fill out the Revision History table:

  • New Application: When the application is brand new, Drafts would be marked 0.1, 0.2 etc. The final test plan after modifications from a team walkthrough would be 1.0.
  • Subsequent Modifications: The test plan version would be 1.1, 1.2 etc. Include the section number where the changes occurred.
  • Maintenance Releases: This can be used as a working document for point releases under a major release, include the section number where the changes occurred.

| | | | |

| --- | --- | --- | --- |

| Version | Date | Auteur | Modifications |

| | 3 mars 2020 | P. DUCHESNE | |

| | 17 août 2020 | P. DUCHESNE | Modification Annexe 5.1 |

| | 22 janv. 2021 | P. DUCHESNE | Modification Paragraphes 3.2.1 et 4.1.2 |

| | 25 janv. 2021 | P. DUCHESNE | Adaptations pour jeu d’essai > 100.000 |

| | | | |

Table des matières

[1. Objet du document 4](#_Toc62202455)

[2. Opérations préalables 4](#_Toc62202456)

[2.1. Définir les règles de nommage 4](#_Toc62202457)

[2.2. Choisir les données de base à dupliquer 5](#_Toc62202458)

[2.2.1. Dossiers modèles 5](#_Toc62202459)

[2.2.2. Volumétrie 5](#_Toc62202460)

[3. Duplication des données 5](#_Toc62202461)

[3.1. Users de connexion 5](#_Toc62202462)

[3.2. Duplication des dossiers salariés 5](#_Toc62202463)

[3.2.1. Préparation des outils de duplication 6](#_Toc62202464)

[3.2.2. Lancement du job 6](#_Toc62202465)

[3.2.3. Remarque 6](#_Toc62202466)

[3.3. Duplication des UOs 6](#_Toc62202467)

[4. Variabilisation des dossiers 7](#_Toc62202468)

[4.1. Liens entre les dossiers 7](#_Toc62202469)

[4.1.1. Affectation des managers aux UOs 7](#_Toc62202470)

[4.1.2. Affectation des UOs aux salariés 7](#_Toc62202471)

[4.1.3. Affectation des users de connexion aux salariés 7](#_Toc62202472)

[4.1.4. Jobs batch exécutés 8](#_Toc62202473)

[4.2. Personnalisation du jeu d’essai 9](#_Toc62202474)

[4.2.1. Création d’équipes plus importantes 9](#_Toc62202475)

[4.2.2. Gestion des établissements 9](#_Toc62202476)

[5. Annexes 11](#_Toc62202477)

[5.1. Modifications du programme BCG pour dupliquer les dossiers 11](#_Toc62202478)

[5.1.1. Exemple avec des dossiers salariés 11](#_Toc62202479)

[5.1.2. Exemple avec des UOs 12](#_Toc62202480)

[5.2. Routine de création des codes utilisateurs 14](#_Toc62202481)

[5.2.1. Table UC10 14](#_Toc62202482)

[5.2.2. Table UC15 pour HR Access 14](#_Toc62202483)

[5.2.3. Table UC15 pour 4YOU 15](#_Toc62202484)

[5.3. Affectation d’un établissement à tous les salariés 15](#_Toc62202485)

Objet du document

Le but de ce document est de fournir une méthode de création de jeu d’essai adapté aux tests de performance.

Les données concernées sont :

  • Des dossiers salariés
  • Des UOs
  • Des users de connexion

Dans tous les cas il faut créer un ou plusieurs dossiers qui seront utilisés comme source lors de la duplication de données. Ensuite ils seront variabilisés par des ordres SQL.

La méthode répond à l’essentiel des besoins d’un benchmark, pas nécessairement à toutes les exigences d’un client, et peut devoir être adaptée.

Opérations préalables

Définir les règles de nommage

Les règles de nommage sont conçues pour :

  • Faciliter la création du jeu d’essai
  • Faciliter entre les différentes entités : salarié, user, manager, UO
  • Faciliter la variabilisation pour les outils de benchmark (JMeter ou Loadrunner par exemple)

Voici les règles proposées dans ce document :

  • Les salariés sont créés avec un matricule de format M0nnnnnn ou nnnnnn varie de 000000 au nombre de salariés voulu.
  • Les salariés sont organisés en équipes de 10 personnes. Parmi chaque dizaine de salariés le premier (M0nnnnn0) est le manager des 9 suivants (matricule M0nnnnn1 à M0nnnnn9). Le matricule du manager se déduit du matricule salarié en forçant à 0 le dernier caractère.
  • Chaque salarié de matricule M0nnnnnn peut se connecter avec le user U0nnnnnn.
  • Les UOs sont créées avec un code de format UO0nnnnn
  • Le manager M0nnnnn0 est responsable de l’ UO0nnnnn
  • Le salarié de matricule M0nnnnnx est rattaché à l’UO UO0nnnnn

Exemple :

Le user U0123450 correspond au matricule M0123450, il est manager de l’UO UO012345 à laquelle sont rattachés les matricules M0123450 à M0123459.

L’UO UO012345 a pour manager le matricule M0123450.

On voit que le seul nombre « 12345 » permet de variabiliser l’ensemble.

Choisir les données de base à dupliquer

Dossiers modèles

Pour chaque type de données (users, UOs, salariés) il faut identifier des dossiers assez riches fonctionnellement pour être utilisés comme modèles. Si les scénarios de benchmark concernent les absences par exemple, il faut choisir des dossiers qui en ont beaucoup, ou les enrichir avant d’effectuer la duplication.

Pour les salariés il est conseillé de saisir plusieurs dossiers modèles, afin d’avoir plus de variété dans les données.

Pour les codes utilisateurs, il faut sélectionner un profil qui a les droits nécessaires pour réaliser les opérations prévues dans les scénarios du benchmark.

Les UOs seront de type hiérarchique, mais on évite de créer la hiérarchie ; c’est compliqué et rarement utile, les tests de performance portant la plupart du temps sur des manipulations de dossiers salariés.

Volumétrie

Il faut définir le nombre de dossiers à créer. Avec les règles de nommage énoncées dans ce document, on définit uniquement le nombre de salariés :

  • Le nombre d’utilisateurs sera égal au nombre de salariés
  • Le nombre d’UOs sera égal à 1/10ème du nombre de salariés puisqu’on définit des équipes de 10 personnes.

Duplication des données

La fabrication du jeu d’essai consiste à créer des salariés, des users de connexion et des UOs.

Users de connexion

Il faut créer un user pour chacun des salariés à partir d’un user modèle.

L’alimentation de la table UC10 peut se faire en utilisant la routine PL/SQL fournie en Annexe 2. Les codes utilisateurs seront définis sur 8 caractères de format U0nnnnnn.

Rappel : dans HR Access les droits peuvent être définis soit dans les dossiers salariés (table ZY09), soit affectés aux codes utilisateurs dans UC15. Le choix est fonctionnel.

S’ils sont affectés dans ZY09, ils font partie du dossier salarié et seront dupliqués en même temps.

S’ils sont définis dans UC15, on peut initialiser la table en utilisant la routine PL/SQL fournie en Annexe 2.

Publicité

Duplication des dossiers salariés

Le principe consiste à utiliser les chaines standard d’export-import de données (NOY/NOZ) en modifiant le programme BCG de NOY pour qu’il duplique un certain nombre de fois chacun des dossiers lus. Il adapte à chaque ligne le matricule de l’employé, son nom (et éventuellement d’autres rubriques).

Ensuite on crée une population contenant les dossiers modèles et on lance NOY. Il constitue un fichier qui contient le nombre de dossiers voulus, que l’on charge par NOZ et BQL, les utilitaires HR Access classiques.

Les modifications du programme BCG sont décrites ci-dessous en Annexe 1.1.

Préparation des outils de duplication

Les jobs NOY/NOZ dépendent d’un processus qu’il faut définir au préalable. Pour savoir quelles informations rattacher au processus, on peut exécuter la requête suivante sur les dossiers modèles choisis pour la duplication :

SELECT CDINFO, MAX(NOMBRE) from ZYTD12 where nudoss in (select nudoss from ZY00 where matcle IN (…,…) ) group by cdinfo order by cdinfo ;

Le processus de duplication doit inclure toutes les infos présentes dans les dossiers modèles, et il est conseillé de supprimer les autres pour réduire la taille du processus.

Dans le processus, pour chaque info le nombre d’occurrences doit être soit à zéro, soit à une valeur supérieure au nombre de lignes à dupliquer (résultat de la requête ci-dessus).

Ensuite on peut générer le processus de duplication en prenant bien soin de remplacer le programme BCG standard par celui modifié pour la duplication.

Lancement du job

Il faut lancer NOY en mode « Population », mais il faut d’abord créer la population en question. Ça se fait soit :

  • En soumettant le job RBN
  • Directement en « bricolant » la table TP33. On peut ajouter des lignes dans la TP33 après avoir vérifié que la table ne contenait aucune ligne pour la population en question

Select count(\*) from TP33 where idpopl = 'XXXX' ; (Doit retourner 0)

Insert into tp33 values ('XXXX',mmmmmmmm,1,'0',' ');

Insert into tp33 values ('XXXX',nnnnnnn,1,'0',' ');

……

Ici XXXX représente l’identifiant population choisi, tandis que mmmmmmm et nnnnnnn sont les NUDOSS des dossiers modèles.

Remarque

Le programme BCG modifié va dupliquer chaque dossier de la population le même nombre de fois. Si l’on veut obtenir des dossiers dupliqués en nombre différents, il faut passer plusieurs fois le job en changeant le nombre d’occurrences dans BCG à chaque fois.

Duplication des UOs

Elles sont créées par duplication de l’UO choisie comme modèle et en utilisant également le programme BCG modifié et les jobs NOY/NOZ.

Les modifications de BCG pour les UOs sont listées en Annexe 1.2.

Dans cet exemple les codes des UOs varient de UO000000 à UO0nnnnn.

Les libellés court et long reprennent le code de l’UO.

Variabilisation des dossiers

Après la duplication, les dossiers sont tous identiques : il faut les modifier, entre autres pour créer les équipes et assigner des users de connexion aux salariés.

Liens entre les dossiers

Après la création de tous les dossiers les actions suivantes sont à réaliser pour établir les liens :

Affectation des managers aux UOs

On force le matricule du manager sur les UOs nouvellement créées :

Update ze0B b set matcle = (select 'M0'||substr(idou00,4,5)||'0' from ze00 a where a.nudoss=b.nudoss) where b.nudoss in (select nudoss from ze00 where idou00 like 'UO0%');

Affectation des UOs aux salariés

On force les UOs sur l’information ZY3B et aussi sur ZY35 pour un test 4YOU :

Update ZY3B a set A.IDOU00 = (select 'UO0'||substr(matcle,3,5) from ZY00 B WHERE A.NUDOSS=B.NUDOSS) where DTEN00= '2999-12-31-00.00.00' and nudoss in (select nudoss from zy00 where matcle like 'M0%');

Update ZY35 a set A.IDOU00 = (SELECT B.IDOU00 FROM ZY3B B WHERE A.NuDOSS=B.NUDOSS AND B. DTEN00 = '2999-12-31-00.00.00') where DATXXX = '2999-12-31-00.00.00' and nudoss in (select nudoss from zy00 where matcle like 'M0%');

Pour 4YOU, on force également les UOs sur l’information ZY3C:

UPDATE ZY3C A SET A.IDOU00 = (SELECT B.IDOU00 FROM ZY3B B WHERE A.NuDOSS=B.NUDOSS AND B. DTEN00 = '2999-12-31-00.00.00') WHERE DTEN00 = '2999-12-31-00.00.00' and nudoss in (select nudoss from zy00 where matcle like 'M0%');

Cas où le salarié n’a pas de d’info 3C

Pour HR Access ce n’est pas grave. Pour 4YOU il faut créer l’information ZY3C pour chaque dossier, et alimenter les tables techniques en conséquence. Ces opérations s’effectuent en lançant les requêtes suivantes :

INSERT INTO ZY3C A (SELECT B.NUDOSS,1,0,0, '3',SOCCLE,0, 'ORG', 'UO0'|| substr(matcle,3,5), '2010-01-01-00.00.00', ' 2999-12-31-00.00.00', 'C01', ' ',100, '0', ' ' from ZY00 B WHERE B.nudoss in (select nudoss from zy00 where matcle like 'M0%'));

INSERT INTO ZYTD12 (SELECT A.NUDOSS, 0, '3C', '0',1,0,0, ' ',' 2020-08-31-00.00.00' FROM ZY00 A WHERE nudoss in (select nudoss from zy00 where matcle like 'M0%') AND NOT EXISTS(SELECT 1 FROM ZYTD12 C WHERE C.NUDOSS=A.NUDOSS AND C.CDINFO='3C'));

Affectation des users de connexion aux salariés

Cas où le salarié a déjà un logon Id

Si le dossier modèle possède une information ZY4I, les dossiers dupliqués vont l’avoir également. Dans ce cas on met à jour les colonnes LOGNID et USERID de ZY4I par cet ordre SQL :

Update zy4I A set A.LOGNID = (SELECT 'U'||SUBSTR(B.MATCLE,2,7) from ZY00 B WHERE A.NUDOSS=B.NUDOSS), A.NMPRUS = (SELECT B.MATCLE from ZY00 B WHERE A.NUDOSS=B.NUDOSS), A.userid = 'SM'||substr(lognid,2,7)||'.\_\_\_' where nudoss in (select nudoss from zy00 where matcle like 'M0%');

Où ‘\_\_\_’ est le code réglementation des dossiers.

Cas où le salarié n’a pas de logon Id

Dans ce cas il faut créer l’information ZY4I pour chaque dossier, et alimenter les tables techniques en conséquence. Ces opérations s’effectuent en lançant les requêtes suivantes :

INSERT INTO ZY4I (SELECT A.NUDOSS, SOCDOS, 0, 'SM'||substr(MATCLE,2,7)||'.\_\_\_' ,'2010-01-01-00.00.00', ' 2999-12-31-00.00.00', 'U'||SUBSTR(MATCLE,2,7) , MATCLE, 'F', '0', ' ', ' ', ' ', '0001-01-01-00.00.00', ' ', ' ', ' ', '0', ' ' FROM ZY00 A WHERE A.nudoss in (select nudoss from zy00 where matcle like 'M0%') AND NOT EXISTS(SELECT 1 FROM ZYTD12 C WHERE C.NUDOSS=A.NUDOSS AND C.CDINFO='4I'));

Où ‘\_\_\_’ est le code réglementation des dossiers.

INSERT INTO ZYTD12 (SELECT A.NUDOSS, 0, '4I', '0',1,0,0, ' ',' 2019-08-31-00.00.00' FROM ZY00 A WHERE nudoss in (select nudoss from zy00 where matcle like 'M0%') AND NOT EXISTS(SELECT 1 FROM ZYTD12 C WHERE C.NUDOSS=A.NUDOSS AND C.CDINFO='4I'));

Remarque

Si certains modèles avaient une ZY4I et pas d’autre, on peut lancer les requêtes de création en premier, puis la requête de mise à jour. En effet les requêtes de création contiennent une clause EXISTS sur ZYTD12 pour ne pas planter si la ligne existe déjà.

Mise à jour du matricule dans la table UC15

Dans le cas où la confidentialité utilise la table UC15, il faut également forcer le matricule salarié sur le rôle EMPLOYEE :

UPDATE UC15 SET ROLVAL = '\_\_\_M0'||SUBSTR(CDUTIL,3,6) WHERE cdutil like 'U0%' AND ROLMOD = 'EMPLOYEE' ;

Où ‘\_\_\_’ est le code réglementation des dossiers.

Jobs batch exécutés

Après la modification des managers des UOs, il faut passer la génération des flat tables, d’abord sur ZE, puis sur ZY.

On peut aussi remplacer les jobs de génération par des ordres SQL. Les 2 instructions suivantes font la même chose pour les données du jeu d’essai (en plus rapide) :

Update ZY3E a set A.IDOU00 = (select 'UO0'||substr(matcle,3,5) from ZY00 B WHERE A.NUDOSS=B.NUDOSS) where nudoss in (select nudoss from zy00 where matcle like 'M0%');

Update ZY3E a set A.MATCLE = (select substr(matcle,1,7)||'0' from ZY00 B WHERE A.NUDOSS=B.NUDOSS) where nudoss in (select nudoss from zy00 where matcle like 'M0%');

Update zy3e set NMPRES = matcle where nudoss in (select nudoss from zy00 where matcle like 'M0%');

COMMIT;

On alimente l’UO et le manager du salarié en les calculant à partir de son matricule. On force le nom de présentation du manager par son matricule.

Personnalisation du jeu d’essai

Les étapes ci-dessus permettent de créer un jeu d’essai « standard », mais on peut avoir à le compliquer pour un test particulier. Deux exemples ci-dessous :

Création d’équipes plus importantes

Le jeu d’essai créé des équipes homogènes de 10 personnes, on peut vouloir créer une ou deux équipes plus importantes pour tester l’impact sur les temps de réponse.

Dans l’exemple suivant, on définit une équipe de 100 salariés :

• M0020900 est manager d’une équipe de 100 personnes (M0020900 a M0021000)

Forçage de l’affectation dans la table ZY35 sur les salariés sélectionnés :

Update ZY35 set idou00 = 'UO002090' where nudoss in (select nudoss from zy00 where matcle between 'M0020900' and 'M0021000') and idou00 like 'UO0%';

Forçage de l’affectation dans la table ZY3B sur les salariés sélectionnés :

Update ZY3B set idou00 = 'UO002090' where nudoss in (select nudoss from zy00 where matcle between 'M0020900' and 'M0021000') and idou00 like 'UO0%';

Forçage du manager sur l’UO de rattachement :

Update ze0b set matcle = 'M0020900' where nudoss in (select nudoss from ze00 where idou00 between 'UO002090' and 'UO002099');

Mise à jour manuelle des flat tables :

Update ZY3E a set A.IDOU00 = 'UO002090',MATCLE = 'M0020900' where nudoss in (select nudoss from zy00 where matcle between 'M0020900' and 'M0021000');

Gestion des établissements

Création de quelques établissements de test

Pour pouvoir tester une confidentialité par établissement, on peut vouloir rattacher des dossiers. Ici on crée un établissement de 250 salariés, un de 500, un de 1.000 et un de 2.000 salariés pour tester l’impact sur les temps de réponse :

UPDATE ZY38 SET IDESTA = 'FRYET250' where Nudoss in (select nudoss from zy00 where matcle > 'M0000000' and matcle < 'M0000251');

COMMIT;

UPDATE ZY38 SET IDESTA = 'FRYET500' where Nudoss in (select nudoss from zy00 where matcle > 'M0000500' and matcle < 'M0001001');

COMMIT;

UPDATE ZY38 SET IDESTA = 'FRYE1000' where Nudoss in (select nudoss from zy00 where matcle > 'M0002000' and matcle < 'M0003001');

COMMIT;

Publicité

UPDATE ZY38 SET IDESTA = 'FRYE2000' where Nudoss in (select nudoss from zy00 where matcle > 'M0003000' and matcle < 'M0005001');

COMMIT;

Affectation de tous les salariés à des établissements

Pour répartir les salariés par établissement, on peut utiliser les ordres SQL ci-dessous. Pour chaque salarié, ils vont affecter un établissement codifié « ETnnnnnn » regroupant 500 salariés de matricule M0nnnnnn à M0(nnnnnn + 500).

Exemple : l’établissement ET013000 regroupe les salariés M0013000 à M0013499. Et ET013500 regroupe les salariés M0013500 à M0013999.

UPDATE ZY38 A SET A.IDESTA = (SELECT 'ET'||substr(B.matcle,3,3)||'000' from ZY00 B where A.NUDOSS=B.NUDOSS) WHERE Nudoss in (select nudoss from zy00 where matcle like 'M0%' );

UPDATE ZY38 A SET A.IDESTA = (SELECT 'ET'||substr(B.matcle,3,3)||'500' from ZY00 B where A.NUDOSS=B.NUDOSS) WHERE Nudoss in (select nudoss from zy00 where matcle like 'M0%' and substr(matcle,6,1) >='5');

COMMIT;

En annexe 3, une routine qui fait la même chose en PL/SQL. On peut la modifier pour adapter le nombre de salariés par établissement, ou la codification des établissements.

Remarque : Si les paies ont déjà été calculées pour ces salariés, il est possible de modifier directement les dossiers de PRDB pour ne pas avoir à relancer les jobs de paie.

UPDATE ZX37 A SET A.ETABLI = (SELECT IDESTA FROM ZY38 WHERE NULIGN=1 AND NUDOSS = (SELECT B.NUGEST FROM ZX00 B WHERE A.NUDOSS=B.NUDOSS)) ;

COMMIT;

Si les paies sont calculées après la mise à jour, les dossiers PRDB contiendront la bonne valeur.

Annexes

Modifications du programme BCG pour dupliquer les dossiers

A partir d'une population de départ (voir la population totale) pour une SD dans un environnement, ces modifications du programme BCG vont permettre à une chaîne NOY de produire un fichier multipliant la population de départ par un facteur quelconque. Les modifications de BCG permettent en outre de faire évoluer un certain nombre d'informations des dossiers ainsi dupliqués (en particulier, il sera nécessaire d'adapter l'identifiant du dossier).

Exemple avec des dossiers salariés

Dans le squelette de BCG, il faut modifier les lignes identifiées ici avec le numéro ‘xxxxxx’ :

1. en Working :

xxxxxx 01 DUPLICATION.

xxxxxx\* indices de travail avec coefficient multiplicateur a 10000

xxxxxx\* c’est le nombre de copies de chaque dossier d’origine

xxxxxx 05 IDUPLR PICTURE S9(8) VALUE +10000.

xxxxxx 05 IDUPLM PICTURE S9(8) VALUE +10000.

xxxxxx\* valeur de départ NUDOSS (inutile s'il existe une séquence)

xxxxxx 05 DUPL-NUDOSS PICTURE S9(9) VALUE 000200000.

xxxxxx\* compteur de dossiers dupliqués

xxxxxx 05 DUPL-CPT PICTURE S9(9) VALUE ZERO.

xxxxxx\* variables de transformation des dossiers dupliqués

xxxxxx\* Numéro de départ

xxxxxx 05 DUPL-MATCLE-INIT PIC 9(6) VALUE 0.

xxxxxx 05 DUPL-MATCLE.

xxxxxx 10 DUPL-DEB-MATCLE PIC X(3) VALUE 'M0'.

xxxxxx 10 DUPL-FIN-MATCLE PIC 9(6).

xxxxxx 10 DUPL-FIL-MATCLE PIC X(4) VALUE SPACE.

xxxxxx 05 DUPL-NOMPAT VALUE SPACE.

xxxxxx 10 DUPL-DEB-NOMPAT PIC X(1).

xxxxxx 10 DUPL-SUI-NOMPAT PIC 9(5).

xxxxxx 10 DUPL-FIN-NOMPAT PIC X(26).

1. Dans la fonction F9FCD : on remplace le Perform F9N par un appel BLS

557300 F9FCD. IF IOCCUR = W-WP00-NOMBRE P005

557400 AND W-WP00-TESUIT = "1" P010

557500 NEXT SENTENCE ELSE GO TO F9FCD-FN. P010

557600 MOVE S-CDINFO TO W-ZP00-CDINFO P020

557700 MOVE W-SUIT-TYAPEL TO W-ZP00-TYAPEL P030

xxxxxx\\\* Remplacement Perform Fonction par appel direct BLS

xxxxxx\\ PERFORM F9N THRU F9N-FN P040

xxxxxx\*<SUBRAD>RDPROG CALDYN. P010

xxxxxx MOVE "%1BLS" TO W-WM00-CDMODU. P015

xxxxxx CALL W-WM00-CDMODU USING P020

xxxxxx Z-ZONE-ETAL P030

xxxxxx ZP00-ZONEUT P040

xxxxxx ZP00-GRTRAV P050

xxxxxx Z-ZTEC-ETAL. P060

557900 MOVE SPACE TO W-ZP00-TYAPEL. P050

558000\N9FCH. NOTE \ERREUR DE TRAITEMENT \*. P005

1. en remplacement de la fonction F9N :

496500\N9N. NOTE \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\. P005

496600\ \ \* P005

496700\ \LECTURE FICHIER GIP \* P005

496800\ \ \* P005

496900\ \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\. P005

497000 F9N. EXIT. P005

497100\N9NDB. NOTE \LECTURE PAR BLS \*. P005

xxxxxx F9NDB. IF IDUPLR = IDUPLM P005

xxxxxx NEXT SENTENCE ELSE GO F9NDB-FN.

xxxxxx MOVE +1 TO IDUPLR.

497300\*<SUBRAD>RDPROG CALDYN. P010

497400 MOVE "%1BLS" TO W-WM00-CDMODU. P015

497500 CALL W-WM00-CDMODU USING P020

497600 Z-ZONE-ETAL P030

497700 ZP00-ZONEUT P040

497800 ZP00-GRTRAV P050

497900 Z-ZTEC-ETAL. P060

xxxxxx GO TO F9NFB-FN.

498000 F9NDB-FN. EXIT. P060

xxxxxx F9NFB.

xxxxxx ADD +1 TO IDUPLR.

xxxxxx F9NFB-FN. EXIT.

xxxxxx F9NHB.

xxxxxx ADD +1 TO DUPL-CPT.

xxxxxx MOVE DUPL-NUDOSS TO Z-NUDOSS.

xxxxxx ADD DUPL-CPT TO Z-NUDOSS.

xxxxxx ADD DUPL-CPT DUPL-MATCLE-INIT GIVING DUPL-FIN-MATCLE.

xxxxxx MOVE DUPL-MATCLE TO Z-ZY00-MATCLE.

xxxxxx MOVE DUPL-MATCLE TO Z-ZY05-NOMPAT.

xxxxxx MOVE DUPL-MATCLE TO Z-ZY07-NOMUSE.

xxxxxx F9NHB-FN. EXIT.

498100 F9N-FN. EXIT. P060

Publicité

Dans l'exemple proposé, la population en entrée de NOY sera multiplié par 10000, les dossiers porteront un NUDOSS numéroté de 1 en 1 à partir de 200000, le matricule sera de format « M0nnnnnn », les NOMPAT et NOMUSE seront égaux au matricule.

En fonction du test à effectuer, il pourra être intéressant de compléter les modifications du dossier qui se trouve entièrement étalé et donc facilement modifiable.

Exemple avec des UOs

Au squelette de BCG, il faut ajouter :

1. en Working :

xxxxxx 01 DUPLICATION.

xxxxxx\* indices de travail avec coefficient multiplicateur à 5000

xxxxxx 05 IDUPLR PICTURE S9(8) VALUE +5000.

xxxxxx 05 IDUPLM PICTURE S9(8) VALUE +5000.

xxxxxx\* valeur de départ des NUDOSS créés

xxxxxx 05 DUPL-NUDOSS PICTURE S9(9) VALUE 000200000.

xxxxxx\* compteur de dossiers dupliqués

xxxxxx 05 DUPL-CPT PICTURE S9(9) VALUE ZERO.

xxxxxx\* variables de transformation des dossiers dupliqués

xxxxxx\* Numéro de départ

xxxxxx 05 DUPL-IDOU00-INIT PIC 9(5) VALUE 0.

xxxxxx 05 DUPL-IDOU00.

xxxxxx 10 DUPL-DEB-IDOU00 PIC X(4) VALUE 'UO0'.

xxxxxx 10 DUPL-FIN-IDOU00 PIC 9(5).

xxxxxx 10 DUPL-FIL-IDOU00 PIC X(2) VALUE SPACE.

1. Dans la fonction F9FCD : on remplace le Perform F9N par un appel BLS

557300 F9FCD. IF IOCCUR = W-WP00-NOMBRE P005

557400 AND W-WP00-TESUIT = "1" P010

557500 NEXT SENTENCE ELSE GO TO F9FCD-FN. P010

557600 MOVE S-CDINFO TO W-ZP00-CDINFO P020

557700 MOVE W-SUIT-TYAPEL TO W-ZP00-TYAPEL P030

xxxxxx\\\* Remplacement Perform Fonction par appel direct BLS

xxxxxx\\ PERFORM F9N THRU F9N-FN P040

xxxxxx\*<SUBRAD>RDPROG CALDYN. P010

xxxxxx MOVE "%1BLS" TO W-WM00-CDMODU. P015

xxxxxx CALL W-WM00-CDMODU USING P020

xxxxxx Z-ZONE-ETAL P030

xxxxxx ZP00-ZONEUT P040

xxxxxx ZP00-GRTRAV P050

xxxxxx Z-ZTEC-ETAL. P060

557900 MOVE SPACE TO W-ZP00-TYAPEL. P050

558000\N9FCH. NOTE \ERREUR DE TRAITEMENT \*. P005

1. en remplacement de la fonction F9N :

585500 F9N. EXIT. P005

585600\N9NDB. NOTE \LECTURE PAR BLS \*. P005

xxxxxx F9NDB. IF IDUPLR = IDUPLM P005

xxxxxx NEXT SENTENCE ELSE GO F9NDB-FN.

xxxxxx MOVE +1 TO IDUPLR.

585800\*<SUBRAD>RDPROG CALDYN. P010

585900 MOVE "%1BLS" TO W-WM00-CDMODU. P015

586000 CALL W-WM00-CDMODU USING P020

586100 Z-ZONE-ETAL P030

586200 ZP00-ZONEUT P040

586300 ZP00-GRTRAV P050

586400 Z-ZTEC-ETAL. P060

xxxxxx GO TO F9NFB-FN.

586500 F9NDB-FN. EXIT. P060

xxxxxx F9NFB.

xxxxxx ADD +1 TO IDUPLR.

xxxxxx F9NFB-FN. EXIT.

xxxxxx F9NHB.

xxxxxx ADD +1 TO DUPL-CPT.

xxxxxx MOVE DUPL-NUDOSS TO Z-NUDOSS.

xxxxxx ADD DUPL-CPT TO Z-NUDOSS.

xxxxxx ADD DUPL-CPT DUPL-IDOU00-INIT GIVING DUPL-FIN-IDOU00.

xxxxxx MOVE DUPL-IDOU00 TO Z-ZE00-IDOU00.

xxxxxx MOVE DUPL-IDOU00 TO Z-ZE01-LBOULG.

xxxxxx MOVE DUPL-IDOU00 TO Z-ZE01-LBOUSH.

xxxxxx F9NHB-FN. EXIT.

586600 F9N-FN. EXIT. P060

Dans l'exemple proposé, la population en entrée de NOY sera multiplié par 5000, les dossiers porteront un NUDOSS numéroté de 1 en 1 à partir de 200000, le code de l’UO sera de format « UO0nnnnn », les libellés longs et libellés courts de l’UO seront égaux au code.

Routine de création des codes utilisateurs

Table UC10

La routine ci-dessous permet de créer des codes utilisateurs dans la table UC10. Il suffit d’assigner à la variable n\_max le nombre de users à créer (entre 1 et 99999) et de lancer la routine suivante :

set serveroutput on

declare

n\_max number := nnnnnn ;

n number := 0 ;

res\_str varchar2(100);

begin

loop

n := n+1 ;

INSERT INTO UC10 (SELECT 'U0'||TO\_CHAR(n,'FM000000') , 'SALARIE M'||SUBSTR(CDUTIL,2,7), 'HR',CDLANG,CRYPTO,TECONC, TEGEST, TETRAD, TEDESI, TEAPPL, NUVCLI, NURCLI, TYUTIL, TICONN, TIMODI, TIMPSW, LASTCN, TEVERR, CDUTVE, IDSESS, NUVERS, CDUTMO, CDMC01, CDMC02, CDMC03, CDMC04, CDMC05, CDMC06, CDMC07, CDMC08, CDMC09, CDMC10, PGPUSE, STUDIO, ZONPSW from UC10 WHERE CDUTIL = '\_\_\_\_\_\_\_\_');

Exit when n = n\_max ;

end loop;

Commit;

end;

/

Table UC15 pour HR Access

Pour un test purement HR Access (sans 4YOU) par exemple, on peut créer une ligne de modèle de rôle ALLHRLO pour chaque utilisateur avec la routine suivante :

set serveroutput on

declare

n\_max number := nnnnnn;

n number := 0 ;

Publicité

res\_str varchar2(100);

begin

loop

n := n+1 ;

INSERT INTO UC15 (SELECT 'U0'||TO\_CHAR(n,'FM000000') , 'ALLHRLO','FR','1' from UC10 WHERE CDUTIL = '\_\_\_\_\_\_\_\_');

Exit when n = n\_max ;

end loop;

Commit;

end;

/

Résultat :

CDUTIL ROLMOD ROLVAL

-------- -------------------- ----------------

U0002341 ALLHRLO FR

U0002342 ALLHRLO FR

U0002343 ALLHRLO FR

Table UC15 pour 4YOU

Pour un test 4YOU, on peut créer des lignes Expert Paie et Expert PAD pour certains utilisateurs. La routine suivante ajoute un rôle Expert Paie tous les 500 users (U0000000, U0000500, ….)

set serveroutput on

declare

n\_max number := 50000;

paquet number := 0;

n number := 0;

cle char(8);

mat1 char(12);

uc15 char (27);

statmt varchar (150);

begin

loop

n := n+500 ;

cle := 'U0'||TO\_CHAR(n,'FM000000');

mat1 :='ET'||TO\_CHAR(n,'FM000000');

uc15 := 'FRL'||mat1;

INSERT INTO HR.UC15 VALUES (cle, 'PLCLPAY', uc15,'1') ;

paquet :=paquet+1;

Exit when n = n\_max ;

end loop;

dbms\_output.put\_line ('Nombre de lignes insérées : '||paquet);

end;

/

On peut aussi ajouter un rôle Gestionnaire aux experts Paie

INSERT INTO UC15 (SELECT CDUTIL,'PLCLPAD',ROLVAL,'0' FROM UC15 WHERE rolmod = 'PLCLPAY' and CDUTIL like 'U0%' and CDUTIL <> 'U0000000');

Affectation d’un établissement à tous les salariés

La routine suivante crée des paquets de 500 salariés par établissement dans ZY38.

set serveroutput on

declare

n\_max number := 500 ;

m number := 0 ;

n number := 0 ;

adresse rowid ;

recip VARCHAR2(36);

res\_str varchar2(100);

mat\_3 char(3) ;

mat\_num char(5) ;

mat char(12) ;

valideur char(8) :='M0000000';

num char(5) :='00000';

CURSOR RID\_Curs IS

SELECT b.rowid,a.matcle

FROM zy38 b,ZY00 a where a.nudoss=b.nudoss and a.matcle like 'M0%' order by a.matcle ;

begin

open RID\_Curs;

loop

Fetch RID\_Curs INTO adresse,mat;

EXIT WHEN RID\_Curs%NOTFOUND;

SELECT SUBSTR(mat,3,6) into mat\_num from dual;

SELECT SUBSTR(mat,6,3) into mat\_3 from dual;

IF mat\_3= '500' OR mat\_3= '000' THEN

num :=mat\_num;

END IF;

UPDATE ZY38 SET IDESTA = 'ET'||num where rowid = adresse;

m := m+1 ;

end loop;

CLOSE RID\_Curs;

commit;

res\_str := ' lignes mises a jour ';

res\_str := m||res\_str;

dbms\_output.put\_line(res\_str);

end;

/

Ici les salariés M0000001 à M0000499 pointeront sur ET000000, les M0000500 à M0000999 sur ET000500 par exemple.

Fin du document