SAP
SAP Enterprise SOA Starter Kit
SAP is starting to push the SOA bandwagon with a bit more vigour. For companies and individuals a bit more interested in the technicalities of Service Oriented Architecture, the new Enterprise SOA Starter Kit is a useful resource. Little more than a fancy slideshow with links to documents going into more specific detail, the Starter Kit is a 250MB download from the SAP Developer Network. You’ll need to be registered on the SDN, log on and then follow this link. The downloaded file is in RAR format, not ZIP. Get unrar here.
Remember to unpack with option x, like so: unrar x StarterKit.rar to maintain the necessary directory structure.
There’s certainly a lot of information contained in the pack, together with some interesting case studies. If you can deal with the product-specific slant (IBM and other vendors are no different), this should serve as a valuable starting point for generating a business case for a small SOA project. Remember, small and manageable is key. Also: you want to show a business benefit, not implement something for the sake of cool technology.
The idea is to take something like this
to something like this over a period of time.
Of course, theory and practice does not always blend seamlessly. Some disappointment is inevitable until this technology stack has had a chance to mature and prove itself.
Web Page Composer SPS15
A couple of enhancements have been made to the Web Page Composer component in the SAP Enterprise Portal with SPS15. Though not overwhelming, two enhancements jumped out at me.
The first is the ability to add reasonably long paragraphs and articles. In previous versions, the WPC would refuse to save the input and the text had to be cut down quite significantly. Not exactly useful if the text you want to provide to end users is of that length and cannot be changed without significant rework. The reason for the change is that the text is now stored in an XML structure and not directly in Knowledge Management as it was before.
More cosmetic in nature and seemingly limited to articles is the Advanced Paragraph editor.

Within the article editor, add a new Advanced Paragraph from the drop-down:

Now, some of the new text editing features are available. Compare the new editor tools to the standard toolbar displayed below in the image:

I’ve discovered that pasting formatted text from Word works: the formatting is retained. That includes justification. If you are using the Web Page Composer the update will make life a bit easier.
Web Page Composer
SAP software does not exactly have a great reputation when it comes to user-friendliness. Adding content to the Enterprise Portal is a mission to say the least: fiddle with adding content to the Knowledge Management component, then make it visible or link it in the Portal Content Directory. Finally add appropriate roles for the consumers of the content. It’s all a bit much. The Web Page Composer is a first attempt at making the addition and modification of portal content a lot more seamless and a lot more PC-like. End-users shouldn’t have to bother with the PCD and KM. Why understand technical detail if all you need is to update a few lines of text or add an image?
The Web Page Composer is freely available on the SAP Service Marketplace. It needs to be downloaded and deployed using the JSPM. After installation, the J2EE engine should be restarted. Once installed, users may be assigned various roles – the possibility of providing full publication access or requiring approval is possible. Users wanting to make use of the WPC require the role wpc_editor_role added to their user master. A new tab appears in the navigation ribbon for the WPC.
Of course, the WPC cannot satisfy all content requirements and is probably best used for very simple content: ideally text and images, maybe some links and uploads. For anything else, the KM and PCD has to be used, but I’m certain that SAP is moving towards a full WYSIWYG environment eventually.
Creation of a new site is a prerequisite. At present, it seems somewhat problematic to integrate existing content.

For access to the WYSIWYG magic, we can edit or create a page on that site. Effectively, the WPC provides a bunch of containers into which content may be “dropped”.

The selection of a suitable layout is possible:

Various content types may be created. There are still issues with text length – in my tests, I had to constantly chop paragraphs off the text I had pasted until the editor would accept and save my input. It is fairly easy to add images, though these need to be added to the portal content beforehand. That’s a fairly simple upload task.

Once saved, the content appears once again in the design view.

That’s basically all there is to it – now save and publish and the content appears in the relevant section of the portal.
There are still some issues with the type of content one may wish to edit or create and I’ve yet to find a way of making the WPC read existing content for further manipulation. If your end users require a quick and easy way of updating simple content on the SAP portal, the Web Page Composer may well be the way to go. It’s no FrontPage. Then again, that may be a blessing. But it is certainly a lot easier than having to work in the Portal Content Directory. In the world of SAP, it’s generally accepted that any better way is better! Regardless, this is sure to be the future interface SAP will be pushing out in future releases.
My Brainstorm for April
Brainstorm magazine for April contains a brief article on SOA.

Here’s part of the content:

Pardon the self-promotion
And the huge image…
Mind your p’s and P’s
This is one of those typical nonsense errors that can creep in and cause hours of research and frustration to resolve. In the end, it’s a carbon-interface problem, but certainly caused only due to the human ability to parse details quickly, then assume everything else…
Why the hell software vendors can’t standardize or just stick to lowercase parameters, especially in the case of a case-sensitive environment like Java is a mystery to me. After deciding to re-generate a new certificate for the SSO connection between the SAP backend and the portal, I made the following entry:

That’s SAPLogonTicketKeyPair, with uppercase P for Pair. I kept, quite naturally, to the convention introduced with uppercase letters for each new part of that rather long key entry. But of course, the creation of that entry will have little effect and will ensure no connection is possible using the SAP logon ticket. After a lengthy J2EE restart and various attempts at testing the new certificate, I was left with a non-functioning environment. Deep within the server0 log, I finally struck upon the problem: SAPLogonTicketKeyPair should be SAPLogonTicketKeypair with a lowercase p for pair. The deletion and recreation of the key value with the correct capitalization requires a new certificate to be generated.

Then it all works again. Wouldn’t saplogonticketkeypair be more logical and leave less room for errors? Or how about some IntelliSense (or is that Intellisense) or a catalogue of permissible values to choose from?
Alternate SAP front-end launcher
If you spend your time at different customers all running their own collection of SAP systems, you eventually end up with a SAP Logon Pad that provides no assistance when it comes to selecting the right system. Even if you name your entries intelligently, possibly including a SID, customer name and system description, you still need to scan long lists. Many SID‘s may be duplicated, making a quick click launch of the SAPGUI impossible. Enter BasisTechnologies. They provide a simple application for Windows-based operating systems that reads the list of systems used by the SAP Logon Pad and allows entries to be grouped. LogonX:

The application resides in the system tray and simply hovering the mouse over the icon causes the list of systems to pop up. Select one to launch a SAPGUI connected to that system’s IP address. The 4MB download is available without charge.
SAPHILA 2007
After a hiatus of four years, the African SAP User Group conference is back. Having abandoned Sun City as its venue, SAPHILA 2007 is taking place at the Cape Town Convention Center.

With approximately 1200 delegates attending, SAP seems to enjoy a lot of attention. SAP Business by Design is new, offered only on demand and entirely SOA-based. SAP is pleased to offer financing for SME customers, all to garner a bigger footprint. No more release cycles. These will be replaced by innovation or enhancement packages and the switching framework. No more lengthy upgrades, and the ability to select enhancements as required.
XSL Terrors
Pardon my misspelling, but XSL Terrors seems more appropriate than XSLT errors!
Listed here simply because I got sick and tired of trying to figure out what the hell these meant: errors generated by an XSLT program called to transform an incoming XML payload. Once you’ve seen these more than once, you sort of start knowing what they mean. My favourite has to be the cryptic CX_XSLT_DESERIALIZATION_ERROR. Should you see this, I suggest you investigate the structures you’re using to map the incoming XML payload into. More than likely, one of the text fields is too short – hence, the content of the field cannot be transferred. If you, like me, are left at the mercy of trying to decipher XML content without having access to the actual definitions (that’s so web 1.0), then it’s not unlikely that an errant 89 character string won’t fit into your destination_text(20) field.
By the way, always interrogate not only the ABAP return value XSLT_ERROR, but also the actual message returned in XSLT_MESSAGE. Thusly, you’ll be rewarded with something more understandable. To wit, When deserializing, an error of the class CX_SY_CONVERSION_DATA_LOSS occurred.
Second-most common is something like {O:13*\CLASS=CX_XSLT_RUNTIME_ERROR}. A bit more scary, this one may have you re-reading your input XML source and the XSLT until you’re cross-eyed. My advice, start from the outside and work your way to the inner structures, testing as you go. With a thousand line XSLT program to my credit (and it works), I can guarantee that you have little chance at getting anything to work unless you’re methodical and test each bit of the transformation bit by bit. The text for that error is No valid source context supplied and won’t tell you where you’ve missed matching a record in your structure to the XSLT transformation mirroring the incoming XML payload.
Trust me: if I could have made use of SAP’s automatic proxy generation, I would have! Or just skip the fun of manual labour and implement XI. Or is that PI?
SAP Netweaver product updates
The Netweaver special interest group had some interesting information regarding the latest releases of the Netweaver Portal, Business Intelligence and Exchange Infrastructure solutions. First off, the Netweaver Portal is due for some major enhancements, including the re-coding of many user interface elements using AJAX. The usability impact should be tremendous, and will bring the enterprise portal in line with current web 2.0 standards. Hopefully, the overall performance and response time will be improved too. The addition of AJAX is significant: until now, most access to elements on the screen required forceful clicking, then a wait for a screen refresh.
An interesting addition to the BI 7 release is a new transformation editor that is almost identical to what is presently available in the Exchange Infrastructure (XI) product. Using drag-and-drop, elements may be mapped and transformations added. The inclusion of numerous standard transformations (such as currency conversions) makes the transformation operations simpler and easier to maintain. Various syndication features permit the automated dissemination of reports to selected users at chosen time intervals. SAP seems to be standardizing on certain components to make working with different products in the Netweaver stack somewhat easier. Until now, transformations have to be handled differently, depending on whether you’re busy in BI or XI, for example.
Finally, Exchange Infrastructure (XI) is now officially know as Process Integration (PI). The term PI has been floating around for quite a while, but has not met with widespread adoption. PI becomes the engine on which SAP intends building its ESOA solutions. The primary benefit of PI is the inclusion of a range of standard, already configured content. The ESR is a vital component to ensure governance and compliance with standards and is also officially shown in the PI marketing slides.
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…



Recent Comments