PDA

View Full Version : XML into - dann leere Tabelle im Programm



fdh
04-03-20, 10:35
Hallo Forum,


Ich komme hier leider nicht weiter. Die ersten Felder (Kopfdaten (keine Tabelle)) sind nach dem XML into im Programm verfügbar, die Adresstabelle ist aber leer.


Entferne ich das all allowmissing=yes, gibt es eine Laufzeitfehler
Das XML-Dokument entspricht nicht der RPG-Variablen; Ursachencode 4.
Ursache . . . . : Beim Parsing eines XML-Dokuments hat der Parser
festgestellt, dass das XML-Dokument nicht der RPG-Variablen "edi_pdf_export"
entspricht und die Optionen dies nicht zulassen. Der Ursachencode ist 4. Das
Unterfeld, für das der Fehler festgestellt wurde, ist
"edi_pdf_export.kopfdaten.adressdaten". ……


XML
557



Definition im Programm
0010.00 // Root .................................................. ......
0011.00 dcl-ds Edi_pdf_export qualified;
0012.00 Kopfdaten likeds(Kopfdaten);
0013.00 end-ds;
0014.00
0015.00 // Template Kopfdaten......................................... ..
0016.00 dcl-ds Kopfdaten template qualified;
0017.00 WS_Auftrags_Nr char(20);
0018.00 Kunden_Bestelldatum char(10);
0019.00 Kunden_Liefertermin char(10);
0020.00 Kunden_Kommission char(10);
0021.00 Adressdaten likeds(Adressdaten);
0022.00 end-ds;
0023.00
0024.00 // Template Adressdaten....................................... ..
0025.00 dcl-ds Adressdaten template qualified;
0026.00 Adresse likeds(Adresse) dim(04);
0027.00 Cnt_Adresse int(10);
0028.00 end-ds;
0029.00
0030.00 // Template Adresse........................................... ..
0031.00 dcl-ds Adresse template qualified;
0032.00 //*** AdressType char(20);
0033.00 Name char(20);
0034.00 Strasse char(20);
0035.00 PLZ char(20);
0036.00 Ort char(20);
0037.00 AdressGLN char(20);
0038.00 end-ds;
0039.00

Vielen Dank für einen Tip.
Grüss von Franco

Fuerchau
04-03-20, 11:22
Du must den XML-Into 2x kodieren, jeweils mit dem PATH zum Hauptknoten, 1x Kopfdaten, 1x Adressdaten.
XML-INTO kann nur 1 Knoten in eine DS auflösen.

camouflage
04-03-20, 12:17
Hi,

Folgendes, ich hab mittlerweile Uebung:
Fehler: Du hast die Adressdaten in die Kopfdaten eingebettet.

Richtig wäre:


dcl-ds Edi_pdf_export qualified;
Kopfdaten likeds(t_Kopfdaten);
Adressdaten likeds (t_Adressdaten);
dim(4);
end-ds;

// Template Adresse........................................... ..
dcl-ds t_Adresse template qualified;
AdressType char(20);
Name char(20);
Strasse char(20);
PLZ char(20);
Ort char(20);
AdressGLN char(20);
Cnt_Adresse int(10);
end-ds;

Die DS der Kopfdaten (definiere die DS analog der Adresse: t_Kopfdaten) hab ich nicht aufgeführt.

Dann:
dcl-c options 'doc=file +
ccsid=best +
ns=remove +
case=any +
allowmissing=yes +
allowextra=yes +
countprefix=cnt_ +
path=Edi_pdf_export';

monitor;
xml-into Order
%xml(%trim(InpFile):options);
on-Error;
... ; //XML-INTO fails
return;
endmon;


Es ist möglich ein ganzes EDi XML Dokument mit einem einzigen INTO einzulesen. Allerdings müssen die Knoten genaustens definiert sein.

Noch was mach die Felder gross genug.

Fuerchau
04-03-20, 12:51
Stimmt, den Hauptknoten haben meine 4 Augen nicht wahrgenommen;-).

fdh
04-03-20, 15:14
Vielen Dank. Das funktioniert jetzt. Der Knoten war wohl in meinem Kopf. Franco