HTML 事件

效果

 

 

代码

*&---------------------------------------------------------------------*
*& Report SAPHTML_EVENTS_DEMO                                          *
*&---------------------------------------------------------------------*
REPORT  saphtml_events_demo.

DATA: html_control TYPE REF TO cl_gui_html_viewer,
          my_container TYPE REF TO cl_gui_custom_container,
      prog_repid LIKE sy-repid,                             "#EC NEEDED
      edurl(2048),
      edframe(255),
      edaction(256),
      edgetdata(2048),
      edpostdataline(1024),
      ok_code LIKE sy-ucomm,
      myevent_tab TYPE cntl_simple_events,
      myevent TYPE cntl_simple_event,
      postdata_tab TYPE cnht_post_data_tab,
      edquery_table TYPE cnht_query_table.                  "#EC NEEDED


*****************************************************
*              CLASS cl_myevent_handler             *
*****************************************************
CLASS cl_myevent_handler DEFINITION.

  PUBLIC SECTION.
    METHODS: on_sapevent
               FOR EVENT sapevent OF cl_gui_html_viewer
                 IMPORTING action frame getdata postdata query_table.

ENDCLASS.

SET SCREEN 100.

DATA: evt_receiver TYPE REF TO cl_myevent_handler.

* CLASS CL_GUI_CFW DEFINITION LOAD.

*&---------------------------------------------------------------------*
*&      Module  STATUS_0100  OUTPUT
*&---------------------------------------------------------------------*
MODULE status_0100 OUTPUT.
  SET PF-STATUS 'TESTHTM1'.
  SET TITLEBAR '001'.

  IF html_control IS INITIAL.
    prog_repid = sy-repid.

    CREATE OBJECT my_container
        EXPORTING
            container_name = 'HTML_CONTROL'.

    CREATE OBJECT html_control
         EXPORTING
              parent    = my_container.
    IF sy-subrc NE 0.
*
    ENDIF.

* register event
    myevent-eventid = html_control->m_id_sapevent.
    myevent-appl_event = 'x'.
    APPEND myevent TO myevent_tab.
    CALL METHOD html_control->set_registered_events
        EXPORTING
           events = myevent_tab.

    CREATE OBJECT evt_receiver.

    SET HANDLER evt_receiver->on_sapevent
                FOR html_control.

    PERFORM load_graphics.
    PERFORM load_home_page.
  ENDIF.
ENDMODULE.                             " STATUS_0100  OUTPUT

*&---------------------------------------------------------------------*
*&      Module  USER_COMMAND_0100  INPUT
*&---------------------------------------------------------------------*
MODULE user_command_0100 INPUT.
  CASE ok_code.
    WHEN 'BACK'.                       "Beenden
      IF NOT html_control IS INITIAL.
        CALL METHOD html_control->free.
        FREE html_control.
      ENDIF.
      LEAVE TO SCREEN 0.

    WHEN 'HHOM'.                       " show the home page
      PERFORM load_home_page.

    WHEN 'HBAK'.
      CALL METHOD html_control->go_back.

    WHEN 'HFWD'.
      CALL METHOD html_control->go_forward.

    WHEN 'HRFR'.
      CALL METHOD html_control->do_refresh.

    WHEN OTHERS.
      CALL METHOD cl_gui_cfw=>dispatch.
  ENDCASE.
  CLEAR ok_code.
ENDMODULE.                             " USER_COMMAND_0100  INPUT


*&---------------------------------------------------------------------*
*&      Form  LOAD_HOME_PAGE
*&---------------------------------------------------------------------*
FORM load_home_page.
  DATA: doc_url(80).

  CALL METHOD html_control->load_html_document
       EXPORTING
            document_id  = 'SAPHTML_EVENTS_DEMO_HOME'
       IMPORTING
            assigned_url = doc_url
       EXCEPTIONS
            OTHERS       = 1.

  IF sy-subrc EQ 0.
    CALL METHOD html_control->show_url
         EXPORTING
              url = doc_url.
  ENDIF.
ENDFORM.                               " LOAD_HOME_PAGE


*&---------------------------------------------------------------------*
*&      Form  LOAD_FRAME_SET
*&---------------------------------------------------------------------*
FORM load_frame_set.
  DATA: doc_url(80).

  CALL METHOD html_control->load_html_document
       EXPORTING
            document_id  = 'SAPHTML_EVENTS_DEMO_FRAME1'
            document_url = 'HTMLFrame1.htm'
       EXCEPTIONS
            OTHERS       = 1.

  CALL METHOD html_control->load_html_document
       EXPORTING
            document_id  = 'SAPHTML_EVENTS_DEMO_HOME'
            document_url = 'HTMLFrame2.htm'
       EXCEPTIONS
            OTHERS       = 1.

  CALL METHOD html_control->load_html_document
       EXPORTING
            document_id  = 'SAPHTML_EVENTS_DEMO_FRAMESET'
       IMPORTING
            assigned_url = doc_url
       EXCEPTIONS
            OTHERS       = 1.

  IF sy-subrc EQ 0.
    CALL METHOD html_control->show_url
         EXPORTING
              url = doc_url.
  ENDIF.
ENDFORM.                               " LOAD_FRAME_SET


*&---------------------------------------------------------------------*
*&      Form  LOAD_GRAPHICS
*&---------------------------------------------------------------------*
FORM load_graphics.
  CALL METHOD html_control->load_mime_object
     EXPORTING
          object_id  = 'HTMLCNTL_TESTHTM2_SAPLOGO'
          object_url = 'SAPLOGO.GIF'
     EXCEPTIONS
          OTHERS     = 1.
  CALL METHOD html_control->load_mime_object
       EXPORTING
            object_id  = 'HTMLCNTL_TESTHTM2_SAP_AG'
            object_url = 'SAP_AG.GIF'
       EXCEPTIONS
            OTHERS     = 1.
  CALL METHOD html_control->load_mime_object
       EXPORTING
            object_id  = 'HTMLCNTL_TESTHTM2_BACKGROUND'
            object_url = 'HOME_BACKGROUND.GIF'
       EXCEPTIONS
            OTHERS     = 1.
ENDFORM.                               " LOAD_GRAPHICS

****************************************************
*    cl_myevent_handler implementation             *
****************************************************
CLASS cl_myevent_handler IMPLEMENTATION.

  METHOD on_sapevent.

    CLEAR edaction.
    CLEAR edframe.
    CLEAR edgetdata.
    CLEAR edpostdataline.

    edaction       = action.
    edframe        = frame.
    edgetdata      = getdata.
    postdata_tab   = postdata.
    IF NOT postdata_tab IS INITIAL.
      READ TABLE postdata_tab INDEX 1 INTO edpostdataline.
    ENDIF.
    edquery_table  = query_table.

    CASE action.
      WHEN 'SHOW_FRAMESET'.
        PERFORM load_frame_set.
      WHEN OTHERS.
    ENDCASE.
  ENDMETHOD.

ENDCLASS.

屏幕

 

 

PBO

 

 

*&---------------------------------------------------------------------*
*& Report  RSDEMO_HTML_VIEWER                                          *
*&                                                                     *
*&---------------------------------------------------------------------*
*&                                                                     *
*&                                                                     *
*&---------------------------------------------------------------------*

REPORT  rsdemo_html_viewer            .
DATA container TYPE REF TO cl_gui_custom_container.
DATA html_viewer TYPE REF TO cl_gui_html_viewer.

DATA ok_code TYPE sy-ucomm.
DATA init.
DATA  save_ok TYPE sy-ucomm.
DATA  url(255) VALUE 'HTTP://WWW.SAP-AG.DE'.
DATA frame(255).
DATA  align TYPE i.
DATA  document_id(255) VALUE 'HTMLCNTL_TESTEVNT_HOME'.
DATA  document_textpool TYPE sy-repid.
DATA document_url(255).
DATA assigned_url(255).
DATA merge_table TYPE swww_t_merge_table.
DATA  object_id(255) VALUE 'HTMLCNTL_TESTHTM2_SAPLOGO'.
DATA object_url(255) VALUE 'SAPLOGO.GIF'.
DATA  type(4) VALUE 'text'.
DATA subtype(4) VALUE 'html'.
DATA size TYPE i.
DATA data_table TYPE c OCCURS 0.

SET SCREEN 100.
*&---------------------------------------------------------------------*
*&      Module  STATUS_0100  OUTPUT
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
MODULE status_0100 OUTPUT.
  SET PF-STATUS 'STATUS'.
  IF init is initial.
    CREATE OBJECT container
            EXPORTING container_name = 'CUSTOM'.
    CREATE OBJECT html_viewer
            EXPORTING  parent              = container
            EXCEPTIONS cntl_error         = 1
                       cntl_install_error = 2
                       dp_install_error   = 3
                       dp_error           = 4.
    IF sy-subrc ne 0.
* Fehlerbehandlung
    ENDIF.
    CALL METHOD cl_gui_cfw=>flush
         EXCEPTIONS cntl_system_error = 1
                    cntl_error        = 2.
    IF sy-subrc ne 0.
* Fehlerbehandlung
    ENDIF.
    init = 'X'.
  ENDIF.
ENDMODULE.                             " STATUS_0100  OUTPUT
*&---------------------------------------------------------------------*
*&      Module  USER_COMMAND_0100  INPUT
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
MODULE user_command_0100 INPUT.
  save_ok = ok_code.
  CLEAR ok_code.
  CASE save_ok.
    WHEN 'SHOW_URL'.
      CALL METHOD html_viewer->show_url
                EXPORTING url   = url
                          frame = frame
                EXCEPTIONS cntl_error = 1.
    WHEN 'STOP'.
      CALL METHOD html_viewer->stop
                EXCEPTIONS cntl_error = 1.
    WHEN 'GO_BACK'.
      CALL METHOD html_viewer->go_back
                EXCEPTIONS cntl_error = 1.
    WHEN 'GO_FORWARD'.
      CALL METHOD html_viewer->go_forward
                EXCEPTIONS cntl_error = 1.
    WHEN 'GO_HOME'.
      CALL METHOD html_viewer->go_home
                EXCEPTIONS cntl_error = 1.
    WHEN 'DO_REFRESH'.
      CALL METHOD html_viewer->do_refresh
                EXCEPTIONS cntl_error = 1.
    WHEN 'GET_CURRENT_URL'.
      CALL METHOD html_viewer->get_current_url
                IMPORTING url = url
                EXCEPTIONS cntl_error = 1.
      call method cl_gui_cfw=>flush
                exceptions cntl_error = 1
                           cntl_system_error = 2.
    WHEN 'LOAD_DATABASE'.
      CALL METHOD html_viewer->load_html_document
           EXPORTING document_id       = 'HTMLCNTL_TESTHTM2_FRAME1'
*                    document_textpool = document_textpool
                     document_url      = 'HTMLFrame1.htm'
*          IMPORTING assigned_url      = assigned_url
*          CHANGING  merge_table       = merge_table
           EXCEPTIONS document_not_found   = 1
                      dp_error_general     = 2
                      dp_invalid_parameter = 3.
      CALL METHOD html_viewer->load_html_document
           EXPORTING document_id       = 'HTMLCNTL_TESTEVNT_HOME'
*                    document_textpool = document_textpool
                     document_url      = 'HTMLFrame2.htm'
*          IMPORTING assigned_url      = assigned_url
*          CHANGING  merge_table       = merge_table
           EXCEPTIONS document_not_found   = 1
                      dp_error_general     = 2
                      dp_invalid_parameter = 3.
      CALL METHOD html_viewer->load_html_document
           EXPORTING document_id       = 'HTMLCNTL_TESTHTM2_FRAMESET'
*                    document_textpool = document_textpool
*                    document_url      = document_url
           IMPORTING assigned_url      = assigned_url
*          CHANGING  merge_table       = merge_table
           EXCEPTIONS document_not_found   = 1
                      dp_error_general     = 2
                      dp_invalid_parameter = 3.
      CALL METHOD html_viewer->load_mime_object
         EXPORTING
              object_id  = 'HTMLCNTL_TESTHTM2_SAPLOGO'
              object_url = 'SAPLOGO.GIF'
*           IMPORTING assigned_url = assigned_url
                EXCEPTIONS object_not_found     = 1
                           dp_error_general     = 2
                           dp_invalid_parameter = 3.
      CALL METHOD html_viewer->load_mime_object
           EXPORTING
                object_id  = 'HTMLCNTL_TESTHTM2_SAP_AG'
                object_url = 'SAP_AG.GIF'
*           IMPORTING assigned_url = assigned_url
                EXCEPTIONS object_not_found     = 1
                           dp_error_general     = 2
                           dp_invalid_parameter = 3.
      CALL METHOD html_viewer->load_mime_object
           EXPORTING
                object_id  = 'HTMLCNTL_TESTHTM2_BACKGROUND'
                object_url = 'HOME_BACKGROUND.GIF'
*           IMPORTING assigned_url = assigned_url
                EXCEPTIONS object_not_found     = 1
                           dp_error_general     = 2
                           dp_invalid_parameter = 3.

      CALL METHOD html_viewer->show_data
           EXPORTING url   = assigned_url
*                    frame = frame
           EXCEPTIONS cntl_error = 1.

  ENDCASE.
ENDMODULE.                             " USER_COMMAND_0100  INPUT
*&---------------------------------------------------------------------*
*&      Module  EXIT  INPUT
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
MODULE exit INPUT.
  CALL METHOD html_viewer->free.
  CALL METHOD container->free.
  FREE html_viewer.
  FREE container.
  LEAVE PROGRAM.
ENDMODULE.                             " EXIT  INPUT

 

posted on 2021-04-02 09:32  姬如千泷  阅读(332)  评论(0编辑  收藏  举报