http://sapprograms.blogspot.com/2008/11/how-to-implement-f4-search-help-in-oo.html
http://ddolgey.tistory.com/10
1.TOP
CLASS gcl_event_receiver DEFINITION.
PUBLIC SECTION.
METHODS:
on_f4 FOR EVENT onf4 OF cl_gui_alv_grid
IMPORTING e_fieldname
es_row_no
er_event_data
et_bad_cells
e_display.
ENDCLASS.
2.CLA
CLASS gcl_event_receiver IMPLEMENTATION.
METHOD on_f4.
PERFORM on_f4 USING e_fieldname
es_row_no
er_event_data
et_bad_cells.
ENDMETHOD. "on_f4
ENDCLASS.
3.PBO
SET HANDLER go_event_receiver->on_f4 FOR go_alv.
PERFORM registrar_campos_f4.
4.F01
FORM registrar_campos_f4.
DATA: ltd_f4 TYPE lvc_t_f4 WITH HEADER LINE,
lwa_f4 TYPE lvc_s_f4.
lwa_f4-fieldname = 'TRATA'.
lwa_f4-register = 'X'.
lwa_f4-getbefore = 'X' .
lwa_f4-chngeafter = 'X'.
lwa_f4-internal = ''.
INSERT lwa_f4 INTO TABLE ltd_f4.
CALL METHOD go_alv->register_f4_for_fields
EXPORTING
it_f4 = ltd_f4[].
ENDFORM.
.............................................
FORM on_f4 USING p_e_fieldname TYPE lvc_fname
p_es_row_no TYPE lvc_s_roid
p_er_event_data TYPE REF TO cl_alv_event_data
p_et_bad_cells TYPE lvc_t_modi.
CHECK p_e_fieldname = 'TRATA'.
FIELD-SYMBOLS:
TYPES: BEGIN OF lty_f4,
domvalue_l TYPE dd07v-domvalue_l,
ddtext TYPE dd07v-ddtext,
END OF lty_f4.
DATA: ltd_f4 TYPE TABLE OF lty_f4,
lwa_f4 TYPE lty_f4,
lwa_dominio TYPE dd07v.
DATA: ltd_return TYPE TABLE OF ddshretval,
lwa_return TYPE ddshretval.
FIELD-SYMBOLS:
DATA: ls_f4 TYPE lvc_s_modi.
* Cargar dominio en tabla.
LOOP AT gtd_dom_tratamiento ASSIGNING
MOVE-CORRESPONDING
APPEND lwa_f4 TO ltd_f4.
ENDLOOP.
CALL FUNCTION 'F4IF_INT_TABLE_VALUE_REQUEST'
EXPORTING
retfield = p_e_fieldname
value_org = 'S'
TABLES
value_tab = ltd_f4
return_tab = ltd_return
EXCEPTIONS
parameter_error = 1
no_values_found = 2
OTHERS = 3.
IF sy-subrc <> 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ELSE.
READ TABLE ltd_return INTO lwa_return INDEX 1.
CHECK lwa_return-fieldval <> ''.
ASSIGN p_er_event_data->m_data->* TO
ls_f4-fieldname = p_e_fieldname.
ls_f4-row_id = p_es_row_no-row_id.
ls_f4-value = lwa_return-fieldval .
APPEND ls_f4 TO
DATA lwa_aspirante TYPE gty_aspirante_alv.
READ TABLE gtd_aspirante_alv INTO lwa_aspirante INDEX p_es_row_no-row_id.
READ TABLE gtd_dom_tratamiento INTO lwa_dominio
WITH KEY ddtext = lwa_return-fieldval.
IF sy-subrc = 0.
lwa_aspirante-trata = lwa_dominio-domvalue_l.
ELSE.
lwa_aspirante-trata = ''.
ENDIF.
UPDATE ztaspirante_10 SET trata = lwa_aspirante-trata
WHERE numas = lwa_aspirante-numas.
p_er_event_data->m_event_handled = 'X'.
ENDIF.
No comments:
Post a Comment