Try OpenEdge Now
skip to main content
Web Services
Creating ABL Clients to Consume OpenEdge SOAP Web Services : Invoking OpenEdge SOAP Web Service Operations from ABL : Managing complex data : Types of complex data : Complex data type parameters
 
Complex data type parameters
If the Analyzer specifies that you can use a temp-table or ProDataSet to access a Web service parameter, you can access (for OUTPUT) and write to (for INPUT) the parameter exactly as you do for any temp-table or ProDataSet parameter in the ABL. If the Analyzer provides the temp-table or ProDataSet definition, you can use a static instance and specify the parameter as a TABLE or DATASET. For a static OUTPUT parameter, OpenEdge ensures that the object is created and filled from the parameter element in the SOAP response message. For static INPUT parameter, you must create and fill the object, as appropriate, before passing the parameter.
If you must access the parameter as a dynamic temp-table or ProDataSet, you can specify the parameter as a TABLE-HANDLE or DATASET-HANDLE. For a dynamic OUTPUT parameter, OpenEdge ensures that the object is created and filled from the parameter element in the SOAP response message. For dynamic INPUT parameter, you must create and fill the object, as appropriate, before passing the parameter.
For an OUTPUT parameter that you access as a serialized XML string, you can work with serialized XML in the CHARACTER or LONGCHAR parameter directly, using ABL string-manipulation statements and functions, or work with it in its parsed form using the ABL SAX reader or DOM parser. In any case, OpenEdge provides the entire complexData element for the value, exactly as it appears in the SOAP response message.
For an INPUT parameter that you write as a serialized XML string, you can build or maintain the value using the ABL SAX writer or DOM parser, and save the result as a LONGCHAR value when you are ready to pass it as an INPUT parameter to the Web service.
For more information on using the SAX and DOM features in ABL, see OpenEdge Development: Programming Interfaces. For an example of how to handle complex data parameters in ABL, see Complex data example.