cancel
Showing results for 
Search instead for 
Did you mean: 

How to create Message Type from WSDL file

Former Member
0 Kudos

Dear Experts,

The 3rd party has provided me the WSDL file and I am able to upload in PI system as External definition for ABAP Outbound Proxy to SOAP scenario.

I have issue while creating Message Type for message mapping.

How to create Message Type from the WSDL file? Do we have any program  or I need to create DT and MT seeing the structure?

Regards

Rebecca

Accepted Solutions (1)

Accepted Solutions (1)

former_member184681
Active Contributor

Hi Rebecca,

When working with an External Definition generated from a WSDL file, you don't create DT nor MT. Instead:

- use the External Definition directly as source or target message, when creating Message Mapping

- create Service Interface with use of the External Definition (when setting the Request and Response, change Type to "External Definition", then choose the right one)

- use the Service Interface normally to create Operation Mapping

Hope this clarifies,

Greg

Answers (3)

Answers (3)

Former Member
0 Kudos

Thanks Greg,Nageshwar and Pavan.

Sorry for late reply. My real concern for developing data types/message types was that during the creation of the proxy in ECC generated <<WSDL extension not supported>>.

As because the 3rd party provided us the WSDL and it contained multiple operations/messages which I think ABAP 6.40 /7.10 does not support.

So could any one suggest how to by pass this issue and what could be precautionary steps I should be aware so that I can prepare the WSDL similar to the WSDL of the 3rd party?

Regards

Rebecca

former_member184681
Active Contributor
0 Kudos

Dear Rebecca,

Two things:

1. Did you try to check the error's long text? Sometimes it contains useful details on how to deal with the error.

2. Does your .wsdl file contain any <extension> tags? I believe the error points at this tag, as a source of the problem. Can you try to get rid of this tag and import to ECC again?

The SAP Help doc Consuming Service Operations using SAP NetWeaver Studio seems to say that you can have multiple operations in one service:

In this example, we use 2 Service Operations. They are PurchaseOrderCreate and PurchaseOrderByID.

Regards,

Greg

udo_martens
Active Contributor
0 Kudos

Hi Rebecca,

as mentioned by Greg and Nageshwar you have very good reasons to reject any direct changes at the wsdl. This is the type for your inbound interface and the wsdl is a description from the service owner how to invoke the service, so if you change it, it will not work anymore.

Nevertheless you can create a data type / message type for the outbound interface, which is the basis for your proxy generation. After that you need to map the both types.

Cut the xml schema part from the wsdl (xsd:schema) and put it to a the source code of a new data type. If you save you will get an error message.

Presumedly you need to put the namespace declarations from wsdl:definitions into the root element. If you save again, you will get another error message. I assume it is because you need a complex Type as root. If you change this is might work (i did that once but it is long ago..). If you post the error popups we can support you.

If the data type is working, just create a message type, and a interface. Proxy generation shouldn t be any problem now as the data type is now validated in ESR. Of course you can add fields manuallyto the data type.

Regards,

Udo

Former Member
0 Kudos

Dear Udo,

Its nice to have such input.

As Greg wrote in previous comment,

The SAP Help doc Consuming Service Operations using SAP NetWeaver Studio seems to say that you can have multiple operations in one service:

In this example, we use 2 Service Operations. They are PurchaseOrderCreate and PurchaseOrderByID.

I do agree that Java Proxy supports multiple operations but not much sure ABAP proxy support the same feature , not sure.Surely my SAP ECC doesnt work

Let me try what Udo suggested. Full credit if it works

Rebecca

Former Member
0 Kudos

This might be old post but i had the same issue. I got WSDL from 3rd party which contains external reference. I was not able to load the WSDL in PI. later 3rd party changed into single WSDL( removing any reference ) and i was able to load it into PI

Next was, i wanted to use the WSDL for source & target message since all mapping was to be taken care by ABAP outbound Proxy. When i generated the proxy out of Service interface ( with WSDL as external message), i had namespace issue and SOAP call reject the request.

Here are the solution that i found ( with help of SDN off course)

(1) Create your own DT/MT for source message. This can be similar to WSDL

(2) When you create message type, in XML namespace, provide the same namespace as 3rd party. You can find this namespace, if you open the WSDL in IE. This is very important, else it will not accept the request.

(3) With this do Message mapping with MT and external message and do the OP.

Other method which i used, since creating data type/MT  was big task for each interface is, to not to create message  instead use XSLT mapping ( Thanks to SDN again) to format the message as per SOAP call. You create Service interface ( both Inbound & outbound) same with the help of External message and use XSLT mapping in OP.  You can create the SOAP envelop/body etc and check " DO not use envelope in Com channel

Hope this helps!

former_member200386
Active Participant
0 Kudos

Hi Rebecca,

If you are Using WSDL file in your scenario no need to create DT or MT. if you see the structure of your DT please check on" Messages "tab in your WSDL , there you can find your structure.

Regards,

Pavan

nageshwar_reddy
Contributor
0 Kudos

Hi Rebecca,

If you want to use the same messages for outbound proxy service interface, then you will not create data type / message type. You can reuse the data type / message type definition in the WSDL as mentioned by Greg.

If your outbound proxy interface can not reuse messages from external definition, then you need to create data type / message types / service interfaces. I believe you need to use manual methods for creation of data type / message types ...