Every other day, and sometimes it feels like every other minute, the simple question comes up: How to do X?, usually with the qualifiers Help!, Urgent! or ????. Most of these questions, when reading between the lines, also contain the additional qualifier I have not read the documentation.
In a way, this is understandable. Reading documentation is hard work and boring. However, we have to look at it also from the side of the person answering these questions. It is frustrating to feed people every day with a little spoon. Especially after a hard days work.
This Weblog attempts to point to interesting and relevant sources of information. It is not an answer to any question; no, it is the pointer to the answers!
Business Server Pages (BSP) is just the tip of the iceberg. It builds on the foundations of many other peopleshard work. By the time that the BSP runtime is started, we have already passed the Internet Communication Manager (ICM), the Internet Communication Framework (ICF), and the security group (Men in Black).
ICM is responsible for handling all HTTP communications at a low level. All incoming TCP/IP connections on opened ports are accepted, HTTP requests are read and mapped onto an existing or newly created session. After the HTTP request has been processed, ICM will take the HTTP response, and send it back to the browser. At the level that ICM works, we have only HTTP requests and responses as blobs. See transaction SMICM. A special variation of ICM is the Web Dispatcher. This is a standalone tool for HTTP load balancing.
ICF processes the HTTP request first by using the incoming URL to map onto the correct handler class (servlet in Java terminology!). In addition, ICF does the authentication process, and with the help of the security group, does an authority check (if configured), and some other basic features (activate gzip compression, debugging, etc). See transaction SICF.
BSP is started for all HTTP requests that are mapped onto the BSP handler in the ICF tree. Within BSP, the form fields from the incoming HTTP request are mapped onto data, and then a BSP page (or controller with views) is triggered to render out new HTML into the HTTP response.
Security aspects play an important role in all steps. However, for our daily problems, we seldom involve the security group (those with the dark sunglasses). See transaction STRUST.
The ABAP Language Group (our silent partner) is the last interesting part of the equation. Effectively, each BSP page or view is transformed into one ABAP class. As such, anything that can be used within an ABAP class method, should work on a BSP page. Our experience is that we nearly never involve the language colleagues. Only in cases of problems with a special language construct. Typical example would be a recent question on why tables with header lines do not work within a BSP page (= ABAP class) and what alternatives are available.
The application is actually the most important aspect in this picture. The above is the enabling technology that allows other groups to build complete Internet applications.
Before we start looking at general sources of information, let us first look at problems. Sometimes problems land in a mailbox, or in a newsgroup, where they gather dust. This is not the correct way to handle problems. Problems must be submitted to SAP via OSS.
There are a number of reasons for using OSS, versus sending someone an email, or trying a post on some forum.
The most important question is what queue to use. Our recommendation is to always consider using the application queue first. These developers know their application and its behavior, and can quickly tell if it is a real problem. They will usually have a list of known problems for their application, which could also help in faster processing.
To determine the correct OSS queue for a specific BSP application is relatively simple. Just double click on the application node in navigation tree on the left. Select the properties tab, and from there double click on the package name (also called Development Class in prior releases). For the specific package, again look at the Attributes/Properties tab. There the OSS queue (component) is listed.
In addition, below are some OSS queues that can be considered if one is sure about the problem, and where it belongs.
OSS Queue | Use For |
ICM: BC-CST-IC | HTTP not working; problems with HTTP port numbers; HTTP logging and tracing; sizing for HTTP traffic (connections, threads); host naming |
ICF: BC-MID-ICF | Running applications anonymously; authority checking; debugging and breakpoints are not working; Service not active (rc=403) messages |
BSP: BC-BSP | Errors with the BSP runtime; rendering errors if the HTMLB libraries are used; JavaScript errors in the browser |
Security: BC-SEC | Problems with installing X.509 certificates; problems with Single Sign On (SSO2) cookies; all problems with accepting SSO2 cookies from other sources, ex: Enterprise Portal. |
ABAP: BC-ABA-LA | Anything that seems to be related to the ABAP language, and can be reproduced without BSP in a normal report (transaction SE38) |
SAP Notes are used for ad-hoc communications between SAP and its customers. It is a very fast way to quickly describe problems and fixes, and get them out the door. However, often one loses the overview with many notes flying around. Therefore, more groups make collection notes that contain links to all relevant notes for that group.
Here are some of the more interesting Notes one should keep an eye on.
Group | Note Nr | Title |
ICM | 508300 | ICM Patch Collection (6.20) |
ICM | 698017 | ICM Patch Collection (6.40) |
ICM | 552286 | Troubleshooting for SAP Web Dispatcher |
ICF | 517484 | Inactive Services in the Internet Communication Framework |
BSP | 616900 | BSP Frequently Asked Questions & Patch Collection per Service Pack |
BSP | 598860 | Browsers supported by BSP |
BSP | 677118 | Fully Qualified Domain Names Check |
SEC | 510007 | Setting up SSL on the Web Application Server (Now tell us that 007 number was just an accident:) |
SAP Notes can be read directly on SDN! On the navigation bar on the left, just enter the note number, and change the dropdown listbox to SAP NetWeaver Notes.
Unfortunately, this search is not working up to my expectations. Hopefully, the SDN developers will improve the feature to better find and display notes.
Recommended reading: There are angels on SDN 😄. Here Pankaj shows how to quickly build a URL together that will retrieve SAP Notes from SAPs Service Market Place.
Read the Fine Manual (RTFM) has always been the best advice one can give, and the best advice that one can receive! Help can be found at SAP's Help Portal. Navigating the first few steps are slightly confusing, but thereafter the world of knowledge opens! See steps below. It is also possible to search the Help Portal as a selection in SDN.
Some interesting links directly to the documentation of the different groups are listed below.
BSP Extensions are used extensively for the layout of BSP pages and views. SAP actively ships the HTMLB extension that contains a core set of controls for rendering web pages. In addition, a number of other interesting extensions are available.
BSP Extension | Description |
HTMLB | HTML Business for BSP |
XHTMLB | Extended HTML Business Library for BSP |
PHTMLB | Pattern HTML Business Library for BSP |
BENCHMARK | Evaluation of the Runtime Performance |
To browse BSP Extensions, just change the selector in transaction SE80. Thereafter enter the name of the specific library. All the BSP elements for the specific extension will be shown in the tree on the left. For each element, one can browse the attributes by just selecting the element.
Online help is available for most libraries. Press the Documentation button!
On a BSP page, double clicking on the BSP element will do a forward navigation to the definition of the specific BSP element.
The best way to learn is to follow in the footsteps of other people. A number of interesting BSP applications are available to show how certain things are done.
Program | Comments |
IT00 | Very old test program, from the days before BSP extensions. Contains many interesting examples of how to do HTML-like things in BSP. |
ITMVC2, BSP_MODEL | Example programs for MVC patterns. |
HTMLB_SAMPLES, SBSPEXT_HTMLB, SBSPEXT_XHTMLB, SBSPEXT_PHTMLB | Examples programs for the BSP extensions HTMLB, XHTMLB and PHTMLB. |
SBSPEXT_TABLE | More a test program that we use to test many different aspects of the HTMLB tableView renderer. Shows what can be done with tables. |
ITSM | Example program to show some ideas for session management in BSP. |
SDN is one of the more exiting developments within the last year from SAP. It has really opened up the communication flow among SAP developers world-wide. It is a community for developers from developers.
For BSP, there are two interesting resources in SDN. The first is a series of Weblogs. These are mostly technical articles, written to address a specific topic of interest at a very deep level. Just ignore all the spam Weblogs that insist on sitting in every category with their fluff.
The direct link to BSP Weblogs is: http://www.sdn.sap.com/irj/sdn/weblogs?blog=/weblogs/topic/24
The other interesting area on SDN is the forums. There is one forum dedicated to BSP.
Here it is possible to ask questions and get answers. Nevertheless, please keep the rules of engagement in mind. Problems should be in OSS. Simple/stupid questions are OK, but only after reading the documentation. It is good to first read some of the forum, to see if the specific topic you are interested in has not already been discussed. Consider searching through the forum using some keywords. See search area at the top of the forum.
This section lists books on BSP that we are aware of. Should new books be published, just send me a small email to update this list.
Web Programming with the SAP Web Application Server (ISBN 1-59229-013-2) SAP Web Application Server: Entwicklung von Web-Anwendungen (ISBN 3-89842-213-5) BSP-Extensions:Komfortables Webreporting mit HTMLB (ISBN 3-89842-943-1) English version not yet available