|
RSS Feed - WebSphere MQ Support
|
RSS Feed - Message Broker Support
|
 |
|
Using Cardinality for Repeating Segments in XML. |
« View previous topic :: View next topic » |
Author |
Message
|
Kool-Aid |
Posted: Thu Sep 16, 2004 12:31 pm Post subject: Using Cardinality for Repeating Segments in XML. |
|
|
 Novice
Joined: 22 Apr 2004 Posts: 22
|
Using ESQL in WMQI 2.1 I am trying to pass along 4 XML fields (TABNAM, IDOCTYP, SNDPRN, and PLANT) and 3 additional XML fields (SEGNAM, NAME_CHAR, CHAR_VALUE) that come from a repeating segment into string data. I have been successful at getting the first set of non repeating fields but I have not been able to get the repeating fields. There is something wrong in my cardinality logic in my ESQL code (see below). When I complete a debug session there is no presence of the repeating segments. Are there any suggestions:
Sample of Input data (The is evaluated by the XML Parser):
<ZPROCMES>
<IDOC BEGIN="1">
<EDI_DC40 SEGMENT="1">
<TABNAM>EDI_DC40</TABNAM>
<IDOCTYP>ZPROCMES</IDOCTYP>
<SNDPRN>RM06_PMX</SNDPRN>
</EDI_DC40>
<ZRCOMHAPI SEGMENT="1">
<PLANT></PLANT>
<ZRCOMEAPI SEGMENT="1">
<SEGNAM>ZRCOMEAPI</SEGNAM>
<NAME_CHAR>PPPI_PROCESS_ORDER</NAME_CHAR>
<CHAR_VALUE>DWI033</CHAR_VALUE>
</ZRCOMEAPI>
<ZRCOMEAPI SEGMENT="1">
<SEGNAM>ZRCOMEAPI</SEGNAM>
<NAME_CHAR>PPPI_PHASE</NAME_CHAR>
<CHAR_VALUE>20</CHAR_VALUE>
</ZRCOMEAPI><ZRCOMEAPI SEGMENT="1">
<SEGNAM>ZRCOMEAPI</SEGNAM>
<NAME_CHAR>PPPI_START_DATE</NAME_CHAR>
<CHAR_VALUE>20040813</CHAR_VALUE>
</ZRCOMEAPI>
Current Output:
EDI_DC40 ZPROCMES RM06_PMX 000000
*As you can see I don't get any of the repeating fields.*
What I expect to see:
EDI_DC40 ZPROCMES RM06_PMX 000000
ZRCOMEAPIPPPI_PROCESS_ORDERDWI033
ZRCOMEAPIPPPI_PHASE20
ZRCOMEAPIPPPI_START_DATE20040813
My ESQL Code is as follows (I built a message set for the output message):
SET OutputRoot.Properties.MessageFormat = 'CWF';
DECLARE HOLDING INTEGER;
DECLARE A INTEGER;
DECLARE Num_of_Repeaters_SAP INTEGER;
SET "OutputRoot"."MRM"."ZPROCMES_NON_REPEAT_SEG"."TABNAM"
= "InputBody"."ZPROCMES"."IDOC"."EDI_DC40"."TABNAM" ;
SET "OutputRoot"."MRM"."ZPROCMES_NON_REPEAT_SEG"."IDOCTYP" = "InputBody"."ZPROCMES"."IDOC"."EDI_DC40"."IDOCTYP" ;
SET "OutputRoot"."MRM"."ZPROCMES_NON_REPEAT_SEG"."SNDPRN" = "InputBody"."ZPROCMES"."IDOC"."EDI_DC40"."SNDPRN" ;
SET "OutputRoot"."MRM"."ZPROCMES_NON_REPEAT_SEG"."PLANT" = "InputBody"."ZPROCMES"."IDOC"."ZRCOMHAPI"."PLANT" ;
--Repeating ZRCOMEAPI Segment (M/R)
SET HOLDING = CARDINALITY("InputRoot"."ZPROCMES"."IDOC"."ZRCOMHAPI"."ZRCOMEAPI"[]);
SET A = 1;
SET Num_of_Repeaters_SAP = 0;
WHILE A <= HOLDING DO
SET "OutputRoot"."MRM"."ZPROCMES_HEADER_SEGMENT"."ZPROCMES_REPEATER_SEGMENT"."SEGNAM" = "InputBody"."ZPROCMES"."IDOC"."ZRCOMHAPI"."ZRCOMEAPI"[A]."SEGNAM" ;
SET "OutputRoot"."MRM"."ZPROCMES_HEADER_SEGMENT"."ZPROCMES_REPEATER_SEGMENT"."PROC_MESS_ID_TMP" = "InputBody"."ZPROCMES"."IDOC"."ZRCOMHAPI"."ZRCOMEAPI"[A]."PROC_MESS_ID_TMP" ;
SET "OutputRoot"."MRM"."ZPROCMES_HEADER_SEGMENT"."ZPROCMES_REPEATER_SEGMENT"."NAME_CHAR" = "InputBody"."ZPROCMES"."IDOC"."ZRCOMHAPI"."ZRCOMEAPI"[A]."NAME_CHAR" ;
SET "OutputRoot"."MRM"."ZPROCMES_HEADER_SEGMENT"."ZPROCMES_REPEATER_SEGMENT"."CHAR_VALUE" = "InputBody"."ZPROCMES"."IDOC"."ZRCOMHAPI"."ZRCOMEAPI"[A]."CHAR_VALUE" ;
SET "OutputRoot"."MRM"."ZPROCMES_HEADER_SEGMENT"."ZPROCMES_REPEATER_SEGMENT"."DATA_TYPE" = "InputBody"."ZPROCMES"."IDOC"."ZRCOMHAPI"."ZRCOMEAPI"[A]."DATA_TYPE" ;
SET Num_of_Repeaters_SAP = Num_of_Repeaters_SAP + 1;
SET A = A + 1;
END WHILE;
SET "OutputRoot"."MRM"."ZPROCMES_HEADER_SEGMENT"."REPEATS_EAPI" = Num_of_Repeaters_SAP;
SET "OutputRoot"."MRM"."ZPROCMES_HEADER_SEGMENT"."COUNT_EAPI" = Num_of_Repeaters_SAP;
*Note REPEATS_EAPI and COUNT_EAPI never get populated. There value is "0" when it should be "3" for the three repeating segments in the input data* |
|
Back to top |
|
 |
JT |
Posted: Thu Sep 16, 2004 12:39 pm Post subject: |
|
|
Padawan
Joined: 27 Mar 2003 Posts: 1564 Location: Hartford, CT.
|
Try:
Quote: |
SET HOLDING = CARDINALITY("InputRoot"."XML"."ZPROCMES"."IDOC"."ZRCOMHAPI"."ZRCOMEAPI"[]); |
|
|
Back to top |
|
 |
EddieA |
Posted: Thu Sep 16, 2004 2:59 pm Post subject: |
|
|
 Jedi
Joined: 28 Jun 2001 Posts: 2453 Location: Los Angeles
|
Or, more likely, you meant:
Quote: |
SET HOLDING = CARDINALITY("InputBody"."ZPROCMES"."IDOC"."ZRCOMHAPI"."ZRCOMEAPI"[]); |
Cheers, _________________ Eddie Atherton
IBM Certified Solution Developer - WebSphere Message Broker V6.1
IBM Certified Solution Developer - WebSphere Message Broker V7.0 |
|
Back to top |
|
 |
|
|
 |
|
Page 1 of 1 |
|
You cannot post new topics in this forum You cannot reply to topics in this forum You cannot edit your posts in this forum You cannot delete your posts in this forum You cannot vote in polls in this forum
|
|
|
|