函数SAPGUI_SET_FUNCTIONCODE可以模拟屏幕上输入的命令。下面一个例子是在value-request事件中调用回车命令,如果通过F4选择多个记录,按钮自动变为绿色。
*&———————————————————————*
*& Report ZFLIGHTBOOKING
*&
*&———————————————————————*
*&
*&
*&———————————————————————*
REPORT zflightbooking_new.
INCLUDE rhxmacro.
TABLES: objec, pchdy.
DATA: lt_marked_objects TYPE TABLE OF hrsobid,
wa_marked_objects TYPE hrsobid,
lt_sel_objects TYPE TABLE OF objec,
wa_sel_objects TYPE objec.
SELECT-OPTIONS:
p_objid FOR pchdy-objid_seq NO INTERVALS. “ObjektId”YMOK139293
AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_objid-low. “YMOK303367
PERFORM f4_objid_o. “YMOK303367
AT SELECTION-SCREEN OUTPUT.
INITIALIZATION.
START-OF-SELECTION.
END-OF-SELECTION.
*&———————————————————————*
*& Form F4_OBJID_O
*&———————————————————————*
* text
*———————————————————————-*
* <–P_P_OBJID text
*———————————————————————-*
FORM f4_objid_o.
CLEAR: lt_marked_objects, wa_marked_objects.
CLEAR: lt_sel_objects, wa_sel_objects.
LOOP AT p_objid.
wa_marked_objects-plvar = ‘01′.
wa_marked_objects-otype = ‘O’.
wa_marked_objects-sobid = p_objid-low.
INSERT wa_marked_objects inTO lt_marked_objects index 1.
ENDLOOP.
CALL FUNCTION ‘RH_OBJID_REQUEST’
EXPORTING
plvar = ‘01′
otype = ‘O’
seark = ‘*’
set_mode = ‘X’
dynpro_repid = sy-repid
dynpro_dynnr = sy-dynnr
* SEARK_BEGDA = $LOW_DATE
* SEARK_ENDDA = $HIGH_DATE
TABLES
marked_objects = lt_marked_objects
sel_objects = lt_sel_objects
EXCEPTIONS
cancelled = 1
wrong_condition = 2
nothing_found = 3
internal_error = 4
illegal_mode = 5
OTHERS = 6
.
CLEAR: p_objid, p_objid[].
LOOP AT lt_sel_objects INTO wa_sel_objects.
p_objid-sign = ‘I’.
p_objid-option = ‘EQ’.
p_objid-low = wa_sel_objects-objid.
insert p_objid index 1.
ENDLOOP.
CALL FUNCTION ‘SAPGUI_SET_FUNCTIONCODE’
EXPORTING
functioncode = ‘=’
EXCEPTIONS
function_not_supported = 1
OTHERS = 2.
ENDFORM. ” F4_OBJID_O