Most of my previous Personas blogs have looked at techniques for building a launchpad for users, so that they can do everything they need from the main SAP start screen without ever running, or at least being aware of running, any SAP transactions. Once the launchpad is built, though, you do need to look at the transactions it, well, launches.
Many transactions will just need fields hiding or moving around into a more logical order. Some require more work. One of the most complex transactions used by our users and the one with the largest ratio of content displayed to content required is IW33. It is complex for several reasons. First there’s content spread across 10 tabs and some of those tabs contain more tabs, and despite all those tabs you still need to scroll the main “header” tab to see everything on it. Worse, there’s information that isn’t on any of those tabs and you have to delve into menus or even other transactions to see it. In particular, my users need to see the settlement receiver (from the Goto->Settlement rule menu) and the long text description of the fault from the corresponding notification (accessible via a button on the Header tab). So when a user looks at a notification, to get all of the information they need usage looks like this:
A little rearrangement of the transaction content, plus a simple (for a change!) script produces a Personas version that works like this:
Yes, that’s an image not a video. Everything our users need is on that one screen. Content from multiple tabs is merged into a single screen and a script fetches the settlement receiver and the notification long text and puts them in added custom fields. How much easier is that!
One interesting thing about how I use this script is how it is invoked. Of course it is attached to a script button, but asking the user to push a button to go and grab this extra data, while easier than doing it the standard way, isn’t very friendly. Instead the script button is attached to the screen so that whenever the screen is rendered the script is invoked afterwards. To do this, first select the script button and grab its ID from its properties. Then select the UserArea component and look at its properties. Down towards the bottom is a property called OnCreateHandler. Paste the script button ID there, like this:
Now, whenever the IW33 screen is rendered with this flavor, the script on the button will be invoked. Be careful what you do with such a script, though. If you aren’t careful you can produce a flavor you can’t edit, if it always fails while on a different screen from the script button! I suggest only adding the OnCreateHandler property right at the end, once you’re sure the script works correctly. During development, stick to manually pressing the button to test it.
Oh, and once everything is working correctly and the OnCreateHandler property is set, you can hide the script button. The user doesn’t need to see it.