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 : 48
- 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 : 48
- 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 -)