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