[Stackoverflow] [Progress OpenEdge ABL] Create XML file via Progress 12 using WRITE-XML statement

Status
Not open for further replies.
J

JSS

Guest
I am trying to generate an XML file in Progress 12 using temp tables and a WRITE-XML statement. I am almost there. The format should be

< CdtrAgt>

< FinInstrnId>

Code:
  < ClrSysMmbId>
     < MmbId>xxx< /MmbId>
  < /ClrSysMmbId>
  < Nm>yyy</Nm>
  < PstlAdr>
     <Ctry>US</Ctry>
  </PstlAdr>
  <Othr>
     <Id>zzz</Id>
  </Othr>

I figured out how to move the Nm segment before the PstlAdr using the code: PARENT-ID-RELATION FinCR1 FOR FinInstnId-CR, ClrSysMmbId-CR PARENT-ID-FIELD FinInstn-Id PARENT-FIELDS-AFTER (Nm) PARENT-ID-RELATION FinCR2 FOR FinInstnId-CR, PstlAdr-CR PARENT-ID-FIELD FinInstn-Id2

but I'm not able to move the Othr segment after PstlAdr. Here is my code:

/* Temp tables */ DEFINE TEMP-TABLE CstmrCdtTrfInitn NO-UNDO
FIELD MsgId AS CHAR XML-NODE-TYPE "HIDDEN"
INDEX TEMP-ACH-HDR-IDX IS PRIMARY MsgId ASC.

DEFINE TEMP-TABLE PmtInf NO-UNDO
FIELD MsgId AS CHAR XML-NODE-TYPE "HIDDEN" FIELD PmtInfId AS CHAR
FIELD PmtMtd AS CHAR
FIELD NbOfTxs AS INT
FIELD CtrlSum AS DEC DECIMALS 2
INDEX TEMP-ACH-HDR-IDX IS PRIMARY MsgId ASC PmtInfId ASC.

DEFINE TEMP-TABLE PmtTpInf NO-UNDO
FIELD MsgId AS CHAR XML-NODE-TYPE "HIDDEN" FIELD PmtInfId AS CHAR XML-NODE-TYPE "HIDDEN" FIELD LclInstrm AS CHAR XML-NODE-TYPE "HIDDEN"
INDEX TEMP-ACH-HDR-IDX IS PRIMARY MsgId ASC PmtInfId ASC.

DEFINE TEMP-TABLE CdtTrfTxInf NO-UNDO
FIELD MsgId AS CHAR XML-NODE-TYPE "HIDDEN" FIELD PmtInfId AS CHAR XML-NODE-TYPE "HIDDEN" FIELD SeqNum AS INT XML-NODE-TYPE "HIDDEN"
INDEX TEMP-ACH-CRED-IDX IS PRIMARY MsgId ASC PmtInfId ASC SeqNum ASC.

DEFINE TEMP-TABLE PmtId NO-UNDO
FIELD MsgId AS CHAR XML-NODE-TYPE "HIDDEN" FIELD PmtInfId AS CHAR XML-NODE-TYPE "HIDDEN" FIELD SeqNum AS INT XML-NODE-TYPE "HIDDEN"
FIELD EndToEndId AS CHAR /* Receiver Id Number */
INDEX TEMP-ACH-CRED-IDX IS PRIMARY MsgId ASC PmtInfId ASC SeqNum ASC.

DEFINE TEMP-TABLE Amt NO-UNDO
FIELD MsgId AS CHAR XML-NODE-TYPE "HIDDEN" FIELD PmtInfId AS CHAR XML-NODE-TYPE "HIDDEN" FIELD SeqNum AS INT XML-NODE-TYPE "HIDDEN" INDEX TEMP-ACH-CRED-IDX IS PRIMARY MsgId ASC PmtInfId ASC SeqNum ASC.

DEFINE TEMP-TABLE CdtrAgt NO-UNDO
FIELD MsgId AS CHAR XML-NODE-TYPE "HIDDEN" FIELD PmtInfId AS CHAR XML-NODE-TYPE "HIDDEN" FIELD SeqNum AS INT XML-NODE-TYPE "HIDDEN" INDEX TEMP-ACH-CRED-IDX IS PRIMARY MsgId ASC PmtInfId ASC SeqNum ASC.

DEFINE TEMP-TABLE FinInstnId-CR NO-UNDO XML-NODE-NAME "FinInstnId"
FIELD MsgId AS CHAR XML-NODE-TYPE "HIDDEN"
FIELD PmtInfId AS CHAR XML-NODE-TYPE "HIDDEN" FIELD SeqNum AS INT XML-NODE-TYPE "HIDDEN" FIELD Nm AS CHAR
INDEX TEMP-ACH-CRED-IDX IS PRIMARY MsgId ASC PmtInfId ASC SeqNum ASC.

DEFINE TEMP-TABLE ClrSysMmbId-CR NO-UNDO XML-NODE-NAME "ClrSysMmbId"
FIELD MsgId AS CHAR XML-NODE-TYPE "HIDDEN"
FIELD PmtInfId AS CHAR XML-NODE-TYPE "HIDDEN" FIELD SeqNum AS INT XML-NODE-TYPE "HIDDEN" FIELD FinInstn-Id AS RECID XML-NODE-TYPE "HIDDEN" FIELD MmbId AS CHAR
INDEX TEMP-ACH-HDR-IDX IS PRIMARY MsgId ASC PmtInfId ASC SeqNum ASC.

DEFINE TEMP-TABLE PstlAdr-CR NO-UNDO XML-NODE-NAME "PstlAdr"
FIELD MsgId AS CHAR XML-NODE-TYPE "HIDDEN" FIELD PmtInfId AS CHAR XML-NODE-TYPE "HIDDEN" FIELD SeqNum AS INT XML-NODE-TYPE "HIDDEN" FIELD FinInstn-Id2 AS RECID XML-NODE-TYPE "HIDDEN" FIELD Ctry AS CHAR /* Remit To Postal Country */ INDEX TEMP-ACH-HDR-IDX IS PRIMARY MsgId ASC PmtInfId ASC SeqNum ASC.

DEFINETEMP-TABLE Othr-CI NO-UNDO XML-NODE-NAME "Othr"
FIELD MsgId AS CHAR XML-NODE-TYPE "HIDDEN"
FIELD PmtInfId AS CHAR XML-NODE-TYPE "HIDDEN" FIELD SeqNum AS INT XML-NODE-TYPE "HIDDEN" FIELD FinInstn-Id3 AS RECID XML-NODE-TYPE "HIDDEN" FIELD Id AS CHAR /* DFI Account Number / FIELD IBAN AS CHAR / Remit To N1 ID Code ID - if populated / INDEX TEMP-ACH-CRED-IDX IS PRIMARY MsgId ASC PmtInfId ASC SeqNum ASC.
/
*************************** Define Pro Dataset for XML Reading *************************** / / NAMESPACE-URI is used to set the dataset attribute - will appear as follows: */ DEFINE DATASET Document NAMESPACE-URI "urn:iso:std:iso:20022:tech:xsd:pain.001.001.03" FOR CstmrCdtTrfInitn, CdtTrfTxInf, PmtInf, PmtTpInf, CdtrAgt, FinInstnId-CR, ClrSysMmbId-CR, PstlAdr-CR, Othr-CI

Code:
    DATA-RELATION Pymt-1 FOR CstmrCdtTrfInitn, PmtInf
                             RELATION-FIELDS(MsgId, MsgId)
                             NESTED

    DATA-RELATION Cred-1 FOR PmtInf, CdtTrfTxInf
                             RELATION-FIELDS(MsgId, MsgId,
                                             PmtInfId, PmtInfId)
                             NESTED
    DATA-RELATION Cred-5 FOR CdtTrfTxInf, CdtrAgt
                             RELATION-FIELDS(MsgId, MsgId,
                                             PmtInfId, PmtInfId,
                                             SeqNum, SeqNum)
                             NESTED

    DATA-RELATION Cred-6 FOR CdtrAgt, FinInstnId-CR
                             RELATION-FIELDS(MsgId, MsgId,
                                             PmtInfId, PmtInfId,
                                             SeqNum, SeqNum)
                             NESTED
    DATA-RELATION Cred-10 FOR FinInstnId-CR, Othr-CI
                             RELATION-FIELDS(MsgId, MsgId,
                                             PmtInfId, PmtInfId,
                                             SeqNum, SeqNum)
                             NESTED

    PARENT-ID-RELATION FinCR1 FOR FinInstnId-CR, ClrSysMmbId-CR
            PARENT-ID-FIELD FinInstn-Id
            PARENT-FIELDS-AFTER (Nm) 

    PARENT-ID-RELATION FinCR2 FOR FinInstnId-CR, PstlAdr-CR
            PARENT-ID-FIELD FinInstn-Id2.

Any assistance would be appreciated.

Julie

Continue reading...
 
Status
Not open for further replies.
Top