2007 Sep 02 1:28 PM
Hi.
I need send a auto press key event (by example: press F8), by code.
When I put a instruction in the report, the report simulate the key pressed.
Exist some FM to do it? Is it posible?
Thanks!
2007 Sep 02 3:43 PM
Hi Marcos,
no FM, but a method makes it possible.
You an use
CALL METHOD cl_gui_cfw=>set_new_ok_code
EXPORTING
new_code = 'xxxx'.
Regards,
Clemens
2007 Sep 02 3:43 PM
Hi Marcos,
no FM, but a method makes it possible.
You an use
CALL METHOD cl_gui_cfw=>set_new_ok_code
EXPORTING
new_code = 'xxxx'.
Regards,
Clemens
2007 Sep 03 12:22 AM
You can also check out the "SET USER-COMMAND" statement to do this.
Jonathan
2007 Sep 03 3:41 AM
Oh yes, there's also function module SAPGUI_SET_FUNCTIONCODE - a "where used" on this will turn up some sample code.
Jonathan
2007 Sep 03 6:55 AM
Thanks by the reply, but it doesn't work
I need refresh an ALV Grid automatic, and I think send the 'AKTU' refresh code to the Sap system.
I have got the code that call a rutine in some times, but this code not works.
2007 Sep 03 6:58 AM
Hi,
Please give your query in detail. From your query it is not clear about requirement
if possible paste the code
a®
2007 Sep 03 10:37 AM
Hi Marcos,
you can use the method I recommended in an additional timer object method .
Please adapt the below sample program I used to display the current time with auto update:
*&---------------------------------------------------------------------*
*& Report ZZCLOCK
*&
*&---------------------------------------------------------------------*
*& may be used to keep connection
*&
*&---------------------------------------------------------------------*
REPORT zzclock.
*---------------------------------------------------------------------*
* CLASS lcl_gui_timer DEFINITION
*---------------------------------------------------------------------*
* ........ *
*---------------------------------------------------------------------*
class lcl_gui_timer definition inheriting from cl_gui_control.
PUBLIC SECTION.
CONSTANTS: eventid_finished TYPE i VALUE 1 .
CLASS-DATA: interval TYPE i VALUE '0'.
EVENTS: finished .
METHODS:
cancel
EXCEPTIONS
error,
constructor
IMPORTING
lifetime TYPE i OPTIONAL
value(shellstyle) TYPE i OPTIONAL
value(parent) TYPE REF TO cl_gui_container OPTIONAL
EXCEPTIONS
error,
run
EXCEPTIONS
error,
dispatch REDEFINITION.
ENDCLASS. "lcl_gui_timer DEFINITION
*---------------------------------------------------------------------*
* CLASS lcl_event_handler DEFINITION
*---------------------------------------------------------------------*
* ........ *
*---------------------------------------------------------------------*
CLASS lcl_event_handler DEFINITION.
PUBLIC SECTION.
CLASS-METHODS:
on_finished
FOR EVENT finished OF lcl_gui_timer.
ENDCLASS. "lcl_event_handler DEFINITION
DATA: gui_timer TYPE REF TO lcl_gui_timer.
DATA: event_handler TYPE REF TO lcl_event_handler.
DATA: timeout_interval TYPE i VALUE '9'.
PARAMETERS:
p_datum TYPE sy-datum,
p_uzeit TYPE sy-uzeit.
AT SELECTION-SCREEN OUTPUT.
* set to time rounded to 10 seconds
p_datum = sy-datum.
p_uzeit = sy-uzeit.
CREATE OBJECT gui_timer.
SET HANDLER event_handler->on_finished FOR gui_timer.
gui_timer->interval = timeout_interval.
CALL METHOD gui_timer->run.
*---------------------------------------------------------------------*
* CLASS lcl_event_handler IMPLEMENTATION
*---------------------------------------------------------------------*
* ........ *
*---------------------------------------------------------------------*
CLASS lcl_event_handler IMPLEMENTATION.
METHOD on_finished.
* Start Timer again
gui_timer->interval = timeout_interval.
CALL METHOD gui_timer->run.
* cause PAI
CALL METHOD cl_gui_cfw=>set_new_ok_code
EXPORTING
new_code = 'REFR'.
ENDMETHOD. "on_finished
ENDCLASS. "lcl_event_handler IMPLEMENTATION
*---------------------------------------------------------------------*
* CLASS lcl_gui_timer IMPLEMENTATION
*---------------------------------------------------------------------*
* ........ *
*---------------------------------------------------------------------*
CLASS lcl_gui_timer IMPLEMENTATION.
METHOD constructor.
TYPE-POOLS: sfes.
DATA clsid(80).
DATA event_tab TYPE cntl_simple_events.
DATA event_tab_line TYPE cntl_simple_event.
IF clsid IS INITIAL.
DATA: return,
guitype TYPE i.
guitype = 0.
CALL FUNCTION 'GUI_HAS_OBJECTS'
EXPORTING
object_model = sfes_obj_activex
IMPORTING
return = return
EXCEPTIONS
OTHERS = 1.
IF sy-subrc NE 0.
RAISE error.
ENDIF.
IF return = 'X'.
guitype = 1.
ENDIF.
IF guitype = 0.
CALL FUNCTION 'GUI_HAS_OBJECTS'
EXPORTING
object_model = sfes_obj_javabeans
IMPORTING
return = return
EXCEPTIONS
OTHERS = 1.
IF sy-subrc NE 0.
RAISE error.
ENDIF.
IF return = 'X'.
guitype = 2.
ENDIF.
ENDIF.
CASE guitype.
WHEN 1.
clsid = 'Sapgui.InfoCtrl.1'.
WHEN 2.
clsid = 'com.sap.components.controls.sapImage.SapImage'.
ENDCASE.
ENDIF.
CALL METHOD super->constructor
EXPORTING
clsid = clsid
shellstyle = 0
parent = cl_gui_container=>default_screen
autoalign = space
EXCEPTIONS
OTHERS = 1.
IF sy-subrc NE 0.
RAISE error.
ENDIF.
CALL METHOD cl_gui_cfw=>subscribe
EXPORTING
shellid = h_control-shellid
ref = me
EXCEPTIONS
OTHERS = 1.
IF sy-subrc NE 0.
RAISE error.
ENDIF.
* Register the events
event_tab_line-eventid = lcl_gui_timer=>eventid_finished.
APPEND event_tab_line TO event_tab.
CALL METHOD set_registered_events
EXPORTING
events = event_tab.
ENDMETHOD. "constructor
METHOD cancel.
CALL METHOD call_method
EXPORTING
method = 'SetTimer'
p_count = 1
p1 = -1
queue_only = 'X'
EXCEPTIONS
OTHERS = 1.
IF sy-subrc NE 0.
RAISE error.
ENDIF.
ENDMETHOD. "cancel
METHOD run.
CALL METHOD call_method
EXPORTING
method = 'SetTimer'
p_count = 1
p1 = interval
queue_only = 'X'
EXCEPTIONS
OTHERS = 1.
IF sy-subrc NE 0.
RAISE error.
ENDIF.
ENDMETHOD. "run
METHOD dispatch .
CASE eventid.
WHEN eventid_finished.
RAISE EVENT finished.
ENDCASE.
ENDMETHOD. "dispatch
ENDCLASS. "lcl_gui_timer IMPLEMENTATION
Hope that's what you are looking for. I got the idea from a project where they used it to auto refresh an ALV grid...
You may also search this forum for keywords timer or autorefresh. It has been discussed here earlier.
Regards,
Clemens
2007 Sep 03 8:15 AM
Sorry, I can't put the code. It's more for the reason of this thread.
And... for send a key as F8 ¿Is it posible?
Thanks