midrange.com code scratchpad
Name:
Guy Henza
Scriptlanguage:
Plain Text
Tabwidth:
4
Date:
02/09/2015 04:31:30 pm
IP:
Logged
Description:
SQLRPGILE writing XML to the IFS getting a SQL0811 error‏
Code:
  1.      D MYXMLDOC        S                   SQLTYPE(XML_CLOB_FILE)
  2.      d MsgDta          s             52a
  3.      d ts              s               z   inz
  4.  
  5.        EXEC SQL SET OPTION COMMIT=*NONE, DATFMT=*ISO, CLOSQLCSR=*ENDACTGRP;
  6.        ts = %timestamp();
  7.  
  8.        CLEAR MYXMLDOC;
  9.        MYXMLDOC_NAME = '/edi/po_' + %char(ts) + '.xml';
  10.        MYXMLDOC_NL = %LEN(%TRIM(MYXMLDOC_NAME));
  11.        MyXMLDoc_FO = SQFOVR; //Replace if exists
  12.  
  13.        Exec SQL
  14.           WITH D01 AS (
  15.             SELECT D01.TPID,D01.PO#,D01.REL,D01.CTL#,D01.MBX,D01.LCNT,
  16.               XMLGROUP(case when PO101  <> ' ' then PO101  end as "PO101",
  17.                        case when PO102  <>  0  then PO102  end as "PO102",
  18.                        case when PO414  <>  0  then PO414  end as "PO414"
  19.               ORDER BY D01.TPID,D01.PO#,D01.REL,D01.CTL#,D01.MBX,D01.LCNT
  20.               OPTION ROW "PO1"
  21.               ROOT "detail"       )
  22.             AS detail
  23.             FROM EDI850DP100 D01
  24.             GROUP BY D01.TPID,D01.PO#,D01.REL,D01.CTL#,D01.MBX,D01.LCNT )
  25.            ,
  26.                H04 AS (
  27.             SELECT H04.TPID,H04.PO#,H04.REL,H04.CTL#,H04.MBX,
  28.               XMLGROUP(DTM01 AS "DTM01",
  29.                        DTM02 AS "DTM02"
  30.               ORDER BY H04.TPID,H04.PO#,H04.REL,H04.CTL#,H04.MBX
  31.               OPTION ROW "Date"
  32.               ROOT "DTM"       )
  33.             AS DTM
  34.             FROM EDI850HP400 H04
  35.             GROUP BY H04.TPID,H04.PO#,H04.REL,H04.CTL#,H04.MBX )
  36.  
  37.            SELECT XMLDOCUMENT(
  38.              XMLELEMENT(NAME "order",
  39.                XMLFOREST(H01.TPID AS "TPID",
  40.                          H01.PO#  AS "PO",
  41.                  H04.DTM    AS "DTM",
  42.                XMLFOREST(
  43.                  D01.detail AS "detail"
  44.                                    ) AS order_detail )))
  45.              AS order_doc
  46.              into :MyXMLDoc
  47.            FROM EDI850HP100 H01
  48.            left outer join H04 on H04.TPID  = H01.TPID
  49.              and H04.PO#   = H01.PO#
  50.              and H04.REL   = H01.REL
  51.              and H04.CTL#  = H01.CTL#
  52.              and H04.MBX   = H01.MBX
  53.            left outer join D01 on D01.TPID  = H01.TPID
  54.              and D01.PO#   = H01.PO#
  55.              and D01.REL   = H01.REL
  56.              and D01.CTL#  = H01.CTL#
  57.              and D01.MBX   = H01.MBX
  58.            ;
  59.  
  60.         If SQLCODE <> *Zeros;
  61.          EXEC SQL Get Diagnostics Condition 1 :MsgDta = MESSAGE_TEXT;
  62.          Dsply  MsgDta;
  63.         else;
  64.          Dsply 'XML Document generated';
  65.         EndIf;
  66.        *InLR = *On;
  67.  
  68.  
  69. DSPLY  Result of SELECT more than one row.
  70.  
  71. <?xml version="1.0" encoding="UTF-8"?>
  72. <order><TPID>abc123 </TPID><PO>0000249343899002 </PO><DTM><DTM><Date><DTM01>037</DTM01><DTM02>20120910</DTM02></Date><Date><DTM01>038</DTM01><DTM02>20120915</DTM02></Date><Date><DTM01>063</DTM01><DTM02>20120917</DTM02></Date><Date><DTM01>064</DTM01><DTM02>20120910</DTM02></Date></DTM></DTM><ORDER_DETAIL><detail><detail><PO1><PO101>6 </PO101><PO102>2880</PO102></PO1></detail></detail></ORDER_DETAIL></order>
  73.  
  74. The DTM wrote out 4 rows but the PO1 failed after the first one (and it’s #6???).!
  75.  
  76. After removing the D01.LCNT I get all 14 PO1 rows;
  77.  
  78. DSPLY  XML Document generated
  79.  
  80. <?xml version="1.0" encoding="UTF-8"?>
  81. <order><TPID>DOLLAR TREE KY </TPID><PO>0000249343899002 </PO><DTM><DTM><Date><DTM01>037</DTM01><DTM02>20120910</DTM02></Date><Date><DTM01>038</DTM01><DTM02>20120915</DTM02></Date><Date><DTM01>063</DTM01><DTM02>20120917</DTM02></Date><Date><DTM01>064</DTM01><DTM02>20120910</DTM02></Date></DTM></DTM><ORDER_DETAIL><detail><detail><PO1><PO101>1 </PO101><PO102>4800</PO102></PO1><PO1><PO101>2 </PO101><PO102>7200</PO102></PO1><PO1><PO101>3 </PO101><PO102>2400</PO102></PO1><PO1><PO101>4 </PO101><PO102>4320</PO102></PO1><PO1><PO101>5 </PO101><PO102>1200</PO102></PO1><PO1><PO101>6 </PO101><PO102>2880</PO102></PO1><PO1><PO101>7 </PO101><PO102>4800</PO102></PO1><PO1><PO101>8 </PO101><PO102>4320</PO102></PO1><PO1><PO101>9 </PO101><PO102>3600</PO102></PO1><PO1><PO101>10 </PO101><PO102>6000</PO102></PO1><PO1><PO101>11 </PO101><PO102>2400</PO102></PO1><PO1><PO101>12 </PO101><PO102>7200</PO102></PO1><PO1><PO101>13 </PO101><PO102>4320</PO102></PO1><PO1><PO101>14 </PO101><PO102>21600</PO102></PO1></detail></detail></ORDER_DETAIL></order>
  82.  
© 2004-2019 by midrange.com generated in 0.007s valid xhtml & css