Bonjour à tous,
depuis une APi, je dois passer un objet java en paramètre à un pgm As400. Je ne sais pas trop comment m'y prendre pour le découper? et le convertir
pourriez-vous m'aider ?
merci
Voici l'objet Java:
{
"contact": {
"codeClient": 800105,
"idContactClient": 27,
"nom": "DUPONT ",
"prenom": "FRANCK "
},
"entete": {
"codeVendeur": 11,
"nomFacturation": "JO ",
"rueFacturation": "RUE DE LA PAIX ",
"codePostalFacturation": "75000",
"villeFacturation": "PARIS "
},
"lignes": [
{
"codeArticle": 4031010,
"designationArticle": "ETAGERE 60X240 ",
"quantite": 10,
"prixVente": 81.4,
"montantLigne": 814
},
{
"codeArticle": 9000038,
"designationArticle": "FRAIS DE LIVRAISON ",
"quantite": 1,
"prixVente": 49,
"montantLigne": 49
}
],
"toEmail": true,
"email": "test@test.fr"
}
API Java et passage d'un objet en paramètre
-
- Messages : 54
- Enregistré le : ven. 22 janv. 2021, 10:21:13
Re: API Java et passage d'un objet en paramètre
Bonjour,
Personnellement, je partirais sur une DS comme celle-là (à adapter):
N.B. :
J'ai l'habitude de créer des DS distinctes pour des raisons de ré-utilisabilité dans le programme. Je peux ainsi instancier qu'une partie.
Personnellement, je partirais sur une DS comme celle-là (à adapter):
Code : Tout sélectionner
dcl-ds contactDS qualified template;
codeClient zoned(6) inz(0);
idContactClient zoned(2) inz(0);
nom char(50) inz('');
prenom char(50) inz('');
end-ds;
dcl-ds enteteDS qualified template;
codeVendeur zoned(2) inz(0);
nomFacturation char(50) inz('');
rueFacturation char(50) inz('');
codePostalFacturation char(5) inz('');
villeFacturation char(50) inz('');
end-ds;
dcl-ds ligneDS qualified template;
codeArticle zoned(10) inz(0);
designationArticle char(50) inz(0);
quantite zoned(50) inz(0);
prixVente zoned(9:2) inz(0);
montantLigne zoned(9:2) inz(0);
end-ds;
dcl-ds payloadDS qualified template;
toEmail char(5) inz('');
email char(100) inz('');
dcl-ds data;
contact likeds(contactDS);
entete likeds(enteteDS);
lignes likeds(ligneDS) dim(999);
end-ds;
end-ds;
ensuite je créé une procédure :
dcl-proc receptionPayload export;
dcl-pi receptionPayload;
payload likeds(payloadDS);
httpStatus int(10);
end-pi;
J'ai l'habitude de créer des DS distinctes pour des raisons de ré-utilisabilité dans le programme. Je peux ainsi instancier qu'une partie.
Re: API Java et passage d'un objet en paramètre
Bonjour SebastienB,
je vous remercie de votre réponse.
Du Côté de l'api, je recherche comment convertir/passer l'objet en paramètre.
J'ai fait plusieurs essais avec des get notamment mais ne trouve pas la bonne syntaxe .
Le nom de l' objet CommandeClient.
parametersList[1] = new ProgramParameter(nametext1.toBytes(CommandeClient....));
Auriez-vous la bonne syntaxe ?
merci
je vous remercie de votre réponse.
Du Côté de l'api, je recherche comment convertir/passer l'objet en paramètre.
J'ai fait plusieurs essais avec des get notamment mais ne trouve pas la bonne syntaxe .
Le nom de l' objet CommandeClient.
parametersList[1] = new ProgramParameter(nametext1.toBytes(CommandeClient....));
Auriez-vous la bonne syntaxe ?
merci
-
- Messages : 54
- Enregistré le : ven. 22 janv. 2021, 10:21:13
Re: API Java et passage d'un objet en paramètre
Comment sont déclarés les paramètres en entrée du programme RPG ?
S'il s'agit d'une DS, côté Java, il est nécessaire de créer un objet reprenant la structure de la DS
Ex. avec la DS contact
Puis affecter cet objet aux paramètres avant appel du programme.
S'il s'agit d'une DS, côté Java, il est nécessaire de créer un objet reprenant la structure de la DS
Ex. avec la DS contact
Code : Tout sélectionner
// Paramètre de la DS d'entrée
AS400DataType[] dataTypeDsEntree = {
new AS400ZonedDecimal(9, 0), // codeClient
new AS400ZonedDecimal(2, 0), // idContactClient
new AS400Text(50), // nom
new AS400Text(50), // prenom
};
AS400Structure structureDsEntree = new AS400Structure(dataTypeDsEntree);
// Création et affectation des valeurs
Object[] inputDataObjDsEntree = {
BigDecimal.valueOf(codeClient),
BigDecimal.valueOf(idContactClient),
nom,
prenom
};
Code : Tout sélectionner
listeParametres = new ProgramParameter[1]; // paramètres (1 input)
// Affectation des paramètres
listeParametres[0] = new ProgramParameter(structureDsEntree.toBytes(inputDataObjDsEntree));
Re: API Java et passage d'un objet en paramètre
je vais essayer comme cela
merci beaucoup -)
merci beaucoup -)
Re: API Java et passage d'un objet en paramètre
Bien sûr, voici comment vous pourriez découper et convertir l'objet Java pour le passer en paramètre à un programme As400 :
Découper l'objet Java en ses différentes parties (contact, entete, lignes, toEmail, email) afin de les traiter séparément.
Pour chaque partie, vous devez convertir les données au format requis par le programme As400. Cela dépend du format attendu par le programme, donc je vais supposer quelques conversions :
Pour "contact", vous pouvez extraire les champs "codeClient", "idContactClient", "nom" et "prenom".
Pour "entete", vous pouvez extraire les champs "codeVendeur", "nomFacturation", "rueFacturation", "codePostalFacturation" et "villeFacturation".
Pour "lignes", vous devez traiter chaque élément de la liste séparément et extraire les champs "codeArticle", "designationArticle", "quantite", "prixVente" et "montantLigne".
Pour "toEmail" et "email", vous pouvez simplement les récupérer tels quels.
Ensuite, vous devrez convertir les données dans le format requis par le programme As400, par exemple, en utilisant des chaînes de caractères ou des formats spécifiques pour les nombres.
N'hésitez pas à fournir plus de détails sur le format attendu par le programme As400 si vous avez besoin d'une aide plus spécifique.
Découper l'objet Java en ses différentes parties (contact, entete, lignes, toEmail, email) afin de les traiter séparément.
Pour chaque partie, vous devez convertir les données au format requis par le programme As400. Cela dépend du format attendu par le programme, donc je vais supposer quelques conversions :
Pour "contact", vous pouvez extraire les champs "codeClient", "idContactClient", "nom" et "prenom".
Pour "entete", vous pouvez extraire les champs "codeVendeur", "nomFacturation", "rueFacturation", "codePostalFacturation" et "villeFacturation".
Pour "lignes", vous devez traiter chaque élément de la liste séparément et extraire les champs "codeArticle", "designationArticle", "quantite", "prixVente" et "montantLigne".
Pour "toEmail" et "email", vous pouvez simplement les récupérer tels quels.
Ensuite, vous devrez convertir les données dans le format requis par le programme As400, par exemple, en utilisant des chaînes de caractères ou des formats spécifiques pour les nombres.
N'hésitez pas à fournir plus de détails sur le format attendu par le programme As400 si vous avez besoin d'une aide plus spécifique.
Tous les détails à savoir sur pdfsmart
Re: API Java et passage d'un objet en paramètre
Bonjour,
Personnellement je trouve que çà ressemble très fortement à un JSON.
Donc je créerai mes DS correspondantes et ensuite j'utiliserai Data-Into pour remplit ces DS.
Personnellement je trouve que çà ressemble très fortement à un JSON.
Donc je créerai mes DS correspondantes et ensuite j'utiliserai Data-Into pour remplit ces DS.