The Consumer Proxy was successfully created in transaction SE80, however when you try to create a Logical Port using the same WSDL file, it fails with an error message, such as:
- SRT Framework exception: Error in WSDL access: Exception occurred in communication framework:Error in HTTP Framework
- SRT Framework exception: Initial value "consumer context table" in method IF_SRT_WSP_CONFIG_REGISTRY~CREATE_CONTEXTS_FROM_WS of class CL_SRT_WSP_CONFIG_REGISTRY
- Error: Uninstantiated object "subject sidl service" in method IF_SRT_WSP_CONFIG_SIDL~CREATE_CLNT_CFG_FROM_WSDL_D of class CL_SRT_WSP_CONFIG_SIDL
- SRT Framework exception: Error in WSDL parsing: There was an exception in Library Handler
Why does the WSDL fail in SOAMANAGER, when it worked in SE80?
During Proxy generation in SE80, only the Types, Messages and PortType sections are checked and parsed from the WSDL. A WSDL containing only these 3 sections are also called the design time or port type WSDL of the service. A complete WSDL needs to also contain the Policy, Binding and Service sections that are needed to create the runtime configuration. The policy section is optional. It is only these later sections (policy, binding, service) that are being check during the generation of the logical port. When the generation fails in SOAMANAGER, usually there is a problem within these elements.
Another possible reason could be, that a different WSDL is used, not the same one used in SE80. It's important to use the same binding WSDL, which was used for generating the Consumer Proxy. If the design time / port type WSDL is used instead of the complete binding WSDL the generation will also fail. The complete binding WSDL should contain an element similar to this
To find out more what is wrong with the WSDL, run the WSDL check report: RSSIDL_DESERIALIZE_DEMO in SE38 or the WSDL Analyzer tool in SOAMANAGER under "Tools". If the test returns the error message "No WSDL root element set", then the problem is the design time WSDL being used instead of the complete binding WSDL (in most cases).
In certain cases, when the authentication method is Basic (User / Password), SAP assertion ticket or X.509 certificate, it's possible to create the logical port manually as a quick workaround. See SAP Note 2033184 for details.
Find the root cause
Exception occurred in communication framework
- Check the WIKI page http://wiki.scn.sap.com/wiki/x/UoWfFg for troubleshooting communication errors.
- If you try the workaround described there and get NOT_SUPPORTED_BY_GUI error, see point number 3 from below.
All other errors
Contact the provider
Sometimes it's possible to edit the WSDL manually using a text / XML editor to fix the compatibility problems. Here are a few tricks:
- Unsupported bindings are present in the WSDL. The solution is to remove all bindings, except the SOAP binding (version 1.1, version 1.2 is only supported in releases SAP_BASIS 7.02 SP8+).
- Policy assertion is incorrect or missing. An example how to add proper Policy can be found in SAP Note 1710478. If a different policy is required than the example from the note, create a SAP webservice endpoint in SOAMANAGER with the desired authentication method, open the WSDL file and copy-paste the Policy assertion into your WSDL file (replace the existing).
- External schemas are imported in the WSDL. WebDynpro Framework doesn't support uploading a local file, which tries to get another file from the system. NOT_SUPPORTED_BY_GUI error is raised. See SAP Note 1832156 for workarounds.