I had meant to write this blog a good while back after facing, fighting, and defeating this "monster" of a problem, but I thought "meh, who else cares about this?" (*side note: this happens to be the thinking of a lot of people who talk themselves out of blogging and sharing here....so GO BLOG!) . That all changed when I saw a recent forum post from someone facing this exact same pain in the a.....uhm....well, let's just say "pain". This "pain" occurs when using the Java version (EhP4 and lower) of the "Bank" ESS service.
     For me, this happened on a normal ESS project a few years back. We were rolling out SAP standard services with little to no changes. Not much to see in DEV....but then in testing in QAS/TEST....*WHAM*....it hit us. When running the Bank service, test users were waiting for several minutes for it to load....and more often than not, time out. For some reason, those pesky end users just could not live with that....GAH! They're so demanding, right!!?!?! haha. So, I set off to figure out what was going on and why.
     Setting up a user trace with my own employee/user ID on the backend and then running the Bank service via the portal on the frontend, I looked at the trace results and the issue was immediately recognizable....
bank_rfc_trace.jpg
Something was going on in this HRXSS_PER_GET_F4_VALUES function! My first and immediate thought was...."To the SAP Marketplace quickly....there must be an OSS note for this!!!". I searched on this function and on "ESS bank" and sure enough, I found:
SAP Note 1030890 - ESS Webdynpro:To disable F4 help for Bank key
It read as symptoms, "In ESS Webdynpro Bank scenario there is too much delay when the user tries to create/edit a Bank record. Too many values for the bank key causes a huge delay in displaying the webdynpro view.This is a performance issue."
     YEA!!!!! This was it!!! I was so happy and releaved....and set to fly in like Superman and save the day with this wonderful fix I had found...I was already patting myself on the back and thinking about that lunch the project manager would be buying me that day...but then I read a little further and my stomach sank....I felt ill...from a massive high, I had dropped to a massive low.
     The "fix" called for a change to the Java component itself....which we all know if you read between the lines this means the dreaded four letters....
                                        N-W-D-I
....NO!!!!!!!!!
     So here was my issue...(1) my client, like most I have encountered, does not have NWDI in place....nor ANY interest in EVER putting it in place (2) we were already rushed for time and under the gun as "go live" approached, so setting up NWDI from scratch...which meant getting the BASIS team up to speed on what it is, how to install it, getting developers up to speed on using it, etc...not to mention the actual cost of the physical space (servers and such) for it...just wasn't happening on even the BEST of conditions.
     We played our next option....contact SAP for help....surely, they'd know what to do, right? This is where it got laughable. I helped create the request which mentioned everything above and our issue of not having NWDI, and then we waited. A few days later, we get a response from SAP..."Please refer to note 1030890"....WHAT?!??!...we replied again stating we knew of that note, but NWDI was not going to happen, and we waited. A few days later, SAP replies "To correct your issue, please install the NWDI environment and follow note 1030890"....WHAT?!?!?!?...again, we patiently replied back that we do not and will not have NWDI and could they provide an alternate solution. SAP responded again with simply what amounted to "Sorry, the fix we provided is the fix, and we have no alternative for you....have a nice day!". Argggggg!!!
     Not one to give up, as we had gone in circles with SAP, I had been working on tracing the issue and looking for other possible fixes. I looked for ways using the Decoupled Infotype framework's input/output conversion classes.....nothing. I looked for possible ways to possibly even modify the Java component without NWDI and re-deploy it directly (tricky AND very dangerous!), but didn't find a "safe" way. I looked here and there...high and low...but then it dawned on me (which it should have before), why not look back at the function itself?!?!? I then ran a debug and had breakpoints right as execution entered the function HRXSS_PER_GET_F4_VALUES.
     Right away, I noticed an interesting input parameter...."excluded_fields". Inspecting this, I saw other field names from the infotype that normally have "search helps" associated with them, however, it seemed this was a way to tell the function to not try to build those "help" values. Thinking back to the note from SAP, I recalled it mentioned to uncomment code to add BANKL to a method call..."uncomment the line fields.add("BANKL"); in the method addValueHelp()"...which I guessed (correctly too!) without looking at the Java code meant that they were simply adding "BANKL" to the "excluded_fields" table to then call the F4 "help" function. (*which means also they knew of this problem before since that code existed but had been commented out...haha). I figured I was on to something, so I thought "Instead of doing it on the frontend in the Java code, why not just do the SAME thing but on the backend?". I made an enhancement spot (thanks to Graham Robinson and his wonderful TechEd session on this!) in the function and my code was:

FUNCTION hrxss_per_get_f4_values .
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""$"$\SE:(1) Function Module HRXSS_PER_GET_F4_VALUES, Start                                                                                                    A
*$*$-Start: (1)---------------------------------------------------------------------------------$*$*
ENHANCEMENT 1  Z_IMP_ESS_BANK_FIX.    "active version
  data: wa_excluded_fields like line of excluded_fields.
  wa_excluded_fields-FIELDNAME = 'BANKL'.
  append wa_excluded_fields to excluded_fields.
ENDENHANCEMENT.
*$*$-End:   (1)---------------------------------------------------------------------------------$*$*
*"----------------------------------------------------------------------
*"*"Local Interface:
*"  IMPORTING
*"     VALUE(EXCLUDED_FIELDS) TYPE  HRXSS_PER_FIELD_T OPTIONAL
*"  EXPORTING
*"     VALUE(MESSAGES) TYPE  BAPIRETTAB
*"  CHANGING
*"     VALUE(F4_VALUES) TYPE  HRXSS_PER_F4_T OPTIONAL
*"----------------------------------------------------------------------
*TRY.
  CALL METHOD xss_adapter->get_f4_values
    EXPORTING
      excluded_fields = excluded_fields
    CHANGING
      f4table = f4_values.
* CATCH CX_HRPA_VIOLATED_ASSERTION .
*ENDTRY.
ENDFUNCTION.

     After making the change, I re-tested and re-traced the run and the result was now:
bank_rfc_trace_after_fix.jpg
    
     It worked!!!!! The Bank service now responded almost instantly! In the end, I had figured it out on my own....but this time, I was not doing any patting on my back nor waiting on a free lunch. I was just happy it was working, and that was enough for me. Now if only SAP would update their note (or make a new one) that provides this information for others! I am not holding my breath for that, but I do hope others who face this problem find this blog. For me, this has been a good example of "You never know what you run across that might help others"......so get out there and BLOG IT!!!!!
    Although there is excellent material around and even step-by-step guides for configuring and customizing the Homepage Framework (*see the document "XSS Homepage Framework for Employee Self-Service" by Sibylle Borhauerm-Product Manager, SAP AG), I could not find exact details or examples on how to add in HTML content to your Homepage Framework Area pages even though all IMG configuration documentation says it is possible. Through trial-and-error, I figured it out on my own. Once I could link in a basic HTML page, the sky was the limit! You can link in any HTML resource, so that gives you the ability to put in images, Flash animations, wizz-bang-whatevers, and of course, nicely formatted HTML text. You will be some graphic/web designer's new best friend! This document walks your through adding in HTML content into an Area page which is a nice way to present the user with additional, helpful information in an organized, eye-appealing manner. You could provide general help information, policy and procedures or even more links that might change far more often than configuration changes make reasonable. This is based on my experience with ECC5.0, but a similar approach should work for ECC6.0.

Background
    The Homepage Framework is a new feature as of ECC5.0 (“mySAP ERP 2004” for those that want to be thoroughly confused….haha). It is basically a means to build very informative, aesthetically consistent web pages solely through configuration in the IMG (no web coding needed!). It allows you to organize information in a more user-friendly manner. For example, prior to this, ESS services were typically listed as links on a menu on the left of the browser window (like the detailed navigation area of the portal). The user would click the fairly non-descript link and be taken to a web application that contained even less helpful information or description and was more “techy” in appearance. This was not very friendly or intuitive to end users who may not have much familiarity with computers at all. Often times, I would have to build static web pages for clients that would serve to provide help information to the user about what the actual ESS links would do and so forth and to serve as a “jumping off point”. With the Homepage Framework, you can configure (again…no coding!) a “jumping off” page that summarizes all the areas you offer in ESS (called the Area Group page in the Homepage Framework), and then configure more detailed information pages for each area as well (called Area pages in the Homepage Framework).

image
ESS Area Group Page
image
ESS Area Page for Benefits and Pay


Where does the extra content go?
    Although we can bring in custom HTML content into the Area page(s), we have little control over where it is displayed. The exact structure appears as follows:

image
Area Page Layout


As you can see on the right-side as highlighted in the colored outline, that section is for "additional information". Through configuration, we have two options:
  1. Display long text directly entered into configuration of the Area page (default).
  2. Enter a resource for the HTML page to display.
For either choice, the content will display only on the right half of the page. That's the part we are stuck with.(hey, it's a framework! haha). Using long text is a nice quick way to fill in some content, however, it has many downsides. First, it's nothing fancy. You can not include any HTML coding. It is just plain text. Second, line breaks are ignored (unless a note is applied). Third, the language is not translatable. It is simply the text as entered straight into configuration. Lastly, every time the text needs to change, it must be done in configuration (versus an external HTML page that can be managed/maintained separately). For all of these reasons and more, I like the idea of bringing in custom content.

How do we get our content there?
    Assuming you can find your way to the IMG (t-code SPRO) and furthermore, find the Homepage Framework configuration section (the screenshot above lists the path), the steps to add your own custom HTML page to an Area page would be roughly as follows:

//(1) Define a "resource" for HTML page.
In this part of configuration, you simply give your resource a name/key, brief description and enter the URL location of the resource. (*the HTML page you reference must be located on an accessible web server)

image
Resource Configuration


*note: as an alternative, you could define the server portion as a "server" in HF configuration and then reference the server in the resource's configuration (see the field for "server" in the configuration above? that would be the server's name/key that you defined). This is especially useful if you create several custom HTML pages all on the same server and then later need to move the server location. By defining the "server" config, you would only need to change it's new location in that one configuration setting.

//(2) Attach HTML resource to Area page.
The next step is to configure your Area page to reference the HTML resource for additional content and not the long text entry. The configuration before the change might appear as:

image
Area Page Configuration Before Changes

You would then make the following changes:
  • Clear the field "Area Description Heading". (not sure if this is required, but it seems to work and looks better)
  • Clear the field "Area Description (long text)".
  • Enter your resource key name from step#1 into the field "Area Description Long Text (External)".
  • Enter a pixel value for the height of the HTML page to display in the "Height of External Description Frame in Pixels" field. This should not be empty or nothing will display. For the most part, this simply sets the height of the IFrame "container" used to display the HTML page.
  • Save your changes. (duh.)

  • image
    Area Page Configuration After Changes


    //(3) Test and adjust as needed.
    Getting the height sizing right is tricky. Make sure your portal cache is refreshed and go test your changes! If all works well, you should get something like this (hope yours looks much nicer!):

    image
    Area Page with Custom HTML Content




    Gotchas!
        These are a few things to be aware of if you have problems seeing your custom changes (these apply to any changes to the Homepage Framework configuration):
    • Make sure you have copied your configuration to the correct client that is in use. Typically, you will configure in one client and then test in another. You can use transaction SCC1 to copy client-to-client transports, if you have access to that function. The Homepage Framework config is client-dependent.
    • If you do not see changes in the portal immediately, it is typically due to the cache not being refreshed. You can do this via the System Administration - >Support area of the portal for the PCD content. You can also set a parament to clear the buffer directly on the iView for the Area and Area Group iViews but this is not suggested for performance reasons.

    Wrap Up
        As you might gather through this blog and others I have done on the Homepage Framework as well as forum posts, I have had quite a lot of opportunity to work, experiment, play, tear open, and configure the Homepage Framework. It does have it’s limitations, but as with any tool, it’s great for particular jobs. I have found it useful in building many additional self-service scenarios (ie, Team Lead Self-Service, self-service for visitors/guests to use on kiosks, etc). I hope this blog motivates you to give it a try, and now with the step-by-step configuration guide already available and this blog filling in the blanks for the custom content, you should really be able to customize just about all aspects needed.
    Although there is excellent material around and even step-by-step guides for configuring and customizing the Homepage Framework (*see the document "XSS Homepage Framework for Employee Self-Service" by Sibylle Borhauerm-Product Manager, SAP AG), I have found nothing available that provides information about customizing the actual icons/images that are used within the framework. Therefore, I took the DIY (do-it-yourself) approach and decided to put together a document of my own to hopefully help others. The following is an explanation about how to customize and/or add new icons for the Homepage Framework. This is based on my experience with ECC5.0, but a similar approach should work for ECC6.0.

Background
    The Homepage Framework is a new feature as of ECC5.0 (“mySAP ERP 2004” for those that want to be thoroughly confused….haha). It is basically a means to build very informative, aesthetically consistent web pages solely through configuration in the IMG (no web coding needed!). It allows you to organize information in a more user-friendly manner. For example, prior to this, ESS services were typically listed as links on a menu on the left of the browser window (like the detailed navigation area of the portal). The user would click the fairly non-descript link and be taken to a web application that contained even less helpful information or description and was more “techy” in appearance. This was not very friendly or intuitive to end users who may not have much familiarity with computers at all. Often times, I would have to build static web pages for clients that would serve to provide help information to the user about what the actual ESS links would do and so forth and to serve as a “jumping off point”. With the Homepage Framework, you can configure (again…no coding!) a “jumping off” page that summarizes all the areas you offer in ESS (called the Area Group page in the Homepage Framework), and then configure more detailed information pages for each area as well (called Area pages in the Homepage Framework).

image
ESS Area Group Page
image
ESS Area Page for Benefits and Pay


Where is my Framework?
    With any “framework”, as the name implies, there is a fairly rigid layout. This insures consistency amongst the pages. For the Homepage Framework, each “area” is assigned an icon. The icon should visually convey the idea of the “area”. For example, for an area for “Working Time”, you might use a “clock” icon. The icons assigned to each Area appear on the Area Group page as well as the respective Area page. By default, there are only a small number of “out of the box” icons that are provided. I took the time to document the default images and their corresponding “resource” name in a spreadsheet. An image of this appears below:

image
Default Icons


The big question (and one I see asked over and over) is "where does all this stuff live?". This is one of the misconceptions and/or hurdles to overcome in understanding the newer ESS/MSS SAP offerings. With ECC5.0 and higher, most people incorrectly assume that by installing/deploying the ESS/MSS business package(s) that they suddenly have all of ESS/MSS available to them. Wrong. It's an easy mistake to make because "that's how it's always been before". The actual deployment of the overall solutions for ECC and onward requires two pieces. You still deploy the business package, but the business package only covers the portal objects. All you are doing is loading in the out-of-the-box iViews, worksets, pages ,roles, etc. Now what will your iViews “talk” too? The second part is the actual ESS/MSS/XSS services, ie. the applications that "do stuff". At the moment, these are Java Webdynpros and are part of the "Java XSS Components" installation. These components can be installed on any WAS/NWAS, but typically they are deployed on the same server as the Enterprise Portal...just more Java web applications running on the Java engine (again, they could be deployed to an entirely separate WAS/NWAS but we won't get into that). Part of the Java components installation is the Homepage Framework WebDynpro and the accompanying icon images as resource files. The images are not in the Business Package, and they are not not in the backend SAP system. Both are common misconceptions.

Make it your own!
    So now that we know what we are working with and where everything is, how do we change it? First, let me offer this advice. I would not modify and existing icon (replace “clock.gif” with a different image named “clock.gif”. I always create my own custom images. In that way, if all else fails, we still have the SAP delivered content. “Better safe, than sorry!” as my grandfather, an explosives specialist, used to always say. With my word of warning offered, onward we go now. Let's do this through an example. Say for instance, we want to change the icon used for "Working Time" in ESS. The default icon and Area page might appear as:

image
Working Time Area Page


If we look in configuration, we find that the icon used is actually assigned to two resources:
  • EMPLOYEE_WORKTIME_PIC
  • MSS_HCM_AREA_ATTENDANCE_PIC
Since we are changing the ESS one, it’s configuration appears as:

image
Default Configuration of Resource


Now, let’s say we have our own image:

image
myCompany_clock.gif


First, we can change configuration of the resource to now use (“look for”) our custom image:

image
Customized Configuration of Resource


Now, we must actually put the image in the location where the Homepage Framework can find it. As I said before and want to make clear once more, the images are not in the Business Package. They are deployed as part of the Java XSS components. Therefore, we must place our custom image out in the same physical directory that the other resources were deployed to during the installation of the XSS Java components. Using our example, let's look at the "clock" image. I could go into detail telling you where and how this is found, but I prefer to show you the simple way. In your browser, navigate to the “Working Time” Area page as shown above. If you right-click on the default icon and then select “Save Picture As…” from the context menu, a window will pop-up showing you the name of the image file as “calendar_clock.gif “ (we also know the file name from the configuration of the resource shown above). Now that you know the actual name, you can simple do a “View Source” on the page and then search for the occurrence of “calendar_clock.gif “. Doing this, we see that it is deployed and linked to the path as follows:

    ../../../resources/sap.com/pcui_gp~xssutils/Components/com.sap.xss.ser.xssmenu.vc.areagroup.VcXssMenuAreaGroup/calendar_clock.gif

Therefore, we simply need to move/copy our own “myCompany_clock.gif” into the path:

    ../../../resources/sap.com/pcui_gp~xssutils/Components/com.sap.xss.ser.xssmenu.vc.areagroup.VcXssMenuAreaGroup/

This may require additional help if you do not know where (what server) the Java components were installed on or you do not have direct access to those directories. With the file copied over and our configuration changes to the backend resource to use our custom image, our “Working Time” Area page now displays using our custom icon:

image
Cusotmized Working Time Area Page


Gotchas!
    These are a few things to be aware of if you have problems seeing your custom changes (these apply to any changes to the Homepage Framework configuration):
  • Make sure you have copied your configuration to the correct client that is in use. Typically, you will configure in one client and then test in another. You can use transaction SCC1 to copy client-to-client transports, if you have access to that function. The Homepage Framework config is client-dependent.
  • If you do not see changes in the portal immediately, it is typically due to the cache not being refreshed. You can do this via the System Administration - >Support area of the portal for the PCD content. You can also set a parament to clear the buffer directly on the iView for the Area and Area Group iViews but this is not suggested for performance reasons.

Wrap Up
    As you might gather through this blog and others I have done on the Homepage Framework as well as forum posts, I have had quite a lot of opportunity to work, experiment, play, tear open, and configure the Homepage Framework. It does have it’s limitations, but as with any tool, it’s great for particular jobs. I have found it useful in building many additional self-service scenarios (ie, Team Lead Self-Service, self-service for visitors/guests to use on kiosks, etc). I hope this blog motivates you to give it a try, and now with the step-by-step configuration guide already available and this blog filling in the blanks for the images, you should really be able to customize just about all aspects needed.
What is the Homepage Framework?
The Homepage Framework was introduced with the release of mySAP ERP 2004 (ECC 5.0). Many of you may already be familiar with this if you have ever accessed the SAP Service Marketplace (service.sap.com), which uses this framework for the main page. Solely through configuration (IMG), it allows you to organize content into an overview page (called an "Area Group" page or the "Homepage" for which the framework gets its name) as well as separate detailed pages (called "Area" pages) for each of the areas shown on the overview page. Furthermore, within the detailed "Area" pages, you may also define "subareas". Following the framework, every part of the "Area Group" and "Area" pages (icons, headers, text descriptions, links, display order, etc.) is definable through configuration. Yes...if you missed that....it means NO coding is necessary at all.

XSS Homepage Framework for ESS/MSS scenarios
Many users will also get their first exposure to the Homepage Framework concept when first working with the new ESS and MSS versions introduced for mySAP ERP 2004. SAP groups self-services as "XSS" where the "X" is a place holder of sorts meaning that it can represent "E"(mployee) or "M"(anager) or any other self-service options coming from SAP. Therefore, you will see the "XSS Homepage Framework" mentioned in documentation from time to time. At the end of the day, it is the same Homepage Framework we are discussing now. Personally, I am more of the "visual" type, so let me show you how this Homepage Framework appears in practice. The following is the out-of-the-box ESS "Area Group" page and an example of one of the detailed "Area" pages:
image
ESS Area Group Page
image
ESS Area Page for Benefits and Pay

As you might guess, configuration of the Homepage Framework for ESS and MSS is now part of their respective IMG steps. For ESS, the same steps found under the "main" path for the Homepage Framework configuration (SAP Customizing Implementation Guide -> Cross-Application Components -> Homepage Framework) are duplicated within the ESS IMG area. However, within MSS, the IMG documentation basically tells you to follow the "main" path to the configuration. (How's that for consistency? haha) Without getting in depth into the configuration steps here, I highly suggest you read through the IMG documentation...probably more than once...to fully understand the relationships between the components that make up the framework.

Thinking outside the box...but within the Framework
This framework is not just confined to ESS or MSS or any particular self-services applications. Given the flexibility that the Homepage Framework allows, you can easily create content (Overview page, detail pages, etc) without any coding required. We can utilize this quick and easy method for organizing and presenting content in any number of ways that you can imagine.

As a simple example, most all companies have an area on their web site (internet/intranet) that list their various company locations. They might also display a picture of the site, list the address and possibly link to an online mapping service of some sort (ie. Mapquest). In most cases, this will appear as a static web page.
Using the Homepage Framework, we could quickly and easily construct an overview page and detail pages for each location simply through configuration in the backend ECC system (and some minor portal PCD work). These might appear as follows:
image
Area Group Page
image
Area Page

Because everything on these pages (yes, EVERYTHING!) is configurable, we can add/change/delete content through the IMG without the need for any web page maintenance or development. Want to change a picture for a location? Simple. Want to add links to location specific web sites? Simple. Want to rearrange the order the locations display on the overview page? Simple. All of this can be accomplished through the IMG in the backend ECC system.

This same solution could just as easily be applied to company departments for instance. For example, you could create an "area group page" with "areas" defined for Finance, HR, Sales, Purchasing, IT, Production, etc. As another example, you could set up an information page for visitors for use at kiosks. You could even organize specific job functions for casual users or entry level users to lower the cost of training and support by providing an intuitive homepage.

Lastly (and what I find very useful), this framework allows you to quickly incorporate existing content a company might have (other links, other systems, web accessible forms, etc.) until a time comes that they may transition those assets to other locations. Within your area/subarea configuration you may define any number of various links. At the moment, the Homepage Framework allows the following types of links:
  • BSP services
  • ITS based services
  • call a portal (PCD) page
  • direct URL launched in a separate window
  • WebDynpro application
You should see that even in the worst case where no other link types meet your needs, you could call a simple WebDynpro application to construct whatever link you need, add parameters dynamically if needed, and redirect the user. Therefore, although they might appear limited at first glance, your options for links are really open to most anything that is accessible.

As a final example, for the project I am currently working on, my client has decided not to roll out the standard MSS Personnel Change Requests services. However, they want to keep the PCR area on the MSS Area Group Page but simply change the information for the PCR area to describe their current process and link to their current PCR forms. In this way, they are able to simply re-use the content they have in place now until transitioning to the standard MSS PCR process in phase two of our project. Once again, no coding or development of any kind was required.

Where to go from here?
I am sure you can think of even more examples and possibilities. I simply wanted to make people aware that this option exists. For more information, I highly recommend you download the document "XSS Homepage Framework for Employee Self-Service" by Sibylle Borhauer (Product Manager, SAP AG). This is one of the better SAP documents I have seen, and it steps you through the process of creating your own Homepage Framework pages from start to finish. Although written from the perspective of ESS, the same methodology can be easily followed to create your own Homepage Framework scenarios.

As always, I hope this has helped!

Actions

Filter Blog

By author:
By date:
By tag: