Monday, April 14, 2008

HTML Viewer Control

Note that the SAP HTML viewer uses internet Explorer 4.0 or higher.

This example uses the SAP HTML viewer to browse the internet. The navigation buttons are placed on a SAP Toolbar control. The Goto URL button and field are normal dynpro elements, and so is the Show URL field.

Steps:

  • Create a screen and place a container named go_html_container for the HTML viewer.
  • Create a dynpro button with ethe text GGoto url and functioncode GOTOURL.
  • Create a dynpro input/output field named G_SCREEN100_URL_TEXT. This field is used to key in the URLl.
  • Create a dynpro input/output field named G_SCREEN100_DISPLAY_URL. This field is used to show the current URL

The screen:

The code

SAPMZ_HF_HTML_CONTROL

   REPORT sapmz_hf_html_control .
   TYPE-POOLS: icon.
   CLASS cls_event_handler DEFINITION DEFERRED.
   *--------------------------------------
   * G L O B A L  V A R I A B L E S
   *--------------------------------------
   DATA:
     ok_code                 LIKE sy-ucomm,
   * Container for html vieaer
     go_html_container       TYPE REF TO cl_gui_custom_container,
   * HTML viewer
     go_htmlviewer           TYPE REF TO cl_gui_html_viewer,
   * Container for toolbar
     go_toolbar_container    TYPE REF TO cl_gui_custom_container,
   * SAP Toolbar
     go_toolbar              TYPE REF TO cl_gui_toolbar,
   * Event handler for toolbar
     go_event_handler        TYPE REF TO cls_event_handler,
   * Variable for URL text field on screen 100
     g_screen100_url_text(255) TYPE c,
     g_screen100_display_url(255) TYPE c.  
   *--------------------------------------
   * I N T E R N A L   T A B L E S
   *--------------------------------------
   DATA:
   * Table for button group
     gi_button_group            TYPE ttb_button,
   * Table for registration of events. Note that a TYPE REF
   * to cls_event_handler must be created before you can
   * reference types cntl_simple_events and cntl_simple_event.
     gi_events                  TYPE cntl_simple_events,
   * Workspace for table gi_events
     g_event                    TYPE cntl_simple_event.

   START-OF-SELECTION.
     SET SCREEN '100'.
   *-------------------------------------------
   *       CLASS cls_event_handler DEFINITION
   *-------------------------------------------
   * Handles events for the toolbar an the HTML viewer
   *------------------------------------------
   CLASS cls_event_handler DEFINITION.
     PUBLIC SECTION.
       METHODS:
   * Handles method function_selected  for the toolbar control
         on_function_selected
           FOR EVENT function_selected OF cl_gui_toolbar
             IMPORTING fcode,
   * Handles method navigate_complete for the HTML viewer control
         on_navigate_complete
           FOR EVENT navigate_complete OF cl_gui_html_viewer
             IMPORTING url.
   ENDCLASS.
   CLASS cls_event_handler IMPLEMENTATION.
   * Handles method function_selected  for the toolbar control
     METHOD on_function_selected.
       CASE fcode.
         WHEN 'BACK'.
           CALL METHOD go_htmlviewer->go_back
             EXCEPTIONS cntl_error = 1.
         WHEN 'FORWARD'.
           CALL METHOD go_htmlviewer->go_forward
             EXCEPTIONS cntl_error = 1.
         WHEN 'STOP'.
           CALL METHOD go_htmlviewer->stop
             EXCEPTIONS cntl_error = 1.
         WHEN 'REFRESH'.
           CALL METHOD go_htmlviewer->do_refresh
             EXCEPTIONS cntl_error = 1.
         WHEN 'HOME'.
           CALL METHOD go_htmlviewer->go_home
             EXCEPTIONS cntl_error = 1.
         WHEN 'EXIT'.
           LEAVE TO SCREEN 0.
       ENDCASE.
     ENDMETHOD.
   * Handles method navigate_complete for the HTML viewer control
     METHOD on_navigate_complete.
   *   Display current URL in a textfield on the screen
       g_screen100_display_url = url.
     ENDMETHOD.
   ENDCLASS. 
   *&-----------------------------------------------
   *&      Module  STATUS_0100  OUTPUT
   *&-----------------------------------------------
   MODULE status_0100 OUTPUT.
     IF go_html_container IS INITIAL.
   * Create container for HTML viewer
       CREATE OBJECT go_html_container
         EXPORTING
           container_name = 'HTML_CONTAINER'.
   * Create HTML viewer
       CREATE OBJECT go_htmlviewer
         EXPORTING parent = go_html_container.
   * Create container for toolbar
       CREATE OBJECT go_toolbar_container
         EXPORTING
              container_name = 'TOOLBAR_CONTAINER'.
   * Create toolbar
       CREATE OBJECT go_toolbar
         EXPORTING
           parent = go_toolbar_container.
   * Add buttons to the toolbar
       PERFORM add_button_group.
   * Create event table. The event ID must be found in the
   * documentation of the specific control
       CLEAR g_event.
       REFRESH gi_events.
       g_event-eventid    = go_toolbar->m_id_function_selected.
       g_event-appl_event = 'X'.    "This is an application event
       APPEND g_event TO gi_events.
       g_event-eventid    = go_htmlviewer->m_id_navigate_complete.
       APPEND g_event TO gi_events.
   * Use the events table to register events for the control
       CALL METHOD go_toolbar->set_registered_events
           EXPORTING
              events = gi_events.
       CALL METHOD go_htmlviewer->set_registered_events
           EXPORTING
              events = gi_events.
   * Create event handlers
       CREATE OBJECT go_event_handler.
       SET HANDLER go_event_handler->on_function_selected
         FOR go_toolbar.
       SET HANDLER go_event_handler->on_navigate_complete
         FOR go_htmlviewer.
     ENDIF.
   ENDMODULE.                 " STATUS_0100  OUTPUT
   *&----------------------------------------
   *&      Module  USER_COMMAND_0100  INPUT
   *&----------------------------------------
   MODULE user_command_0100 INPUT.
   * Handles the pushbutton for goto url
     CASE ok_code.
       WHEN 'GOTOURL'.
         PERFORM goto_url.
     ENDCASE.
   ENDMODULE.                 " USER_COMMAND_0100  INPUT
   *&-------------------------------------
   *&      Form  add_button_group
   *&-------------------------------------
   *  Adds a button group to the toolbar   
   *--------------------------------------
   FORM add_button_group.
   * BACK botton
     CALL METHOD cl_gui_toolbar=>fill_buttons_data_table
       EXPORTING
         fcode              = 'BACK'
         icon               = icon_arrow_left
         butn_type          = cntb_btype_button
         text               = ''
         quickinfo          = 'Go back'
       CHANGING
         data_table         = gi_button_group.
   * FORWARD botton
     CALL METHOD cl_gui_toolbar=>fill_buttons_data_table
       EXPORTING
         fcode              = 'FORWARD'
         icon               = icon_arrow_right
         butn_type          = cntb_btype_button
         text               = ''
         quickinfo          = 'Go forward'
       CHANGING
         data_table         = gi_button_group.
   * STOP button
     CALL METHOD cl_gui_toolbar=>fill_buttons_data_table
       EXPORTING
         fcode              = 'STOP'
         icon               = icon_breakpoint
         butn_type          = cntb_btype_button
         text               = ''
         quickinfo          = 'Stop'
       CHANGING
         data_table         = gi_button_group.
   * REFRESH button
     CALL METHOD cl_gui_toolbar=>fill_buttons_data_table
       EXPORTING
         fcode              = 'REFRESH'
         icon               = icon_refresh
         butn_type          = cntb_btype_button
         text               = ''
         quickinfo          = 'Refresh'
       CHANGING
         data_table         = gi_button_group.
   * Home button
     CALL METHOD cl_gui_toolbar=>fill_buttons_data_table
       EXPORTING
         fcode              = 'HOME'
         icon               = ''
         butn_type          = cntb_btype_button
         text               = 'Home'
         quickinfo          = 'Home'
       CHANGING
         data_table         = gi_button_group.
   * Separator
     CALL METHOD cl_gui_toolbar=>fill_buttons_data_table
       EXPORTING
         fcode              = 'SEP1'
         icon               = ' '
         butn_type          = cntb_btype_sep
       CHANGING
         data_table         = gi_button_group.
   * EXIT button
     CALL METHOD cl_gui_toolbar=>fill_buttons_data_table
       EXPORTING
         fcode              = 'EXIT'
         icon               =  icon_close
         butn_type          =  cntb_btype_button
         text               = ''
         quickinfo          = 'Close porgram'
       CHANGING
         data_table         = gi_button_group.
   * Add button group to toolbar
     CALL METHOD go_toolbar->add_button_group
       EXPORTING data_table = gi_button_group.
   ENDFORM.                    " add_button_group
   *&------------------------------------------------
   *&      Form  goto_url
   *&------------------------------------------------
   *  Calls method SHOW_URL to navigate to an URL
   *--------------------------------------------------
   FORM goto_url.
     CALL METHOD go_htmlviewer->show_url
          EXPORTING url = g_screen100_url_text.
   ENDFORM.                    " goto_url

No comments:

Blog Archive