business server pages

20
Business Server Pages (BSP) This method is the latest method of developing Internet based programs. The development method is similar to the ITS flow in that you define the look and feel along with the flow logic within the BSP. It then uses FM’s, BAPI’s and inserted ABAP code for the business flow and to retrieve data from the SAP system. The big advantage of this method is that it does not require the ITS server, only requires the SAP Web AS which is incorporated into kernel version 6.10+. Developing web transactions Development of BSP applications is done via SE80 (see example development screen ) although any application can be used which supports the protocol ‘WEBDAV’. Advantages: · Do not have to logon to SAP when running program · Use existing ABAP skills · Can control look and feel of output BSP development screen - developing application using business server pages

Upload: api-3708589

Post on 13-Nov-2014

21 views

Category:

Documents


4 download

TRANSCRIPT

Page 1: Business Server Pages

Business Server Pages (BSP)

This method is the latest method of developing Internet based programs. The development method is similar to the ITS flow in that you define the look and feel along with the flow logic within the BSP. It then uses FM’s, BAPI’s and inserted ABAP code for the business flow and to retrieve data from the SAP system. The big advantage of this method is that it does not require the ITS server, only requires the SAP Web AS which is incorporated into kernel version 6.10+.

Developing web transactions Development of BSP applications is done via SE80 (see example development screen) although any application can be used which supports the protocol ‘WEBDAV’.

Advantages:· Do not have to logon to SAP when running program· Use existing ABAP skills· Can control look and feel of output

BSP development screen - developing application using business server pages

Layout tab This is where the layout of each page is developed, using a combination of HTML and ABAP you are able to define what the screen looks like and how data is displayed. Event handler Define events such as On Create, On Initialization etc. (I.e. On Initialization could load an internal

Page 2: Business Server Pages

table) with data. Page attributes Define data types used on page (i.e. internal table, work area).

Type definition Data declarations.

Preview Display preview.

Using Model View Controller (MVC) development techniques to develop BSPs :

Creating a BSP using the Model View Controller ( MVC ) techniqueTutorial 1 - Creating the View & the controller (htm page & events)

Step 1 - Create new BSP ApplicationUsing SE80 create BSP Application (I.e. Zbsp_usingmvc).

Step 2 - Create new Controller (main.do)Right click on BSP application name and select create->controller. Enter name main.do or your own name + description. Press the green tick to continue

Page 3: Business Server Pages

Step 3 – Populate controller class (zcl_controller_01)Enter the name of your controller class i.e. zcl_controller_01. We also need to create this classso double click on the name. Yes.

Step 4 – Creating controller classOnce you have double clicked on the controller class name and pressed yes you will need to check the properties tab and ensure its super class is CL_BSP_CONTROLLER2

Page 4: Business Server Pages

Step 5 – Redefine MethodsYou will have inherited a number of methods from the superclass. As these methods work in much the same way as events do within classic BSPs and ABAP you will now need to redefine a number of these methods. These are DO_INIT and DO_REQUEST

Step 6 – Redefine DO_INITEnsure you have this method available for change by pressing the pencil button. Place your cursor on the method called DO_INIT and press the redefine button.

For this current example you don’t have to do anything in this method but for a follow on exerciseyou will be creating the MODEL instance in the DO_INIT method.

Step 7 – Redefine DO_REQUEST (call a layout of type VIEW)Ensure you have this method available for change (done in previous step). Place your cursoron the method called DO_REQUEST and press the redefine button. In the DO_REQUEST we willcall a layout (View). We create a reference variable referencing the page and then call the method create_view and pass it the actual view (not yet created). We then call the view. Enter thefollowing code:

* Create reference variable from the interface if_bsp_page DATA: r_view TYPE REF TO if_bsp_page.

* Create object r_view with view_name main1.htm* Layout is provided by view main1.htm r_view = create_view( view_name = ‘main1.htm’ ).

* Process view-> response is set accordingly call_view( r_view ).

Step 8 – Create BSP Page (View)Right click the BSP Application and create a new page called main1.htm. When this is donemake sure you save and activate it.

Page 5: Business Server Pages

Step 9 – Activate whole BSP Application

Step 10 – ExecuteGo to the controller main.do and double click. Use the test(execute) button to view the results.

Tutorial 1 Tutorial 2 Tutorial 3

Creating a BSP using the Model View Controller ( MVC ) techniqueTutorial 2 - Creating the Model ( Class to to perform functionality i.e. retrieve data ) Step 1 - Using the Model class within DO_INIT (note: Model class not created yet!)From within SE80 double click on main.do to select it, now double click on the controller class.Double click on the DO_INIT method. Now enter the following code into the DO_INIT method & save.

method DO_INIT.*CALL METHOD SUPER->DO_INIT* .* Create refernece variable based on your own class (not created yet)data: r_model TYPE REF TO zcl_model_01.* Create an instance of our Model class and use a widening cast to load your* reference variable r_modelr_model ?= me->create_model( class_name = 'ZCL_MODEL_01' model_id = 'mod_main' ).

* Use the r_model to call the select details method from your Model classr_model->select_details( ).* Load attributes in your class attributes to hold the variable - make it* more 'global' so it can be seen by other methods.me->r_model = r_model.

Page 6: Business Server Pages

endmethod.Step 2 – Create model classUse SE80 or SE18 to create a new class, give it a name and description.

Go to the properties tab and enter change mode, Press the Superclass button and enter thesuperclass cl_bsp_model. Save and activate

Step 3 – Define method of Model classSelect the methods tab and scroll to the bottom of the methods, now enter a new method calledSELECT_DETAILS, as an instance method with public visibility.

Page 7: Business Server Pages

Now double click the method to create it and enter the following code:METHOD select_details . SELECT ebeln UP TO 1 ROWS INTO retvalue FROM ekko. ENDSELECT.ENDMETHOD.Step 4 – Define attributes of methodClick on the Model class attributes tab and enter the field 'RETVALUE' as type ekko-ebeln, Ensuring it is an instance attribute, which has public visibility. Now save and activate the new model class!

Page 8: Business Server Pages

Step 5 – Define atributes of the controller sub classNow return to the controller class you created, accessed via the controller page (i.e. main.do). Remember the ABAP code you inserted to declare 'r_model' within the DO_INIT method? You now need to declare this attribute within the class attributes tab. It needs to be instance, public and 'type ref to' your model class ( ZCL_MODEL_01 ). Save and Activate the controller class ( ZCL_CONTROLLER_01 ).

Step 6 – Display data from the model (update the page/view)In-order to display the data from the model, we are going to use a reference variable p_ord declared in the page attributes .

Now make changes to the layout, so that the returned data is displayed within and input field.

<%@page language="abap"%><%@extension name="htmlb" prefix="htmlb"%>

Page 9: Business Server Pages

<htmlb:content design="design2003"> <htmlb:page title = " "> <htmlb:form> <htmlb:textView text = "Purchase order" design = "EMPHASIZED" /> <htmlb:inputField id = "" invalid = "false" value = "test" required = "true"/><BR> <htmlb:button text = "Press Me" onClick = "myClickHandler" /> </htmlb:form> </htmlb:page></htmlb:content>

Step 7 – Display data from the model (update controller)Within the DO_REQUEST of the controller class ( ZCL_CONTROLLER_01 ) enter the code below to pass themodel reference back to the View. Save and activate everything.

METHOD do_request .*CALL METHOD SUPER->DO_REQUEST* . DATA: r_view TYPE REF TO if_bsp_page. r_view = create_view( view_name = 'main1.htm' ). r_view->set_attribute( name = 'p_ord' value = me->r_model ). call_view( r_view ).ENDMETHOD.

Tutorial 3 - Event handling and calling a new viewStep 1 - Redefine DO_HANDLE_EVENT eventReturn to the controller class you created in tutorial 1, accessed via the controller page (i.e. main.do) and double clicking on the cc name ( ZCL_CONTROLLER_01 ). Go into change mode and find the DO_HANDLE_EVENT method and redefine it.

Page 10: Business Server Pages

Step 2 - Insert code in to DO_HANDLE_EVENTEnter the following ABAP code, which handles a button click event:method DO_HANDLE_EVENT .*CALL METHOD SUPER->DO_HANDLE_EVENT* EXPORTING* EVENT =* HTMLB_EVENT =** HTMLB_EVENT_EX =* GLOBAL_MESSAGES =* RECEIVING* GLOBAL_EVENT =

DATA: button_event TYPE REF TO CL_HTMLB_EVENT_BUTTON. "date event DATA: date_event TYPE REF TO CL_HTMLB_EVENT_DATENAVIGATOR. "button event

* Check if event being processed is a button event IF htmlb_event IS BOUND AND htmlb_event->name = 'button'.* Use widening cast to take generic event to specific event (button event)* - Basically moves current event structure into button event structure,* - so that the button event now contains the relevant data button_event ?= htmlb_event.** Contains value store in the 'onClick' parameter on page view if button_event->server_event = 'myClickHandler'. page = 'page2.htm'. endif. ENDIF.

* Check if event being processed is a date event* - the below code is simply for further demonstration of above syntax IF htmlb_event IS BOUND AND htmlb_event->name = 'dateNavigator'. date_event ?= htmlb_event. ENDIF.endmethod.

Step 3 – Create attributte to store next page valueReturn back to Class interface and define a new class attributte as type string to store next pagevalue!

Page 11: Business Server Pages

Step 4 – Modify DO_REQUEST methodYou now need to modify the DO_REQUEST code so that it calls the event handling and controls whichpage to display based on the new page variable/attribute. The event handling is called using the'dispatch_input( )' command.

METHOD do_request .*CALL METHOD SUPER->DO_REQUEST* . DATA: r_view TYPE REF TO if_bsp_page.

* Calls event handler DO_HANDLE_EVENT dispatch_input( ).

IF page EQ 'main1.htm' or page EQ space. r_view = create_view( view_name = 'main1.htm' ).

r_view->set_attribute( name = 'p_ord' value = me->r_model ). ELSEIF page = 'page2.htm'. r_view = create_view( view_name = 'page2.htm' ).

r_view->set_attribute( name = 'p_ord' value = me->r_model ). ENDIF.

** Create object r_view with view_name main1.htm** Layout is provided by view main1.htm* r_view = create_view( view_name = 'main1.htm' ).* r_view->set_attribute( name = 'p_ord'* value = me->r_model ). call_view( r_view ).ENDMETHOD.

Page 12: Business Server Pages

Step 5 – Create second ViewFirstly save and activate the controller class. The next stage is to create the second view whichis executed from within DO_REQUEST. This will need to be called 'page2.htm' unless you modify thecode you have just placed in the DO_REQUEST method. The simplest way to do this is to copy yourexisting view (main1.htm), You might want to change some text slightly so that you can distanguishbetween the 2 page. i.e. change PO text to 'Purchase order2'.

Step 6 – Save and activateEnsure you save and activate all the objects that have been changed during this tutorial.

Page 13: Business Server Pages

Procedure...

1. Close all browser windows.2. Select a BSP application for testing, such as BSP application TUTORIAL_1.Ensure that this is not a BSP application that has an anonymous display user inTransaction SICF.3. Select a page of this BSP application that you want to execute for the test and call it upin a browser.Example of a page:http://ls0028.wdf.sapag.de:1080/sap/bc/bsp/sap/tutorial_1/default.htm4. Choose Cancel for the authentication query that follows.5. Now manually extend the URL in the browser with the user name and password data.Example of an extended URL:http://ls0028.wdf.sapag.de:1080/sap/bc/bsp/sap/tutorial_1/default.htm?sapclient=000&sap-user=testuser&sap-password=test6. Choose Enter.The browser displays the page you requested.7. Now choose a different BSP application whose page you want to display for the test,and enter the corresponding URL in the browser.Ensure that this too is not a BSP application that has an anonymous display user inTransaction SICF.This time does not enter the user name and password information.Example of a page:http://ls0028.wdf.sapag.de:1080/sap/bc/bsp/sap/tutorial_3/search.htm8. Choose Enter.

ResultTwo cases can occur as a result:• The application is displayed correctly (return code 200).The security settings (SSO2) in your SAP Web AS System are configured correctly.• The application is not displayed, instead you receive return code 401(authentication request).In this case, you should check the settings for security and for the ICM in your system

Page 14: Business Server Pages

Structure of a BSP Application 

A Business Server Page (BSP) application is an independent development project that is created and edited in the SAP development environment (transaction SE80). External design tools, such as Adobe GoLive, Dreamweaver, or Microsoft FrontPage 2000 can be used to design the BSP application, as well as BSP extensions.

The user interface of a BSP applications includes:

Static Web sites Dynamically generated Web sites, which are BSPs or templates that contain server-side

scripting that is executed dynamically at runtime to generate a static Web site BSPs can either be pages with flow logic or views.There can also be controllers if the MVC design pattern is used

Various MIME objects, such as pictures, icons, sound files, style sheets, and so on, that are parts of a typical Web application

Page 15: Business Server Pages

Components Of BSP Application:

A BSP application consists of the following components: Controllers

Controllers contain business logic and application data. Controllers assess the data of an incoming request based on a model and then select a suitable view for rendering the response to the user, see also Model View Controller (MVC).

Business Server Pages (BSPs)BSPs are the Web sites that are displayed in the browser when the application is in use. BSPs can contain static HTML code and dynamic scripting code (ABAP or JavaScript). The scripting code is interpreted on the server. The exact structure of a BSP is described in Building an BSP.A page can have the following versions:

o Page with flow logicThese are simple pages with event handlers, but without much application logic or visualization elements. It is possible to build a BSP application exclusively out of pages with flow logic and event handlers.

o ViewViews are used to visualize data, see also Model View Controller (MVC).

o Page fragmentThese are created in the same way as normal BSPs, but are then marked as page fragments. Other BSPs can also include these fragments using the include directive (see Include Directive).

Navigation structureThe navigation structure determines which navigation request is used to direct the navigation process from which page to which subsequent page.

Application classThe business logic of a BSP application is encapsulated in an application class. The application class is implemented using a global ABAP class. This global class implements access to business data, for example, via BAPI calls. Every page of a BSP

Page 16: Business Server Pages

application can directly reference the components of this class (attributes, methods, and so on) using the predefined Object application. You can also assign several BSP applications to an application class. For more information, see Applications Class of a BSP Application .

MIME objectsIn the SAP system, all MIMEs, such as graphics, style sheets (used to define formatting properties of individual HTML tags), audio files, video files, and so on, are stored and administered in a central repository, the MIME repository. For every new BSP application, a directory of the same name is created in the MIME repository. This directory is used as a storage location for all application-specific MIMEs.

o ThemeA theme is a container for MIME objects. These MIME objects can be used to modify the appearance of one or more BSP applications after the application has been created. You can replace every MIME object in your application with another object from the file system. A theme is created as an independent development object in the Web Application Builder. A theme can be assigned to BSP applications in order to redefine style sheets and MIMEs in the pages of a BSP application after they have been created. The theme concept is a powerful tool for easily changing the layout of your pages in accordance with your needs, without the need for modifying the layout source code.See also: Tailoring Layouts to BSP Applications

For Further Verification Check in http: //help.sap.inwww.sdn.comwww.google.comhttp://www.sapdevelopment.co.uk/webapps/bsp