-
@rainer
hier die quelle.
[
ctl-opt dftactgrp(*no);
//------------------------------------------------------------------//
// //
// Parsen XML-DATEN - CCSID DER XML-DATEI MUSS 1208 SEIN //
// //
//----------------- //
// R.Ross 12.2018 * //
//------------------------------------------------------------------//
// XML-Array - Root //
//------------------------------------------------------------------//
dcl-ds Data qualified;
Teile_Nr likeds(Data_tmp);
hgna likeds(hgna);
Ersteller likeds(Data_tmp);
Erstelldatum likeds(Data_tmp);
Workflow_Status likeds(Data_tmp);
Aenderungsdatum likeds(Data_tmp);
Aenderer likeds(Data_tmp);
meeh likeds(Data_tmp);
diart likeds(Data_tmp);
bez1 likeds(Data_tmp);
bez2 likeds(Data_tmp);
bez3 likeds(Data_tmp);
herna likeds(Data_tmp);
hernr likeds(Data_tmp);
cnnr likeds(Data_tmp);
ulfilenr likeds(Data_tmp);
csanr likeds(Data_tmp);
arstk_ likeds(Data_tmp);
arart_ likeds(Data_tmp);
herty likeds(Data_tmp);
csanorm likeds(Data_tmp);
Bemerkung likeds(Data_tmp);
Spezifikation likeds(Data_tmp);
end-ds;
//------------------------------------------------------------------//
// Template Data //
//------------------------------------------------------------------//
dcl-ds Data_tmp template qualified;
Fieldname char(10);
Data char(20);
end-ds;
//------------------------------------------------------------------//
// Template Datum //
//------------------------------------------------------------------//
dcl-ds Datu_tmp template qualified;
Fieldname char(10);
Data char(40);
end-ds;
//------------------------------------------------------------------//
// Element hgna //
//------------------------------------------------------------------//
dcl-ds hgna qualified;
Keygroup likeds(Keygroup);
end-ds;
//------------------------------------------------------------------//
// Element Keygroup //
//------------------------------------------------------------------//
dcl-ds Keygroup qualified;
Groupname char(40);
cnt_Keycharacteristic uns(10);
Keycharacteristic likeds(Keycharacteristic)dim(10);
end-ds;
//------------------------------------------------------------------//
// Element Keycharacteristic //
//------------------------------------------------------------------//
dcl-ds Keycharacteristic qualified;
Name char(10);
Data char(20);
end-ds;
//------------------------------------------------------------------//
// Processing //
//------------------------------------------------------------------//
main();
chain P4FILN ArtstaL05;
Eval p4andat=%TimeStamp ;
*inlr = *on;
//------------------------------------------------------------------//
// Main //
//------------------------------------------------------------------//
dcl-proc Main;
dcl-s LocOpt varchar(256); // XML-Options
dcl-s LocFile varchar(128); // File
LocFile = '/home/NOWAK/VORW/Part_w_SML_Export_PF_8_AS400.xml'; //FILE
LocOpt = 'doc=file case=any allowextra=yes +
countprefix=cnt_ datasubf=data';
monitor ;
xml-into(E) Data %xml(LocFile:LocOpt);
On-error 353 ;
Endmon ;
end-proc;
//------------------------------------------------------------------// PHP]
[/PHP]
und die XML-Datei:
PHP-Code:
<?xml version="1.0" encoding="utf-8"?>
<DATA>
<Teile_Nr FIELDNAME="NFT_IDNR">20411</Teile_Nr>
<hgna FIELDNAME="NFT_NAM1">Schraube
<KEYGROUP GROUPNAME="Blechschraube">
<KEYCHARACTERISTIC NAME="ugna">Blechschraube</KEYCHARACTERISTIC>
<KEYCHARACTERISTIC NAME="ugna_056">4,8</KEYCHARACTERISTIC>
<KEYCHARACTERISTIC NAME="ugna_107">38</KEYCHARACTERISTIC>
<KEYCHARACTERISTIC NAME="ugna_401">DIN EN ISO 7049</KEYCHARACTERISTIC>
<KEYCHARACTERISTIC NAME="ugna_208">C</KEYCHARACTERISTIC>
<KEYCHARACTERISTIC NAME="ugna_150">verzinkt</KEYCHARACTERISTIC>
<KEYCHARACTERISTIC NAME="ugna_999">BlauGrau</KEYCHARACTERISTIC>
</KEYGROUP>
</hgna>
<Ersteller FIELDNAME="NFT_KON">BizTalkImport</Ersteller>
<Erstelldatum FIELDNAME="NFT_DAT">2018-05-24T16:07:12</Erstelldatum>
<Workflow-Status FIELDNAME="NFT_ZUST">20000</Workflow-Status>
<Aenderungsdatum FIELDNAME="NFT_MDAT">0001-01-01T01:00:00</Aenderungsdatum>
<Aenderer FIELDNAME="NFT_MKON"></Aenderer>
<meeh FIELDNAME="NFT_STK2">01</meeh>
<diart FIELDNAME="NFT_STK3">K</diart>
<bez1 FIELDNAME="NFT_STL0">Blechschraube</bez1>
<bez2 FIELDNAME="NFT_STL1">Linsen mit Kreuzschlitz</bez2>
<bez3 FIELDNAME="NFT_STL2"></bez3>
<herna FIELDNAME="NFT_STL3"></herna>
<hernr FIELDNAME="NFT_STL4"></hernr>
<cnnr FIELDNAME="NFT_STL5"></cnnr>
<ulfilenr FIELDNAME="NFT_STL6"></ulfilenr>
<csanr FIELDNAME="NFT_STL7"></csanr>
<arstk_ FIELDNAME="NFT_STL8">DIN EN ISO 7049</arstk_>
<arart_ FIELDNAME="NFT_STL9">2002523</arart_>
<herty FIELDNAME="NFT_STH0"></herty>
<csanorm FIELDNAME="NFT_STH1"></csanorm>
<Bemerkung FIELDNAME="ML_STRING"></Bemerkung>
<Spezifikation FIELDNAME="ML_STRING"></Spezifikation>
</DATA>
Leider arbeite ich noch Spaltenorientiert,
wo müsste ich denn den *entry , chain und update einsetzen?
LG
Hans-Joachim
-
Macht ja nichts, da du sie ja verarbeiten kannst. Namen bis 128 Stellen (ist zwar mühsam, aber RDi hilft) sind ja möglich.
Im sog. *SNGSTG-Modell sind Datenstrukturen bis max. 16 MB möglich (bei UCS2 eben nur 8MB).
Du kannst aber beim CRTxxxMOD/PGM auf das *TERASPACE-Modell umstellen. Dann sind DS'n bis 2 Terabyte machbar, wenn das System mitmacht;-).
-
Liebes Forum,
irgendetwas mache ich falsch..... nur sehe ich den Wald vor lauter Bäumen nicht.
Die Structur ist PGMRequest;OBJECTS;PART; innerhalb von PART kommt KEYS mit PROFILEKEY + FOREIGNKEY danach DATA mit hgna und weiteren Feldern von DATA
Die Felder von PGMRequest werden gefüllt,
KEYS wird gefüllt (Profilekey als auch Foreignkey)
DATA 1. Postition Teile-Nr wird gefüllt,
hgna - Fnt_nam1 = "Schraube" bekomme ich nicht ,
GROUPNAME ist gefüllt und die ersten 3 KEYCHARACTERISTIC(Name+Data) werden gefüllt, die nächsten 3 bleiben leer (der Counter bleibt auch Null)
die restlichen Felder von DATA bleiben auch leer.
PHP-Code:
ctl-opt Dftname(A04320R)
dftactgrp(*No)
Debug(*yes) Option(*NoExpDds: *NoDebugIo: *srcstmt: *NoUnRef)
Datfmt(*eur) TimFmt(*hms:) Datedit(*dmy);
dcl-f ArtStaL05 disk keyed usage(*Input: *update: *output);
//------------------------------------------------------------------/
// /
// Parsen XML-DATEN - CCSID DER XML-DATEI MUSS 1208 SEIN /
// /
//----------------- /
// R.Ross 12.2018 * 2018.12.05-1.6 NO /
//------------------------------------------------------------------/
// XML-Array - Root /
//------------------------------------------------------------------/
dcl-ds PDMRequest qualified;
TIMESTAMP char(30);
REQUESTID char(40);
MessageAffiliation char(40);
TriggerAction char(30);
ParentObjectType char(30);
ParentID char(30);
UserName char(20);
xmlns char(60);
OBJECTS Likeds(obj_t);
end-ds;
dcl-ds obj_t qualified template;
PART likeds(pa_t);
end-ds;
dcl-ds pa_t qualified template;
KEYS likeds(ke_t);
DATA likeds(Dta_T);
end-ds;
dcl-ds Ke_t qualified template;
PROFILEKEYS likeds(pfk_t);
FOREIGNKEYS likeds(fnk_t);
end-ds;
dcl-ds Dta_t qualified template;
Teile_Nr likeds(dt_t) ;
hgna likeds(hgna_t);
Ersteller likeds(dt_t) ;
Erstelldatum likeds(dt_t) ;
Workflow_Status likeds(dt_t) ;
Aenderungsdatum likeds(dt_t) ;
Aenderer likeds(dt_t) ;
meeh likeds(dt_t) ;
diart likeds(dt_t) ;
bez1 likeds(dt_t) ;
bez2 likeds(dt_t) ;
bez3 likeds(dt_t) ;
herna likeds(dt_t) ;
hernr likeds(dt_t) ;
cnnr likeds(dt_t) ;
ulfilenr likeds(dt_t) ;
csanr likeds(dt_t) ;
arstk_ likeds(dt_t) ;
arart_ likeds(dt_t) ;
herty likeds(dt_t) ;
csanorm likeds(dt_t) ;
Bemerkung likeds(dt_t) ;
Spezifikation likeds(dt_t) ;
end-ds;
//------------------------------------------------------------------//
// Template Data //
//------------------------------------------------------------------//
dcl-ds Dt_t template qualified;
FIELDNAME char(8);
data varchar(10);
end-ds;
//------------------------------------------------------------------//
// Element hgna //
//------------------------------------------------------------------//
dcl-ds hgna_t template qualified;
FIELDNAME varchar(30);
KEYGROUP likeds(Kg_t);
end-ds;
//------------------------------------------------------------------//
// Element Keygroup no template //
//------------------------------------------------------------------//
dcl-ds Kg_t template qualified;
GROUPNAME char(30);
Nu_Keycharacteristic uns(10);
KEYCHARACTERISTIC likeds(Kc_t) dim(6);
end-ds;
//------------------------------------------------------------------//
// Element Keycharacteristic //
//------------------------------------------------------------------//
dcl-ds Kc_t template qualified;
NAME char(10);
DATA varchar(15);
end-ds;
//------------------------------------------------------------------//
// Template Profilekeys //
//------------------------------------------------------------------//
dcl-ds Pfk_t template qualified;
Teile_Nr likeds(dt_t) ;
end-ds;
//------------------------------------------------------------------//
// Template Foreignkeys //
//------------------------------------------------------------------//
dcl-ds Fnk_t template qualified;
arart_ likeds(dt_t) ;
end-ds;
//------------------------------------------------------------------//
// Feldbeschreibungen //
//------------------------------------------------------------------//
dcl-s LocOpt varchar(256); // XML-Options
dcl-s LocFile varchar(128); // File
dcl-s attchpath char(80);
dcl-s FileName char(120);
dcl-s i packed(5:0);
dcl-s ii Like(i);
dcl-s x Like(i);
dcl-s nbrrec Like(i);
c *Entry Plist
c Parm attchpath
c Parm filename
//------------------------------------------------------------------//
// Processing //
//------------------------------------------------------------------//
filename='Part_w_SML_Export_PF_5_AS400.xml' ;
P4FILN=filename ;
chain P4FILN ArtstaL05;
Eval p4andat=%TimeStamp ;
LocFile = '/home/NOWAK/VORW/Part_w_SML_Export_PF_5_AS400.xml'; //FILE
LocOpt = 'doc=File case=convert allowextra=yes allowmissing=yes +
countprefix=Nu_ datasubf=data';
xml-into(E) PDMRequest %xml(LocFile:LocOpt);
nbrrec=1 ;
for i=1 to nbrrec ;
Write artstap ;
endfor;
*inlr = *on;
//------------------------------------------------------------------//
Dazu das mxl
PHP-Code:
<?xml version="1.0" encoding="utf-8"?>
<PDMRequest TIMESTAMP="2018-07-02T06:02:42.0900050Z" REQUESTID="ade0e849-4b36-4cd5-b849-56e5e52678fe" MessageAffiliation="6b94eae7-383b-475b-8c82-a2ce807437d6" TriggerAction="objectsend" ParentObjectType="" ParentID="" UserName="procad" xmlns="http://support.procad.de/schema/general/v2000-1000">
<OBJECTS>
<PART>
<KEYS>
<PROFILEKEYS>
<Teile-Nr. FIELDNAME="NFT_IDNR">20411</Teile-Nr.>
</PROFILEKEYS>
<FOREIGNKEYS>
<arart_ FIELDNAME="NFT_STL9">2002523</arart_>
</FOREIGNKEYS>
</KEYS>
<DATA>
<Teile-Nr. FIELDNAME="NFT_IDNR">20411</Teile-Nr.>
<hgna FIELDNAME="NFT_NAM1">Schraube
<KEYGROUP GROUPNAME="Blechschraube">
<KEYCHARACTERISTIC NAME="ugna">Blechschraube</KEYCHARACTERISTIC>
<KEYCHARACTERISTIC NAME="ugna_056">4,8</KEYCHARACTERISTIC>
<KEYCHARACTERISTIC NAME="ugna_107">38</KEYCHARACTERISTIC>
<KEYCHARACTERISTIC NAME="ugna_401">DIN EN ISO 7049</KEYCHARACTERISTIC>
<KEYCHARACTERISTIC NAME="ugna_208">C</KEYCHARACTERISTIC>
<KEYCHARACTERISTIC NAME="ugna_150">verzinkt</KEYCHARACTERISTIC>
</KEYGROUP>
</hgna>
<Ersteller FIELDNAME="NFT_KON">BizTalkImport</Ersteller>
<Erstelldatum FIELDNAME="NFT_DAT">2018-05-24T16:07:12</Erstelldatum>
<Workflow-Status FIELDNAME="NFT_ZUST">20000</Workflow-Status>
<Aenderungsdatum FIELDNAME="NFT_MDAT">0001-01-01T01:00:00</Aenderungsdatum>
<Aenderer FIELDNAME="NFT_MKON"></Aenderer>
<meeh FIELDNAME="NFT_STK2">01</meeh>
<diart FIELDNAME="NFT_STK3">K</diart>
<bez1 FIELDNAME="NFT_STL0">Blechschraube</bez1>
<bez2 FIELDNAME="NFT_STL1">Linsen mit Kreuzschlitz</bez2>
<bez3 FIELDNAME="NFT_STL2"></bez3>
<herna FIELDNAME="NFT_STL3"></herna>
<hernr FIELDNAME="NFT_STL4"></hernr>
<cnnr FIELDNAME="NFT_STL5"></cnnr>
<ulfilenr FIELDNAME="NFT_STL6"></ulfilenr>
<csanr FIELDNAME="NFT_STL7"></csanr>
<arstk_ FIELDNAME="NFT_STL8">DIN EN ISO 7049</arstk_>
<arart_ FIELDNAME="NFT_STL9">2002523</arart_>
<herty FIELDNAME="NFT_STH0"></herty>
<csanorm FIELDNAME="NFT_STH1"></csanorm>
<Bemerkung FIELDNAME="ML_STRING"></Bemerkung>
<Spezifikation FIELDNAME="ML_STRING"></Spezifikation>
</DATA>
</PART>
</OBJECTS>
</PDMRequest>
und der Debug:
PHP-Code:
EVAL PDMRequest
PDMREQUEST.TIMESTAMP = '2018-07-02T06:02:42.0900050Z '
PDMREQUEST.REQUESTID = 'ade0e849-4b36-4cd5-b849-56e5e52678fe '
PDMREQUEST.MESSAGEAFFILIATION = '6b94eae7-383b-475b-8c82-a2ce807437d6 '
PDMREQUEST.TRIGGERACTION = 'objectsend '
PDMREQUEST.PARENTOBJECTTYPE = ' '
PDMREQUEST.PARENTID = ' '
PDMREQUEST.USERNAME = 'procat '
PDMREQUEST.XMLNS =
'http://support.procad.de/schema/general/v2000-1000 '
PDMREQUEST.OBJECTS.PART.KEYS.PROFILEKEYS.TEILE_NR.FIELDNAME = 'NFT_IDNR'
PDMREQUEST.OBJECTS.PART.KEYS.PROFILEKEYS.TEILE_NR.DATA = '20411 '
PDMREQUEST.OBJECTS.PART.KEYS.FOREIGNKEYS.ARART_.FIELDNAME = ' '
PDMREQUEST.OBJECTS.PART.KEYS.FOREIGNKEYS.ARART_.DATA = '2002523 '
PDMREQUEST.OBJECTS.PART.DATA.TEILE_NR.FIELDNAME = 'NFT_IDNR'
PDMREQUEST.OBJECTS.PART.DATA.TEILE_NR.DATA = '20411 '
PDMREQUEST.OBJECTS.PART.DATA.HGNA.FIELDNAME =
'NFT_NAM1 '
PDMREQUEST.OBJECTS.PART.DATA.HGNA.KEYGROUP.GROUPNAME =
'Blechschraube '
PDMREQUEST.OBJECTS.PART.DATA.HGNA.KEYGROUP.NU_KEYCHARACTERISTIC = 1077952576
PDMREQUEST.OBJECTS.PART.DATA.HGNA.KEYGROUP.KEYCHARACTERISTIC.NAME(1) =
'ugna '
PDMREQUEST.OBJECTS.PART.DATA.HGNA.KEYGROUP.KEYCHARACTERISTIC.DATA(1) =
'Blechschraube '
PDMREQUEST.OBJECTS.PART.DATA.HGNA.KEYGROUP.KEYCHARACTERISTIC.NAME(2) =
'ugna_056 '
PDMREQUEST.OBJECTS.PART.DATA.HGNA.KEYGROUP.KEYCHARACTERISTIC.DATA(2) =
'4,8 '
PDMREQUEST.OBJECTS.PART.DATA.HGNA.KEYGROUP.KEYCHARACTERISTIC.NAME(3) =
'ugna_107 '
PDMREQUEST.OBJECTS.PART.DATA.HGNA.KEYGROUP.KEYCHARACTERISTIC.DATA(3) =
' '
PDMREQUEST.OBJECTS.PART.DATA.HGNA.KEYGROUP.KEYCHARACTERISTIC.NAME(4) =
' '
PDMREQUEST.OBJECTS.PART.DATA.HGNA.KEYGROUP.KEYCHARACTERISTIC.DATA(4) =
' '
PDMREQUEST.OBJECTS.PART.DATA.HGNA.KEYGROUP.KEYCHARACTERISTIC.NAME(5) =
' '
PDMREQUEST.OBJECTS.PART.DATA.HGNA.KEYGROUP.KEYCHARACTERISTIC.DATA(5) =
' '
PDMREQUEST.OBJECTS.PART.DATA.HGNA.KEYGROUP.KEYCHARACTERISTIC.NAME(6) =
' '
PDMREQUEST.OBJECTS.PART.DATA.HGNA.KEYGROUP.KEYCHARACTERISTIC.DATA(6) =
' '
PDMREQUEST.OBJECTS.PART.DATA.ERSTELLER.FIELDNAME = ' '
PDMREQUEST.OBJECTS.PART.DATA.ERSTELLER.DATA = ' '
PDMREQUEST.OBJECTS.PART.DATA.ERSTELLDATUM.FIELDNAME = ' '
PDMREQUEST.OBJECTS.PART.DATA.ERSTELLDATUM.DATA = ' '
PDMREQUEST.OBJECTS.PART.DATA.WORKFLOW_STATUS.FIELDNAME = ' '
PDMREQUEST.OBJECTS.PART.DATA.WORKFLOW_STATUS.DATA = ' '
PDMREQUEST.OBJECTS.PART.DATA.AENDERUNGSDATUM.FIELDNAME = ' '
PDMREQUEST.OBJECTS.PART.DATA.AENDERUNGSDATUM.DATA = ' '
PDMREQUEST.OBJECTS.PART.DATA.AENDERER.FIELDNAME = ' '
PDMREQUEST.OBJECTS.PART.DATA.AENDERER.DATA = ' '
vielleicht findet einer von Euch den Fehler.
LG
Hans-Joachim
-
Von der Theorie siehts erst mal sauber aus.
Gibt es Fehlermeldungen im Joblog?
Da die XML ja UTF8 sein soll, prüfe mal das CCSID-Attribut der Quelle. Ggf. must du da mal ein CHGATR machen und die CCSID 1208 für UTF8 setzen.
Felder in deiner DS können u.U. auch zu kurz sein. Es kann da nicht schaden, diese
a) länger zu machen
b) mit varying zu definieren
-
CCSID = 1208, hatte ich als erstes geprüft.
Feldlängen habe ich erhöht, und als varchar definiert.
das Joblog bringt Ursachencode 5 - nur das verstehe ich nicht !!
PHP-Code:
Ursachencode 5.
Ursache . . . . : Beim Parsing eines XML-Dokuments hat der Parser
festgestellt, dass das XML-Dokument nicht der RPG-Variablen "pdmrequest"
entspricht und die Optionen dies nicht zulassen. Der Ursachencode ist 5. Das
Unterfeld, für das der Fehler festgestellt wurde, ist
"pdmrequest.objects.part.data.hgna.keygroup.keycharacteristic(3).data". Die
Optionen sind "doc=File case=convert allowextra=yes allowmissing=yes
countprefix=Nu_ datasubf=data". Der Name des XML-Dokuments ist
/home/NOWAK/VORW/Part_w_SML_Export_PF_5_AS400.xml; *N gibt an, dass das
-
ich glaube ich habe ihn gefunden... sch….. ab data(3) wird das Feld nicht richtig geschlossen
Werde ich heute Abend ausprobieren.
-
Da kann man mal wieder sehen, wofür das Joblog so gut ist;-).
Berechtigungen
- Neue Themen erstellen: Nein
- Themen beantworten: Nein
- You may not post attachments
- You may not edit your posts
-
Foren-Regeln
|
Erweiterte Foren Suche
Google Foren Suche
Forum & Artikel Update eMail
AS/400 / IBM i
Server Expert Gruppen
Unternehmens IT
|
Kategorien online Artikel
- Big Data, Analytics, BI, MIS
- Cloud, Social Media, Devices
- DMS, Archivierung, Druck
- ERP + Add-ons, Business Software
- Hochverfügbarkeit
- Human Resources, Personal
- IBM Announcements
- IT-Karikaturen
- Leitartikel
- Load`n`go
- Messen, Veranstaltungen
- NEWSolutions Dossiers
- Programmierung
- Security
- Software Development + Change Mgmt.
- Solutions & Provider
- Speicher – Storage
- Strategische Berichte
- Systemmanagement
- Tools, Hot-Tips
Auf dem Laufenden bleiben
|
Bookmarks