Netweaver
XSLT
Having made a web service work via ABAP has been only one part of what I’ve set out to do. The next step is to use XSLT transformations to parse incoming XML payloads. I’ve had some dealings with XML, but nothing like this before! The biggest issue is understanding the structure of the transformation coded in SAP, the ABAP program that is used to convert it into one or more tables and the actual XML payload. Needless to say, the payloads I’m dealing with are fairly complex and nested to the nth degree. Little wonder then that all initial attempts failed.
Some hints for those of you trying this out. There are many resources on the SAP SDN. As usual, not one of them will match a real-world case. Not in my case, at least! I’ve found it easiest to start defining the transformation and its associated target tables from the inside out. Keep your wits about you and remember that XML is case-sensitive. Contrary to popular belief, ID and Id are not the same. With a large XML document and many tags, it’s easy to foul one or more of them up. Syntactically, everything will look great. Except the ABAP won’t return any values to the table. A good XML editor and debugger is very useful. Altova XML Spy is good, but very expensive. I’m presently using oXygen, whose XSLT debugger is intuitive to use. A simple XML viewer is handy too.
The most frustrating part of the exercise is managing to make the relevant structures identical and provide identical names. So, for exampe the XML tag HEADER requires a variable named header. For each set of tags or data, a for-each select statement is needed. And don’t underestimate the need to declare a record type that matches the structure – if you forget the clause OCCURS 0 when defining types, the table within a table of that type will never receive any values. No amount of debugging will indicate where to look…
ABAP and web services
My frustration is at an end! Having spent numerous hours trying to understand why my web service call refused to return a valid XML document, I finally tracked the issue down to the most common denominator: network access! That’s rather odd, considering a standard ABAP proxy generated from a WSDL is able to connect and transmit information. When coding the web service call in an ABAP program the situation is slightly different, though. I was able to get a SAP system running on a stand-alone machine on my home network. No proxies or firewalls interceding, the connection worked almost immediately. Some issues with the XML and SOAP envelope contained in the call where quickly resolved. The key is to ensure the following type of code is not included in the program:
* proxy server authentication
CALL METHOD http_client->authenticate
EXPORTING
proxy_authentication = ‘X’
username = user
password = password.
Removing the call to the authenticate method is the first step, whether the SAP system is behind a proxy or not. The easiest way of verifying that the connection cannot be established is to create a new connection of type G in transaction SM59. The URL is the destination. A click on the Test connection button should result in a failure. It seems that the global proxy settings in transaction SICF have no effect.
The overall solution is simple, yet not easy to implement in a corporate environment. Ideally, a change to the ISA server configuration is required to permit the WAS full access to the Internet. If that’s not possible, an easy solution in the Microsoft Server environment is the installation of the Firewall Client Tool. Browsing the Internet should be possible from the server hosting the Netweaver WAS and the relevant entries for the proxy made in Internet Explorer. Then, simply make the relevant entry in the Firewall Client.

Connection successful!
Now, on the unchartered territory of XSLT transformations to convert XML to flat ABAP structures…
Calling a web service from SAP
This is one of those that has had me rip my hair out for the past two weeks. Not that it’s at all difficult. In fact, with the newer releases of the Netweaver Web Application Server, there’s a built-in console and testing environment to generate an ABAP proxy that will generate the necessary system structures and even create skeleton coding for an ABAP program. If you are dealing with an XML payload that is not complex, that is.
Let me explain: the creating of an ABAP proxy is a simple affair. Go to SE80 and generate the proxy by entering the necessary values for the Enterprise Object. Hey presto: the object is created once the WSDL has been supplied and all SOAP definitions are dragged into SAP. You can even test a web service as you would in Altova’s XMLSpy. The crazy thing is that the call always returns something valid. Then, you go to the ABAP code and try to reproduce the call and…nothing. The incoming payload is empty. Always. Without an error. After a week of frustration I finally received a response from SAP. The coding is unable to process a nested XML structure. The payload is effectively unusable. Great! Now, to go back to the more error-prone ABAP coding by making HTTP calls directly. There are many samples, both on SDN and the online SAP Help.
Funny thing is, that doesn’t seem to want to work either. No errors, but the incoming payload is constantly not what I expect. Instead of an XML, I get an HTML document that contains connection errors. I haven’t a clue where the problem lies now: in the ABAP program? In the network proxy settings? In the WAS connection? The destination system? I’ve tried this on more than one system, with the same results each time.
Help!
Netweaver 2004s becomes Netweaver 7.0
Modern-day SAP is confusing enough given all the various products, solutions and versions that exist. Having changed their naming scheme for all products based on the Netweaver stack to reflect the year of the release, SAP have now once again changed to a version number. Netweaver 2004s is now know as Netweaver 7.0. The newest release will be Netweaver 7.1 and should be available soon.
According to SAP, the change of the nomenclature was necessary to reflect the new release strategy for all SAP solutions announced recently. Instead of having new major releases for our solutions every 1-2 years, SAP started to deliver so called Go-To-Releases that remain stable for a longer period of time.
Here we go confusing the customer base yet again…
IBM SOA Architect summit
I continue with an overview of the remainder of the IBM SOA Architect summit.
Modeling and methodologies are all good and well. But there is a time and a place for everything. In the talk on SOA in an enterprise architecture, there was a fair bit of real-world experience provided. Practical advice including the fact that standards are useful only if they actually make a difference. A good example of this is the attempt to include a certain standard or development technique into a SOA development only to find out that the requisite skills are not available or that the development technique goes beyond what is ordinarily done in the organization. The most salient point made in the presentation is probably the most important question anyone embarking on the SOA voyage should think about: what is a service?. It’s a lot trickier than one initially thinks…
IBM SOA Architect Summit
Yesterday was certainly a busy day! With both the IBM SOA Architect Summit and the inaugural Open Tuesday event, there was no opportunity to provide feedback during the day.
Here are some notes from the IBM event, which was well attended and provided input and information from some senior IBM’ers. The high attendance figures are a good indicator for the amount of attention SOA is presently receiving.
IBM’s take on SOA is similar, yet subtly different from SAP’s view. That makes sense, as IBM has the ability to provide a SOA architecture without having to worry too much about an existing, functionally rich application suite. Whereas SAP is focusing on select services and components, IBM offers a much broader scope that extends all the way from its On Demand hardware and solution provision, to modeling and development.
SAP’s Next Generation of Composites
Today’s information session hosted by SAP focused on composites. With people still not entirely certain what the concept of Netweaver entails, SAP is acting like any other technology company: invent fancy terms for simple technologies, then confuse those you call customers. By the way, Netweaver has nothing to do with the web hosting company in the UK carrying that name – SAP’s Netweaver can be found here.
In SAP’s case, the customer base is rapidly expanding, especially in the case of composites. So what are these composites in any case? Composites are nothing more than the tying together of smaller building blocks to create value-add applications. The small components are web services exposed within the core SAP applications and exposed for other applications to call on. SAP has an arsenal of roughly 500 web services available at the present time, with many more being added by themselves and numerous ISV‘s. Composites are structured offerings and carry the name xApp if developed by SAP. xRPM is for portfolio management. Duet is probably the xApp with the best marketing and hype surrounding it. A joint development by Microsoft and SAP, Duet integrates functionality directly into a user’s Outlook client.
SAPGUI 7.1
Don’t expect much in the way of change after installing the latest Netweaver 2004s SAPGUI 7.1. It still looks the same as the 6.40 release, but offers increased downward compatibility and the necessary support for the latest NW04s applications. The installation program is a lot more polished but still asks for a reboot seconds after the installation has started. At least the reboot now message is more subtle and you’re less likely to accidentally select it.

The GUI DVD also includes the latest Java-compliant front-end. This will form a standard part of newer Netweaver 2004s installation kits, or the SAPGUI itself may be order directly from the SAP Service MarketPlace.
Combined upgrade and conversion for 4.6C
SAP has updated its Combined Upgrade & Unicode Conversion Guide to provide support for a direct upgrade from release 4.6C to SAP ECC Core 6.0 including a Unicode conversion. Previously, upgrade activities would have to be completed, then a Unicode conversion started. The combination of these two activities saves time and eases planning for companies considering the switch from 4.6C to something newer.
As usual, the SAP upgrade is no trivial matter. The inclusion of the Unicode conversion has some important side effects, most notably that all custom ABAP programs need to conform to the syntax and semantics of the ABAP 6.10 standard. Additionally, the checking of objects and programs generally cannot be performed in a 4.6C system: the installation of a 6.10 ABAP preparation system is necessary. All custom objects are transported to this and checks regarding syntax are carried out. Obviously, the usual testing regarding the functionality of these programs is also required, and will take a fair bit of time and tweaking.
The default Unicode conversion method is to export the entire database using SAPinst, create a new Unicode database by way of a system copy and then import the database using SAPinst again. The actual data conversion to Unicode is done during the export. Customers utilizing Informix are out of luck, as there is no Unicode support. DB2, anyone?
Information regarding Unicode in SAP environments can be found here and the important OSS note number is 928729.
MDM – not just for harmonization
The SAP Netweaver stack of technologies provides many different ways a company using the software can explore new solutions. There’s the Enterprise Portal, which provides a home in a web environment for virtually any application together with the necessary roles and security. The Exchange Infrastructure component is a middleware layer, allowing disparate applications to be linked and interfaces established.
One component that has not received too much attention until recently is the MDM (Master Data Management) component. Initially billed as a solution to the master data maintenance issues faced by all organizations utilizing some form of IT in their business, the latest incarnation of the MDM suite provides a whole bunch more. Yes, it can assist with streamlining master data, ensuring that Mr Smith’s phone number is the same in all 27 systems a company utilizes. But it is also capable of providing a complete backend for publishing product details to web sites and product brochures. This may seem like a curious feature, but it’s vitally important to help save money. Large manufacturers produce many different products, all with their own specifications. Many products are similar, yet differ in small details. Hauling all that data together to provide a clear view to customers regarding a full product range is a hectic affair. Enter the MDM publishing tool, which is able to store and manage images and documents together with all the product data. An excellent example of this technology in action is the GE Appliances web site. This site has SAP MDM as a direct back-end. Consumers are able to slice and dice information in many different ways and see the details of products as is necessary for their purpose. A side effect of the MDM tool is the ability to provide instant comparisons of products.
If master data maintenance and dissemination truly does represent a large chunk of the cost organizations need to worry about, then SAP’s MDM has a bright future. More on MDM here.
Recent Comments