on 07-26-2007 5:58 AM
I am attempting to consume a Microsoft Sharepoint 2007 web service from within SAP (NW04)
The suggested method for consuming a web service that is external to SAP is to use SE80 and then Create->Enterprise Service/Web Servic->Proxy Object
however when I try to do this, I get an error:
<b>Proxy generation terminated: "mixed content" not supported</b>
The long text gives the additional:
<b>You used so-called "mixed content" in the interface description.
This means that the attribute mixed="true" was set for <complexType> or <complexContent>.
...
A feature of this type cannot be mapped by the proxy generation.</b>
How do I execute a web service that has complex types in its definition?
The web service that I am trying to execute will return an xml file, which I will then parse to get the values that I need, but at the moment, I can't work out how to execute the web service.
Any assistance on this would be appreciated.
Thanks in advance
Richard
Hi l
Here is another challenge to consume a sharepoint webservice from abap side:
Im planning to consume the sharepoint web service UpdateListItems with own adjusted wsdl for proxy usage, using the complex WSDL provided from sharepoint isn't possible because of type complex.
After checking wsdl structure with abap RSSIDL_DESERIALIZE_DEMO this error occured:
- <soap:Fault>
<faultcode>soap:Server</faultcode>
<faultstring>SIDL/SLIB Exception</faultstring>
- <detail xmlns:slibfault="http://xml.sap.com/2005/11/esi/slib/fault/">
<slibfault:timestamp>Thu, 23 Sep 2010 16:17:50 GMT</slibfault:timestamp>
- <slibfault:exception>
<slibfault:text>Incorrect value: Unknown Namespace http://microsoft.com/wsdl/types/</slibfault:text>;
<slibfault:position program="CL_SXSDS_DESERIALIZER=========CP" include="CL_SXSDS_DESERIALIZER=========CM00G" line="53" />
</slibfault:exception>
</detail>
Any Ideas how to fix namespace problem with microsoft.com/wsdl/types ?
Thanks a lot for help.
Steffen
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
Hi Richard
reg: CALL WEBSERVICE IN SHAREPOINT FROM ABAP PROXY
I am trying to call an Web service from ABAP (through the SE80 proxy). The webservice comes from Sharepoint
but is prompting be for a username and password ?
Where comes this user from ? - I have tryed my Windows/sharepoint and SAP username and password - but nothing works.
Did any have this kind of issue ??
best regards
Lars
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
Hi Lars,
You need to do some logical port config work using Tcode SOAMANAGER thereafter, please refer to the guide below (in the Create the Consumer Application Section), you will see where the user & pass is applicable:
[http://www.sdn.sap.com/irj/scn/go/portal/prtroot/docs/library/uuid/d06b6392-cde7-2c10-8f8b-bdea5d781dd9?quicklink=index&overridelayout=true]
Regards, Trevor
Hi Trevor
Thanks for your help so far!
I have read the document about the SOAMANAGER - and i get an error when I do the "thing" on that is mention on page 27 in the document :
"On the newly created bottom portion of the screen, enter the authorized user to execute
the provider service, and save the configuration:"
It says :
SRT Framework exception: Error in WSDL access: Exception occurred in communication framework:Error in HTTP Framework:401Unauthorizedhttp://site/systems/accountingtreasury/segregation/_vti_bin/name/SODWebService.asmx
Is this SHAREPOINT that give this or what ?
I can see the wsdl file in my browser without any problems.
hope you can help me...
thx
Lars
Thanks Trevor!
I thought so...
but are you aware WHAT kind of Auth. method the Shareport webservice should be activated for (basic, NTML or ??)
(NTLM : http://blogs.msdn.com/cgideon/archive/2006/05/18/601230.aspx)
Thank for all you help !
Lars
Hi Lars,
Please ask the Sharepoint admins to enable Basic authentication and then give the credentials of a valid user in the Logical port that you create for the consumer proxy in SOAMANAGER. There is a 'Consumer Security' tab for logical port details this is where you have to give the user credentials.
Regards,
Avishek.
Hi,
We are actually facing a problem with the method suggested above by me for NetWeaver 7.01 SP5 which was recently upgraded to in our environmnet, where the Authentication mechanism seems to be read directly from the WSDL and is not configurable (to give Basic authentication credentials).
However this was not the case earlier or in systems which are on NW 7.0, where the solution suggested is working fine.
Does anyone have any knowledge of SAP switching to a particular version of WSDL in the latest SP's.
Regards,
Avishek.
Hi Lars,
It looks like you have your work cut out for your on this one...I haven't dealt with this and it doesn't look like there is much help on SDN either. Maybe this document below might provide a start:
[http://www.sdn.sap.com/irj/scn/go/portal/prtroot/docs/library/uuid/9099e9b5-cff9-2b10-b0ab-ca85045b4f6a?quicklink=index&overridelayout=true]
Regards, Trevor
hi,
mixed content (<a href="http://www.w3schools.com/schema/schema_complex_mixed.asp">see here</a>) is simply not supported by the WSDL parser of ABAP.
It is a construct not often used nowadays and AFAIK other parsers do also have problems understanding it (e.g. java's WSDL2java).
regards, anton
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
Hi Anton, thanks for getting back to me.
Are you saying that it is impossible to call any web service from SAP that uses a complex type with mixed content? Or is it just that I can't use the WSDL parser?
Whilst this construct may be not as common, it is still used (eg. almost every webservice exposed in sharepoint 2007), so I would think that there must be a way of consuming them from SAP?
Thanks in advance
hi Richard,
you can't use the WSDL parser. after all, as I said before you can't call them 'with wizard support' in java either. actually, I'd wouldn't want to bet on the possibility that you can call such services with microsoft's very own tools from the second to latest generation, e.g with Infopath 2003.
Of course, practically, it is not impossible to call such services, but you have to code it 'manually' from the ground using HTTP client classes, iXML classes and so on to create the SOAP messages and parse the responses. That is - not using the SRT (SOAP runtime). But this is a pain ... for the not so experienced.
anton
PS: though I don't believe it, I might be wrong and the SRT is already able to parse such mixed content types since one of the latest patches. A customer support messages might answer that reliably.
Hi Anton - thanks very much for your reply!
I'll have to dig around and see if I can come up with anything that shows me how to do this manually.
Seems a bit strange that this is not handled by parsers - I would have thought all they would have had to do was return the xml fragment that is returned as the complex type, and then let you process it yourself. Maybe I'm missing something (quite likely I am).
Anyhow, I really appreciate you taking the time to reply!
regards
Richard
Hi y'all!
I've the following solution for the problem:
1. Save WSDL file on PC and change element definition from (for example)
<s:element minOccurs="0" maxOccurs="1" name="EnumValutesXMLResult">
<s:complexType mixed="true">
<s:sequence>
<s:any/>
</s:sequence>
</s:complexType>
</s:element>
to <s:element minOccurs="0" maxOccurs="1" name="EnumValutesXMLResult" type="s:string" />
Example is taken from http://cbr.ru/DailyInfoWebServ/DailyInfo.asmx?WSDL
2. Generate the proxy using this file.
3. In the generated service consumer definition goto "external view" tab and
set indicator "untyped mapping" for field EnumValutesXMLResult. This allows
to save XML code without deserialization.
4. Parse the string in program after calling the proxy.
Mit besseren Gruessen,
Roman
User | Count |
---|---|
85 | |
10 | |
9 | |
9 | |
6 | |
6 | |
6 | |
5 | |
3 | |
3 |
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.