ABAP Control Framework(2): HTML Viewer

2.HTML Viewer

          通过cl_gui_html_viewer类显示url链接或者显示HTML页面。

       1.创建cl_gui_html_viewer类对象,调用show_url显示url对应网页;

       2.调用load_html_document方法加载Tcode:SMW0的html;

上传html文檔:

<HTML>
<HEAD>  
<TITLE>SAP HTML Page</TITLE>
</HEAD>
<BODY>
<H1>
<IMG SRC=SAPLOGO.GIF ALIGN=MIDDLE> SAP HTML Header
</H1>
<P>
<H2>SAP HTML Post Form</H2>
<FORM method=post action=SAPEVENT:POST>
          <INPUT TYPE=text NAME=FirstName VALUE=John>
          <INPUT TYPE=submit VALUE="Submit input using POST method">
</FORM>
</P>
<P>
<H2>SAP HTML Get Form</H2>
<FORM method=get action="SAPEVENT:GET">
<INPUT TYPE=text NAME=FirstName VALUE=king>
<INPUT TYPE=submit VALUE="Submit input using GET method">
</FORM>
</P>
</BODY>
</HTML>

Tcode:SMW0,上传html文件

示例:

"html viewer事件
CLASS c1_event DEFINITION.
  PUBLIC SECTION.
    CLASS-METHODS:m_sapevent FOR EVENT sapevent OF cl_gui_html_viewer
      IMPORTING action frame getdata postdata query_table.
ENDCLASS.
CLASS c1_event IMPLEMENTATION.
  METHOD m_sapevent.
    DATA:lv_str TYPE string.
    DATA:lt_postdata TYPE cnht_post_data_tab.
    DATA:ls_postdata LIKE LINE OF lt_postdata.
    DATA:lt_edquery TYPE cnht_query_table.
    DATA:ls_edquery LIKE LINE OF lt_edquery.
    lv_str = 'action:' && action
      && ';frame' && frame
      && ';getdata' && getdata.
    lt_postdata = postdata.
    lt_edquery = query_table.
    IF lt_postdata IS NOT INITIAL.
      READ TABLE lt_postdata INTO ls_postdata INDEX 1.
    ENDIF.
    lv_str = lv_str && ';' && ls_postdata.
    LOOP AT lt_edquery INTO ls_edquery.
      lv_str = lv_str && ';name='
        && ls_edquery-name
        && '-'
        && ls_edquery-value.
    ENDLOOP.
    MESSAGE lv_str TYPE 'I'.
  ENDMETHOD.
ENDCLASS.

"cl_gui_html_viewer
"html显示
CLASS c1 DEFINITION.
  PUBLIC SECTION.
    DATA:lo_html_viewer TYPE REF TO cl_gui_html_viewer.
    METHODS:m_html_init.
    METHODS:m_html_viewer IMPORTING iv_url TYPE string.
    METHODS:m_html_load.
ENDCLASS.
CLASS c1 IMPLEMENTATION.
  METHOD m_html_init.
    DATA:lt_events TYPE cntl_simple_events.
    DATA:ls_events LIKE LINE OF lt_events.

    CREATE OBJECT lo_html_viewer
      EXPORTING
        parent = cl_gui_container=>default_screen.
    "设置event
    ls_events-eventid = lo_html_viewer->m_id_sapevent.
    ls_events-appl_event = 'X'.
    APPEND ls_events TO lt_events.
    lo_html_viewer->set_registered_events( events = lt_events ).
    SET HANDLER c1_event=>m_sapevent FOR lo_html_viewer.
  ENDMETHOD.
  METHOD m_html_viewer.
    DATA:lv_url TYPE C LENGTH 200.
    lv_url = iv_url.
    CREATE OBJECT lo_html_viewer
      EXPORTING
        parent = cl_gui_container=>default_screen.
    "使用GUI显示html
    lo_html_viewer->show_url( url = lv_url ).
    "使用默认浏览器打开url
    "lo_html_viewer->detach_url_in_browser( url = lv_url ).
    "lo_html_viewer->show_url_in_browser( url = lv_url ).
  ENDMETHOD.
  "加载html,Tcode:smw0,文檔
  METHOD m_html_load.
    DATA:lv_url TYPE C LENGTH 200.
    "加载图片
    lo_html_viewer->load_mime_object(
      EXPORTING
        object_id = 'HTMLCNTL_TESTHTM2_SAPLOGO'
        object_url = 'SAPLOGO.GIF'
    ).
    "加载html
    lo_html_viewer->load_html_document(
      EXPORTING
        document_id = 'ZTOM_HTML'
      IMPORTING
        assigned_url = lv_url
     ).
    lo_html_viewer->show_url( url = lv_url ).
  ENDMETHOD.
ENDCLASS.

START-OF-SELECTION.
  PERFORM f_show_html.

FORM f_show_html.
   DATA:lv_url TYPE string VALUE 'https://www.runoob.com/'.
   DATA:lo_c1 TYPE REF TO c1.
   "生成一个默认屏幕
   WRITE:/ '1'.
   CREATE OBJECT lo_c1.
   lo_c1->m_html_init( ).
   "lo_c1->m_html_viewer( iv_url = lv_url ).
   lo_c1->m_html_load( ).
ENDFORM.

 

原文地址:https://www.cnblogs.com/tangToms/p/14736933.html