MDR: Defining web services from ABAP without requiring PI
Traditionally when providing Web Services from ABAP system either a PI system including an ESR or another system providing service definition WSDL files was required. There was no possibility to create Web Service Proxies locally in the ABAP backend except of using the functionality of exposing a function module as a web services or to use some application specific functionality (e.g. the web service tool in SAP CRM to expose BOL objects).
With ABAP 7.02 the meta data repository (MDR) functionality is available enabling the creation of Web services locally in the backend system and releasing them in WSDL and WSIL files. The tool is still in a pilot phase and SAP states that there are certain maintenance restrictions.
The following steps describe how to create a Web Service definition and the according proxy objects in NetWeaver 7.02.
1. Define Namespace for MDR
In Transaction SPXNGENAPPL a new namespace should be defined. In my example I call it mdr.test.loca:MDRTEST. In a real scenario this should follow the company’s domain namespace.
2. Define data elements for proxy objects
In transaction SPROXY a new proxy object is being created with a right-click on any namespace component.
A wizard is opened to first choose the type of object to be created, the external name and the namespace to be chosen and finally to choose the ABAP package and the transport request to be used.
3. Define proxy type
In this step the type of proxy is being defined. The tool both supports the approach of beginning with the service and add existing and even new components.
4. Define external name
When defining the external name the name to be presented to the (non-ABAP) applications consuming/providing the web service is defined. Here usually a camel case description is used. From this name the system even generates the ABAP type names.
5. Define package and transport
Like all other repository objects a workbench transport and a package must be assigned.
After running the wizard the proxy object has been generated and it must be defined more detailed:
6. Define ABAP type
The ABAP type is being generated by the external name. The field prefix can be used to separate the newly created proxy objects from other objects in SAP data dictionary. Personally I always use a prefix per Software Component or MDR namespace.
7. Defining structure and external format
In the other tabs of the proxy screen sub objects like data elements, messages or service interfaces can be added to the proxy and the format can be defined.
8. Generate endpoint and run service
In order to be able to execute the service an endpoint needs to be created with SOAMANAGER like for other services.