Ich bin da demnächst mal auf dem Kundensystem und zeige davon dann mein Beispiel.
So (Auszüge):
Analog musst du also ebenso deine XML-Struktur rekursiv aufbauen und mittels geschachteltem likeds() zusammenbauen.Code:d* Datum-Referenz dC_C507 ds qualified template d D_2380 20 varying dS_DTM ds qualified template d C_C507 likeds(C_C507) d* Preise dC_C509 ds qualified template d D_5125 10 varying d D_5118 15 varying d D_5375 10 varying d D_5378 10 varying d D_5284 10 varying d D_6411 10 varying dS_PRI ds qualified template d C_C509 likeds(C_C509) dG_LIN_PRI ds qualified template d S_PRI likeds(S_PRI) d S_DTM likeds(S_DTM) dim(2) d cntS_DTM 10i 0 dG_LIN ds qualified template d S_LIN likeds(S_LIN) d S_IMD likeds(S_IMD) dim(2) D G_LIN_PRI likeds(G_LIN_PRI) dim(2) d* Gesamtdokument dXMLFACT_ORDERS ds qualified d S_IMD likeds(S_IMD) d G_LIN likeds(G_LIN) dim(999) d cntG_LIN 10i 0 d G_LINi s 5i 0 dXMLName s 256 varying inz dXMLOption s 256 varying inz // Festlegen der XML-Optionen XMLOption = ' trim=all' // Leerzeichen am Anfang/Ende + ' allowmissing=yes' // fehlende Knoten ignorieren + ' allowextra=yes' // zusätzliche Knoten ignorieren + ' countprefix=cnt' // Zählervariable für Arrays + ' case=convert' // ungültige Zeichen in "_" konvertieren + ' doc=file' // XML aus Datei lesen ; XMLName = XMLPath + %trim(XMLOName); // Kompletter Pfadname XML-INTO XMLFACT_ORDERS %xml(XMLName : XMLOption); for G_LINi = 1 to XMLFACT_ORDERS.cntG_LIN; if XMLFACT_ORDERS.G_LIN(G_LINi) .S_LIN.C_C212.D_7140 <> *blank; // mit Sachnummer : : endif; endfor;
Aus Sicherheitsgründen definiere ich alles als Zeichenfelder um dann Zahl-/Datumswerte per individueller Konvertierung %date(), %dec() zu erhalten.
![[NEWSboard IBMi Forum]](images/duke/nblogo.gif)



Mit Zitat antworten
Bookmarks