Je rencontre un petit problème avec le %handler et le XML-into pour un fichier XML qui a des sous-imbrications. Voici un exemple du fichier que je veux importer :
Code : Tout sélectionner
<CPPStructurePartenaireUnitaire>
<TypeIdentifiant>1</TypeIdentifiant>
<Identifiant>25200113600016</Identifiant>
<RaisonSociale>SIVOS ECOLES CARBUCCIA UCCIANI</RaisonSociale>
<AdressePostale>
<Adresse>MAIRIE DE CARBUCCIA</Adresse>
<CodePostal>20133</CodePostal>
<Ville>CARBUCCIA</Ville>
<Pays>
<Code>FR</Code>
<Libelle>France</Libelle>
</Pays>
<NumTelephone>495528125</NumTelephone>
<Courriel>mairiedecarbuccia@orange.fr</Courriel>
</AdressePostale>
<Services>
<Service>
<Code>FACTURES_PUBLIQUES</Code>
<Nom>Service des factures publiques</Nom>
<GestionEGMT>false</GestionEGMT>
<ServiceActif>true</ServiceActif>
</Service>
<Service>
.....
</Service>
<Service>
.....
</Service>
<Service>
.....
</Service>
</Services>
<EmetteurEdi>false</EmetteurEdi>
<RecepteurEdi>false</RecepteurEdi>
<GestionStatutMiseEnPaiement>false</GestionStatutMiseEnPaiement>
<GestionEngagement>false</GestionEngagement>
<GestionService>false</GestionService>
<GestionServiceEngagement>false</GestionServiceEngagement>
<EstMOA>false</EstMOA>
<EstMOAUniquement>false</EstMOAUniquement>
<StructureActive>true</StructureActive>
</CPPStructurePartenaireUnitaire>
Voici la déclaration de mes data-structures :
Code : Tout sélectionner
//bloc CPPStructurePartenaireUnitaire
dcl-ds annuaire QUALIFIED DIM(100);
TypeIdentifiant CHAR(1);
Identifiant CHAR(14);
RaisonSociale CHAR(80);
AdressePostale LIKEDS(adresseT);
Services LIKEDS(servicesT);
EmetteurEdi CHAR(5); //Boolean true / false
RecepteurEdi CHAR(5); //Boolean true / false
GestionStatutMiseEnPaiement CHAR(5); //Boolean true / false
GestionEngagement CHAR(5); //Boolean true / false
GestionService CHAR(5); //Boolean true / false
GestionServiceEngagement CHAR(5); //Boolean true / false
EstMOA CHAR(5); //Boolean true / false
EstMOAUniquement CHAR(5); //Boolean true / false
StructureActive CHAR(5); //Boolean true / false
nbrstruct int(10);
end-ds;
dcl-ds servicesT qualified;
Service LIKEDS(serviceT) DIM(100);
nbrservices int(10);
end-ds;
//Sous-tableau service
dcl-ds serviceT qualified template;
Code CHAR(100);
Nom CHAR(100);
AdressePostale LIKEDS(adresseT);
GestionEGMT CHAR(5); //Boolean true / false
ServiceActif CHAR(5); //Boolean true / false
nbrservice int(10);
end-ds;
//Sous-tableau Adresse
dcl-ds adresseT qualified template;
Adresse CHAR(100);
ComplementAdresse1 CHAR(100);
ComplementAdresse2 CHAR(100);
CodePostal CHAR(5);
Ville CHAR(100);
Pays likeds(paysT);
NumTelephone CHAR(10);
Courriel CHAR(100);
end-ds;
//Sous-tableau paysT
dcl-ds paysT template;
Code CHAR(2);
Libelle CHAR(100);
end-ds;
Le handler lit bien tous les enregistrements mais le soucis est au niveau de la data structure services que je déclare en DIM(100). il ne va me prendre que jusqu'à 100 service maximum.
Le problème étant que certains enregistrements ont plus de 100 services.
J'ai essayé de déclarer un dim(999) mais j'ai une erreur à la compilation que l'élément de donnée dépasse 16mo. J'ai essayé d'ajouter également l'option countprefix afin de savoir le nombre d'enregistrement dans la ds mais la valeur est toujours 0.
Comment je peux arriver a parser tous les services sans limite ?
Merci