* http://www.tricktresor.de/blog/fly-out-menu/
TYPES: ty_it_events TYPE STANDARD TABLE OF cntl_simple_event WITH DEFAULT KEY.
CONSTANTS c_dock_open TYPE i VALUE 400.
CONSTANTS c_dock_close TYPE i VALUE 150.
CONSTANTS c_cmd_open TYPE string VALUE 'OPEN'.
CONSTANTS c_cmd_close TYPE string VALUE 'CLOSE'.
CONSTANTS c_cmd_click TYPE string VALUE 'CLICK'.
DATA: o_docker TYPE REF TO cl_gui_docking_container.
PARAMETERS: p_field TYPE char10 DEFAULT '####'.
CLASS lcl_events DEFINITION.
PUBLIC SECTION.
CLASS-METHODS:
on_sapevent FOR EVENT sapevent OF cl_gui_html_viewer
IMPORTING
action
frame
getdata
postdata
query_table.
ENDCLASS.
CLASS lcl_events IMPLEMENTATION.
METHOD on_sapevent.
IF o_docker IS BOUND.
CASE action.
* Container ausklappen
WHEN c_cmd_open.
o_docker->set_extension( EXPORTING
extension = c_dock_open ).
* Container einklappen
WHEN c_cmd_close.
o_docker->set_extension( EXPORTING
extension = c_dock_close ).
ENDCASE.
ENDIF.
* Action im Parameterfeld ausgeben
p_field = action.
ENDMETHOD.
ENDCLASS.
INITIALIZATION.
* Docking-Container für HTML-Viewer-Element
o_docker = NEW #( extension = c_dock_close
side = cl_gui_docking_container=>dock_at_right
no_autodef_progid_dynnr = abap_true ).
* HTML-Viewer
DATA(o_html) = NEW cl_gui_html_viewer( parent = o_docker ).
* SAP-Events registrieren
DATA(it_events) = VALUE ty_it_events( ( eventid = cl_gui_html_viewer=>m_id_sapevent
appl_event = abap_true ) ).
o_html->set_registered_events( events = it_events ).
SET HANDLER lcl_events=>on_sapevent FOR o_html.
* HTML-Code
DATA(it_html) = VALUE html_table( ( |<html>| )
( | <meta http-equiv="content-type" content="text/html" charset="ISO-8859-1">| )
( | <head>| )
( | <title>Test</title>| )
( | <script type="text/javascript">| )
( | function open_close(element)| )
( | \{| )
( | location.href = "SAPEVENT:" + element;| )
( | \}| )
( | function mouse_click(element)| )
( | \{| )
( | location.href = "SAPEVENT:" + element;| )
( | \}| )
( | </script>| )
( | </head>| )
( | <body style="overflow:auto">| )
( | <table border="0" width="300px">| )
( | <tr>| )
( | <td><button onmouseover="open_close('{ c_cmd_open }')">« Show</button></td>| )
( | </tr>| )
( | <tr>| )
( | <td>--------------------» <a href="#" onclick="mouse_click('{ c_cmd_click }')">Klick</a></td>| )
( | </tr>| )
( | <tr>| )
( | <td><button onmouseover="open_close('{ c_cmd_close }')">» Hide</button></td>| )
( | </tr>| )
( | </table>| )
( | </body>| )
( |</html>| ) ).
* HTML anzeigen
DATA: lv_url TYPE swk_url.
o_html->load_data( IMPORTING
assigned_url = lv_url
CHANGING
data_table = it_html ).
o_html->show_url( url = lv_url ).