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