Ecrire un fichier avec Peoplecode
Posted on Monday 25 February 2008, 20:10 - Peoplesoft - Permalink Tweet
- Article
- |
- Comments(0)
- |
- Attachments(0)
Avec Peoplesoft, il existe plusieurs moyens de créer un fichier. Ceux-ci sont très utiles dans le développement d'interfaces avec d'autres logiciels ou appareils spécifiques.
Je présente ici deux solutions. La première laisse la main au développeur pour l'écriture des enregistrements. La seconde utilise une définition de colonages basée sur un Record.
1- Accéder au fichier
Dans les deux cas, nous commencerons par définir Notre Fichier, puis l'ouvrir en écriture.
Local File &myFile;
Local String &FileName, &FilePath;
&FilePath = "/temp/";
&FileName = "test.csv";
&myFile = GetFile(&FilePath | &FileName, "W", %FilePath_Absolute);
2- Ecriture "Manuelle"
Dans ce cas, nous pouvons simplement écrire des lignes formatées manuellement dans une chaîne de caractères.Local String &ligne;
Local SQL &mySql;
Local Boolean &result;
&result = &mySql.Fetch(&FIELD1, &FIELD2, &FIELD3, &FIELD4, &FIELD5);
&Ligne = &FIELD1 | ";" | &FIELD2 | ";" | &FIELD3 | ";" | &FIELD4 | ";" | &FIELD5;
&myFile.writeLine(&Ligne);
&mySql.close();
&myFile.Close();
3- Utilisation d'un FileLayout
Le FileLayout est un "objet" peoplesoft qui permet de définir des formats de fichiers en utilisant des records. L'avantage du couple Record / FileLayout réside dans le fait que lors des opérations de lecture/écriture, le développeur n'a pas à se soucier du format. Il est tés facile de passer une ligne de fichier directement dans une ligne de Record, et inversement.Pour créer un FileLayout :
- File / new /FileLayout
- Glisser Déposer le record désiré dans la fenêtre du FileLayout
- Définir le format au niveau Global (double clic sur le nom du FileLayout)
- Définir le format du Segment (douvle clic sur le nom du Record)
- Sauvegarde
Utilisation du FileLayout en Peoplecode.
Il suffit d'appliquer le format à un fichier défini précédemment.
&myFile.SetFileLayout(FileLayout.MYRECORD_LAYOUT);
Une fois ce format défini, nous pouvons passer aux opérations de lecture/écriture, en utilisant les Records et Rowsets.
3.1 - Ecriture ligne par ligne
Sélection des données via un objet sql et utilisation d'un Record pour stocker le résultat.
Local SQL &mySql;
Local Record &myRecord;
Local Boolean &result;
&mySql = GetSQL(SQL.THE_SQL_OBJECT, &PARAM1, &PARAM2);
REM Boucle sur chaque Ligne Résultante;
While &mySql.Fetch(&MyRecord)
REM écriture du record;
&myFile.writeRecord(&myRecord);
end-While;
&myFile.close();
3.2 - Ecriture du Rowset en une fois
Sélection d'un ensemble de données dans un Rowset.
Local Rowset &myRowset = CreateRowset(Record.MYRECORD);
&myRowset.Fill("WHERE FIELD1 = :1 AND FIELD2 = :2", &PARAM1,
&PARAM2);
REM Ecriture de l'ensemble des lignes sélectionnées;
&myFile.WriteRowset(&myRowset, True);
&myFile.close();