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.
I've tested on several 7.02 systems and I have no SPXNGENAPPL transaction or anything else in the SPX* prefix.
Is it possible there are other dependencies I have to be aware of?
According to OSS note 1575707 this is available from NW 7.02 SP8.
OK. Thanks. I'm on SP6. Time for an upgrade.
Nice to know... Thanks for sharing.
Thanks fot sharing this. Only one comment - there is no need to call the Service Provider ZFlightId - FlightId should be ok because it in an XML namespace. Only generated ABAP proxiy elements have to be in an Y, Z or customer namespace.
Is it possible to use standard web services mentioned in ES Workplace site (http://esworkplace.sap.com/) in ABAP only scenarios (where no PI exists)?
For e.g. "PurchaseOrderChangedInformation_Out". This namespace of this service is http://sap.com/xi/APPL/Global2 and it seems to be modelled in ESR.
So, my question is how we can use these standard services in ABAP MDR scenarios? Do we need to migrate these services from ESR to MDR?
Useful blog, thanks
Thanks for sharing. Its was really helpful for me to get an idea about, what is MDR?; where we maintain a namesapce for MDR and ESR ?