TABLE-HANDLE parameters pass both the schema and data, because the dynamic temp-table schema is not known at compile time. In the WSDL, OpenEdge Web services map an ABL TABLE-HANDLE to a <complexType> containing a sequence of xsd:any.

For all SOAP formats, client interfaces typically represent TABLE-HANDLE parameters as follows:

  • For every TABLE-HANDLE parameter within a Web service object, there is a single object representing all TABLE-HANDLEs.
  • In both request messages and response messages, the schema of the TABLE-HANDLE must accompany the data.
  • For every input TABLE-HANDLE, you must include the schema of the TABLE-HANDLE in the form of an XML Schema followed by the data in the form of an XML document fragment.
  • For every output TABLE-HANDLE, a non-ABL client must parse the XML Schema and data in the SOAP response message.
  • The WSDL Analyzer recognizes the WSDL definition of a TABLE-HANDLE parameter and maps it to a TABLE-HANDLE parameter for an ABL client.

The following WSDL sample shows this common TABLE-HANDLE parameter definition:

TABLE-HANDLE definition for all dynamic temp-table parameters

<complexType name="TableHandleParam">
   <sequence>
      <any namespace="##local"/>
   </sequence>
</complexType>

The non-ABL client application must create (for input) and parse (for output) the XML Schema along with the data for the parameter. How the client inserts the input schema and data in request messages and how it parses the output schema and data from response messages is entirely dependent on the client toolkit.

This is the general format in OpenEdge Web services for representing a TABLE-HANDLE in a SOAP message, where the schema is defined in a <schema> element and each row is encapsulated by an <Item> element within a <Data> element:

<DataSet>
   <schema>      

        <!-- TEMP-TABLE row definition in XML Schema -->   

   </schema>  
    <Data>

      <Item> <!--- row instance 1 --> </Item>
      <Item> <!--- row instance 2 --> </Item>
      <Item> <!--- row instance 3 --> </Item>
      ...

   </Data>
</DataSet>

Each column of a TABLE-HANDLE row can hold any data type shown in the following table.

Table 1. XML data types for TABLE-HANDLE parameter columns
ABL data type XML Schema data type
CHARACTER xsd:string
DATE xsd:date
DATETIME-TZ xsd:dateTime
DECIMAL xsd:decimal
INT64 xsd:long
INTEGER (32 bit) xsd:int
LOGICAL xsd:boolean
RAW xsd:base64Binary