ABAP Keyword Documentation →  ABAP − Reference →  User Dialogs →  Screens →  Screen and Screen Elements →  Screen Elements - Examples → 

Screens, HTML Browser

This example demonstrates the encapsulation of the browser controls in a class.

Source Code

REPORT demo_html_browser.

CLASS demo DEFINITION.
  PUBLIC SECTION.
    CLASS-METHODS main.
  PRIVATE SECTION.
    TYPES: pict_line(1022) TYPE x,
           pict_tab TYPE STANDARD TABLE OF pict_line .
    CLASS-DATA pict TYPE pict_tab.
    CLASS-METHODS get_pict_tab
     IMPORTING
       mime_url TYPE csequence
     EXPORTING
       pict_tab TYPE STANDARD TABLE .
    CLASS-METHODS handle_sapevent
      FOR EVENT sapevent
      OF cl_abap_browser
      IMPORTING action.
ENDCLASS.

CLASS demo IMPLEMENTATION.
  METHOD main.
    DATA error_list TYPE cl_abap_browser=>html_table.

    data(title) = CONV cl_abap_browser=>title( 'HTML Browser Demo' ).

    SET HANDLER handle_sapevent.

    get_pict_tab(
      EXPORTING
        mime_url = '/SAP/PUBLIC/BC/ABAP/Sources/ABAP_Docu_Logo.gif'
      IMPORTING
        pict_tab = pict ).

    data(ext_data) =
      VALUE cl_abap_browser=>load_tab( ( name = 'PICT.GIF'
                                         type = 'image'
                                         dref = REF #( pict ) ) ).

    data(html_str) =
      '<html>' &&
      '<body>' &&
      '<H1><font SIZE=5 color="#000080">HTML</font></H1>' &&
      '<A HREF="http://help.sap.com/">Weblink</A>' &&
      '<br><br><A HREF=SAPEVENT:"ActionCode">SAPevent</A>' &&
      '<br><br>External Picture:' &&
      '<br><br><img src="PICT.GIF" >' &&
      '</body>' &&
      '</html>'.

    cl_abap_browser=>show_html(
      EXPORTING
        html_string = html_str
        title       = title
        buttons     = cl_abap_browser=>navigate_html
        format      = cl_abap_browser=>landscape
        size        = cl_abap_browser=>medium
        data_table  = ext_data
      IMPORTING
         html_errors = error_list ).

    IF error_list IS NOT INITIAL.
      LOOP AT error_list ASSIGNING field-symbol(<error>).
        <error> = escape( val    = <error>
                          format = cl_abap_format=>e_html_text ).
        <error> = <error> && '<br>'.
      ENDLOOP.
      INSERT '<html><body>' INTO error_list INDEX 1.
      APPEND '</body></html>' TO error_list.
      cl_abap_browser=>show_html(
        EXPORTING
          html       = error_list
          title      = 'HTML Validation Errors'
          check_html = abap_false
          printing   = abap_true ).
    ENDIF.

    REPLACE '<html>'
      IN html_str
      WITH '<html lang="EN">' &&
           '<head>' &&
           '<meta name="Demo" content="Test">' &&
           '<style type="text/css">' &&
           'span.h1 {font-size: 150%; color:#000080; ' &&
                    'font-weight:bold;}' &&
           '</style>' &&
           '</head>'.
    REPLACE '<H1><font SIZE=5 color="#000080">HTML</font></H1>'
      IN html_str
      WITH '<p><span class="h1">HTML</span></p>'.
    REPLACE 'src="PICT.GIF"'
      IN html_str
      WITH 'src="PICT.GIF" alt="An example figure"'.

    cl_abap_browser=>show_html(
      EXPORTING
        html_string = html_str
        title      = title
        buttons    = cl_abap_browser=>navigate_html
        format     = cl_abap_browser=>landscape
        size       = cl_abap_browser=>medium
        data_table = ext_data
        check_html = abap_true
      IMPORTING
         html_errors = error_list ).

    IF error_list IS INITIAL.
      MESSAGE 'No errors in HTML' TYPE 'S'.
    ENDIF.
  ENDMETHOD.
  METHOD handle_sapevent.
    DATA msg TYPE string.
    msg = `Handling: ` && action.
    MESSAGE msg TYPE 'I'.
  ENDMETHOD.
  METHOD get_pict_tab.
    DATA pict_wa   TYPE xstring.
    DATA length   TYPE i.
    DATA mime_api TYPE REF TO if_mr_api.
    mime_api = cl_mime_repository_api=>get_api( ).
    mime_api->get( EXPORTING i_url = mime_url
                   IMPORTING e_content = pict_wa
                   EXCEPTIONS OTHERS = 4 ).
    IF sy-subrc = 4.
      RETURN.
    ENDIF.
    CLEAR pict_tab.
    length = xstrlen( pict_wa ).
    WHILE length >= 1022.
      APPEND pict_wa(1022) TO pict_tab.
      SHIFT pict_wa BY 1022 PLACES LEFT IN BYTE MODE.
      length = xstrlen( pict_wa ).
    ENDWHILE.
    IF length > 0.
      APPEND pict_wa TO pict_tab.
    ENDIF.
  ENDMETHOD.
ENDCLASS.

START-OF-SELECTION.
  demo=>main( ).

Description

The class CL_ABAP_BROWSER encapsulates the use of the class CL_GUI_HTML_VIEWER. The static SHOW_HTML method can be used to display a HTML file in a dialog box. External data, in this case a picture loaded from the MIME Repository, can be passed and displayed. The SAPEVENT events are still passed on and can be handled by the user.