cancel
Showing results for 
Search instead for 
Did you mean: 

Problem with consuming MII web service

Former Member
0 Kudos

I have created a BLT in MII (version 12.0.11 build 14), and am trying to use the WSDLGen to consume the web service generated by the transaction. I was originally trying in VB.NET, and had problems returning any results, so I switched to consuming the web service from another BLT.

When I enter the WSDLGen URL in the web service action block, it returns the XacuteWSSoap port and Xacute operation as expected. It also provides the input paramters to my first BLT as expected. However, when I enter parameters for the web service action block and run it, it does not return anything.

I have determined that the target transaction that I am trying to run is indeed executing, because part of the transaction saves the OutputXML to a file. After executing the webservice, I can export that file from the MII server, and it contains the output I expect. The webservice just doesn't return the output to the calling procedure.

Any thoughts on this one?

Accepted Solutions (1)

Accepted Solutions (1)

Former Member
0 Kudos

Hi,

one idea: in your target BLT, what datatype is the output parameter that should contain the expected result? If XML, try changing the datatype to String.

Besides from that, are there any entries in the NetWeaver Log when you test the webcall?

Michael

Former Member
0 Kudos

This does allow the transaction to return the desired XML in text format. It's too bad it has to be done this way as now the transaction will pass everything as text instead of XML which will be a little less efficient when calling from .NET. It would be nice if SAP set up the WSDLGen to automatically contain the output structure of the OutputXML when it is in XML format.

Thanks very much for your help!

John

Former Member
0 Kudos

Hi John,

you can convert the input string to xml using the MII [String to XML parser action|http://help.sap.com/saphelp_mii121/helpdata/en/43/e80b59ad40719ae10000000a1553f6/frameset.htm].

Maybe this helps.

Michael

Former Member
0 Kudos

Actually, I'll be consuming the web service in a .NET application. I'll simply load the XML string into a DOMDocument object, which will allow me to navigate through it as desired.

Again, thanks for your replies. Look forward to collaborating with you in the future where possible.

Answers (5)

Answers (5)

Former Member
0 Kudos

Is there any news that this will be solved in a future release? Because this is just pathetic!

Former Member
0 Kudos

Hi jlwilloz,

I believe that I have the same problem as you.

I have a XML structure within a MII Transaction that I want to send as an Output to the transaction WebService.

If I set the Output to type XML it doesn't work.

If the Output is set to String it returns the output value, but doing it that way creates a very bad WSDL definition of the WebService, making it a lot harder to create a client for that service.

I've tried to set the XSD on the XML output, but I keep getting a "Premature End of File" error...

Did you get your web service to work properly?

Or did you just give up and use the string output instead?

Thanks,

Marcelo

Former Member
0 Kudos

Unfortunately I was never able to get this to work properly. I had a reference document set up for the OutputXML variable describing the structure of the output, but it never would show up properly in the WSDL. I am currently using string output. I am hoping that this will be fixed in later versions. We are currently on 12.0.

Former Member
0 Kudos

I'm using 12.1, but still having the same problem.

When you assign a XSD file to the output does that work?

With the XSD information, MII should be able to create a WSDL for the output and create the XML output properly.

I've validated my XSD file with all kinds of XML validators (like XMLSpy) and it still gives me the "premature end of file" error when I click on OK to assign the XSD file to the XML output.

Former Member
0 Kudos

Sorry, but I'm not familiar with this approach. Are you talking about assigning an XSD file to the output inside MII as a reference document, or doing it on the client side? I haven't tried either of these approaches.

Former Member
0 Kudos

On the transaction properties, when I add a new property and choose the type as XML, it gives me the option to assign a XSD to it. Check the print screen bellow:

[http://i79.photobucket.com/albums/j160/bonk22/XML_output.jpg]

The problem is that when I assign a XSD there and click OK, it gives me an error saying: "premature end of file"

I've checked the XSD, validated it with XMLSpy, validated it with online tools and it all seems fine...

I'm guessing it has no other way than sending the XML as a string.

It doesn't really make sense to send an XML as an encoded string, since we are talking about web services.

Hard to explain to a client that I cannot return a XML in a web service call...

Former Member
0 Kudos

You are correct the url I gave you is internal and I meant it just as an example. If you are not seeing the output of the web service from the .NET side it's generally because the output of the transaction is not defined from the MII side. Make sure that you an XML output parameter assigned to your transaction. In addtion make sure that you have assigned a reference doument to that parameter. After yuou do that you must refresh the web service in .NET.

Former Member
0 Kudos

We are using version 12.0.9, so I don't think it's a version issue. Within Visual Studio we add a web reference with the following url:

http://sapnt187:50000/XMII/WSDLGen/Bemis/ShopFloor/Common/ws_com_GetPlant

The VB.NET code to refernce this web service looks like this:



        Dim webService As New GetPlantWS.XacuteWS
        Dim inputParams As New GetPlantWS.InputParams
        Dim results As GetPlantWS.Rowset

        inputParams.Plant = plant
        results = webService.Xacute(Me.serverUserID, Me.serverPassword, inputParams)

.NET provides the web service specific InputParams and Rowset types.

Former Member
0 Kudos

I can't connect to the WSDLGen link you sent since it must be a server internal to your company. Could you please post the text that appears when you go to this link?

As you mentioned, .NET provides all of the input params for me when I use the webservice, but it doesn't provide anything with regards to the output data structure that is in the outputXML file. I can only get it to return the entire outputXML as text and then read it into a XML.XMLDocument object in .NET.

Former Member
0 Kudos

Glen,

Sorry to bother, but could you please post the text that is generated by the WSDLGen you mentioned in your earlier post? I cannot get to it since it is on a server internal to your company. Thanks very much for your assistance.

Former Member
0 Kudos

The output parameter can be of type XML. If you do this you need to assign a reference document to the output variable. Once this is you can reference the returned information in VB.NET as a strongly typed collection. We have a large application that makes calls to many transactions using this technique.

Former Member
0 Kudos

I wish it were so. I already had a reference document correctly assigned to the OutputXML when I tried this the first time. I also verified that it was working properly by calling the transaction from another BLT, and noting that I could see the full XML structure of the OutputXML. However, when I used the WSDLGen to set up a reference in .NET, I could not see any of the output structure in Visual Studio.

What version of MII are you running? Maybe this is a bug in 12.0.11 (the version we are running currently).

Can you send me an example of the WSDLGen that you get from the transaction you are talking about? If the output structure can be discovered in .NET, it must be defined in the WSDLGen. In my case, it is not. Only the input structure.

John