> Hi All, > > This seems like it should be simpler than it has been for me, but I am > neither an expert with webservices nor CF. Though not a newbie, my > guess is that there is something fundamental I am missing. I have > sought answers to this and read many articles, but either the > suggestions do not work, do not apply or talk of writing a wrapper in > java. Perhaps it isn't even possible to represent this in CF, but I > have not seen anything that says that, either. > > Anyway, the webservice I call returns an array of objects named > TABLE_OF_BAPIRET2 (if I am understanding properly). After making the > call, doing a cfdump of the result I get "Variable TABLE_OF_BAPIRET2 > is undefined". See attached code below for INVOKE and CFDUMP code. > > These results are not surprising after reading the article "Handling > complex data types" (http://livedocs.adobe. > com/coldfusion/7/htmldocs/wwhelp/wwhimpl/common/html/wwhelp. > htm?context=ColdFusion_Documentation&file=00001554.htm). So, I changed > the cfdump to reference TABLE_OF_BAPIRET2.MESSAGE. This did not work > (I did not expect it to since there is nothing in the statement > referencing the array element). However, it did give me more promising > results: "Element MESSAGE is undefined in TABLE_OF_BAPIRET2". This > tells me I can reference the return variable as suggested by the cited > article, but I must be doing something wrong. NOTE: when I specified > an index by stating TABLE_OF_BAPIRET2[1].MESSAGE, I go back to the > error "Variable TABLE_OF_BAPIRET2 is undefined". This I did not expect > and am now stumped. > > I've attached below the relevant section of the wsdl defining the > structure. I am also attaching the SOAP message that is returned. > > Is it even possible to decipher this object? Or, do I need to use java > (I am comfortable with that, but would rather use CF). I strongly > believe this is not the case, that there is something fairly simple I > am overlooking, but cannot see it. So, any help is greatly > appreciated! > > TIA, > > bill > ------------------------------------------------- > The INVOKE of the webservice > ------------------------------------------------- > <cfinvoke > webservice="http://sapcrd.comfort. com:80> 00/sap/bc/srt/rfc/sap/Z_YXG_SIMPLE_INPUT_TEST_WS?sap-client=300&wsdl=1. > 1" > username="turnbo" > password="myX2bare" > method="Z_YXG_SIMPLE_INPUT_TEST" > BAPIRET2="#myArray#" > IN_NO_ROW="1" > IN_TEXT="This is a test." > returnVariable="TABLE_OF_BAPIRET2" > /> > > <cfdump var="#TABLE_OF_BAPIRET2#" /> > > ------------------------------------------------- > The WSDL snippet > ------------------------------------------------- > <xsd:complexType name="BAPIRET2"> > <xsd:sequence> > <xsd:element name="TYPE" type="tns:char1"/> > <xsd:element name="ID" type="tns:char20"/> > <xsd:element name="NUMBER" type="tns:numeric3"/> > <xsd:element name="MESSAGE" type="tns:char220"/> > <xsd:element name="LOG_NO" type="tns:char20"/> > <xsd:element name="LOG_MSG_NO" type="tns:numeric6"/> > <xsd:element name="MESSAGE_V1" type="tns:char50"/> > <xsd:element name="MESSAGE_V2" type="tns:char50"/> > <xsd:element name="MESSAGE_V3" type="tns:char50"/> > <xsd:element name="MESSAGE_V4" type="tns:char50"/> > <xsd:element name="PARAMETER" type="tns:char32"/> > <xsd:element name="ROW" type="xsd:int"/> > <xsd:element name="FIELD" type="tns:char30"/> > <xsd:element name="SYSTEM" type="tns:char10"/> > </xsd:sequence> > </xsd:complexType> > <xsd:complexType name="TABLE_OF_BAPIRET2"> > <xsd:sequence> > <xsd:element name="item" minOccurs="0" maxOccurs="unbounded" > type="tns:BAPIRET2"/> > </xsd:sequence> > </xsd:complexType> > > ------------------------------------------------- > The SOAP response > ------------------------------------------------- > <soap-env:Envelope xmlns:soap-env="http://schemas.xmlsoap. > org/soap/envelope/"> > <soap-env:Body> > <n0:Z_YXG_SIMPLE_INPUT_TESTResponse > xmlns:n0="urn:sap-com:document:sap:rfc:functions"> > <BAPIRET2> > <item> > <TYPE>S</TYPE> > <ID>Trillium</ID> > <NUMBER>001</NUMBER> > <MESSAGE>This is a test.</MESSAGE> > <LOG_NO /> > <LOG_MSG_NO>000000</LOG_MSG_NO> > <MESSAGE_V1 /> > <MESSAGE_V2 /> > <MESSAGE_V3 /> > <MESSAGE_V4 /> > <PARAMETER /> > <ROW>0</ROW> > <FIELD /> > <SYSTEM /> > </item> > </BAPIRET2> > </n0:Z_YXG_SIMPLE_INPUT_TESTResponse> > </soap-env:Body> > </soap-env:Envelope> > I did, BTW, try to use [b]returnVariable="TABLE_OF_BAPIRET2[]"[/b] as is suggest by the article "Did you know: Array of components" (http://www.coldfusionjedi.com/index.cfm?mode=entry&entry=FAE8F3B9-BC72-0C47-D669E522B0559213). That, too, errored, but for a different reason. The error states 'The string "TABLE_OF_BAPIRET2[]" is not a valid ColdFusion variable name'.
Any pointers or suggestions? bill ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~| Adobe® ColdFusion® 8 software 8 is the most important and dramatic release to date Get the Free Trial http://ad.doubleclick.net/clk;160198600;22374440;w Archive: http://www.houseoffusion.com/groups/CF-Talk/message.cfm/messageid:299513 Subscription: http://www.houseoffusion.com/groups/CF-Talk/subscribe.cfm Unsubscribe: http://www.houseoffusion.com/cf_lists/unsubscribe.cfm?user=11502.10531.4

