on 05-04-2009 3:53 PM
Hi gurus,
I've developed an application that works in the browser, separately of the R/3 system.
Now I want embedd it into a control (no problem), and capture some events that user can do. For this reason, I open the wd application with a cl_gui_wdr_viewer, and I've defined an event handler:
CREATE OBJECT wdr_html_viewer
EXPORTING
parent = wdp_html_container.
CREATE OBJECT wdr_inplace_handler.
SET HANDLER wdr_inplace_handler->on_wd_event
FOR wdr_html_viewer.
CLASS cl_wdr_inplace_handler DEFINITION.
PUBLIC SECTION.
METHODS: on_wd_event
FOR EVENT wd_event OF cl_gui_wdr_viewer
IMPORTING action parameters. "#EC NEEDED
ENDCLASS. "cl_wdr_inplace_handler DEFINITION
CLASS cl_wdr_inplace_handler IMPLEMENTATION.
METHOD on_wd_event.
CASE action.
WHEN 'WDR_CLOSE'.
PERFORM leave_wdr_html_viewer.
LEAVE TO SCREEN 0.
WHEN 'WDR_START_TRANSACTION'.
(...)
ENDMETHOD. "on_wd_event
ENDCLASS. "cl_wdr_inplace
But I don't understand what means this ACTION of the case... an action in the main view? But WDR_START_TRANSACTION' is too long...
Thanks inadvance...
Alejandra Fernández
Maybe I'm a bit late with this, but still worth answering.
I was facing the same issue today, but I managed to figure it out.
In the webdynpro, you have to fire an event, but it's not a typical webdynpro event.
You have to fire it from the SAPGUI manager. (which is a WDA api)
wd_comp_controller->wd_get_api( )->get_sapgui_manager( )->fire(
name = 'blah'
parameters = lt_param
).
In the SAP screen, you embed the webdynpro using the CL_GUI_WDR_VIEWER class and you register an event handler for the WD_EVENT.
go_wdr->LOAD_APPLICATION(
PROTOCOL = 'http'
APPLICATION = 'ZTVDO_MATLIST'
).
SET HANDLER lcl_eventhandler=>on_event FOR go_wdr.
in the handler you can then evaluate the event name and parameters
Now I'm pretty sure that I can also get the eventing from gui to WDA working as well. Back to the code!
edit: bingo!
on you WD view, you need to define an action and implement your handler logic there.
in the on_init of the component controller, you have to permit SAPGUI event handling.
wd_this->wd_get_api( )->get_sapgui_manager( )->SUBSCRIBE_EVENTS( abap_true ).
in your SAPGUI application, you can then fire an event to WDA:
go_wdr->fire_event( WDR_ACTION = 'SET_DATA'
parameters = lt_param ).
edit2: however, I should note that, apparently, SAP no longer supports the CL_GUI_WDR_VIEWER.
so, yay for a funky solution, but booh for it not being allowed
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
Hi
Check the SAP demo program DEMO_GUI_WDR_VIEWER1 to know how to integrate WD ABAP application in an SAP Container and capture events.
Regards,
Trikanth Basetty
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
Thanks for your answer,
but this program is not in my system. Could be it come with EnhPackage1, it's not still installed on my system.
I will become crazy, I think it must not be so difficult!! I need only understand how the wd component fire the wd_event of the class CL_GUI_WDR_VIEWER.
thanks again,
Alejandra Fernández
User | Count |
---|---|
86 | |
10 | |
10 | |
9 | |
6 | |
6 | |
6 | |
5 | |
4 | |
3 |
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.