Blog Pro de Jean-Baptiste HEREN

Notes d'un consultant Freelance en Informatique

To content | To menu | To search

Ecrire un fichier avec Peoplecode

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;

&mySql.close();
&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);

REM Fremeture du Fichier;
&myFile.close();

4- Pour conclure

Il est intéressant de noter que la lecture d'un fichier suit les mêmes règles que l'écriture. Il suffira d'utiliser par exemple,  les méthodes ReadLine() ou ReadRowset().
Jean-Baptiste Heren

Author: Jean-Baptiste Heren

Stay in touch with the latest news and subscribe to the RSS Feed about this category

Comments are closed


no attachment



You Might Also Like

Finding one component location in the peoplesoft portal

Just replace the 'MY_COMPONENT_GBL' parameter in the following sql script. This works for MS SQl Server. You can add more levels by adding Outer Joins. [SQL] /* Where is my component in the portal */...

Continue reading

02_-_new_component_interface.png

Peoplesoft Component interface HOWTO

Here is a tutorial explaining how you can create a function containing one Component INterface, and make use of it from any peolplecode. Following example takes the PO Receipt Component to make...

Continue reading