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 palce 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 url. 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 icon butn_type text quickinfo CHANGING data_table
= = = = =
'HOME' '' cntb_btype_button 'Home' 'Home'
= 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