2008 Feb 25 7:08 AM
Hi all,
I want to display a push button in my ALV programming(in container).
Points would be rewarded
thanks,
swaroop.
Hi all,
I want to display a push button in my ALV programming(in container).
Points would be rewarded
thanks,
swaroop.
2008 Feb 25 7:24 AM
Hi Jyothi,
go throught the standard program BCALV_GRID_05
or you execute the following code you you will get solution
*here is a sample prog for interactive events of
*
*before_user_command, after_user_command,
*double_click,hotspot_click, button_click, onf1
*onf4, menu_button, toolbar, context_menu_request, ondrag,
*ondrop, ondropcomplete,ondropgetflavor, subtotal_text,
*data_changed,data_changed_finished, after_refresh,
*delayed_callback,delayed_changed_sel_callback, top_of_page,
*end_of_list,print_top_of_page, print_end_of_page,
*print_top_of_list,
*code
&----
-
*& Report BCALV_TEST_GRID_EVENTS *
*& *
&----
-
*& *
*& *
&----
-
REPORT bcalv_test_grid_events.
TYPES: g_ty_t_carrid TYPE STANDARD TABLE OF scarr,
g_ty_t_connid TYPE STANDARD TABLE OF spfli,
g_ty_t_curr TYPE STANDARD TABLE OF scurx,
g_ty_s_sflight TYPE sflight,
g_ty_s_carrid TYPE scarr,
g_ty_s_connid TYPE spfli,
g_ty_s_curr TYPE scurx.
CONSTANTS: con_sflight TYPE lvc_fname VALUE 'SFLIGHT',
con_scarr TYPE lvc_fname VALUE 'SCARR',
con_spfli TYPE lvc_fname VALUE 'SPFLI',
con_scurx TYPE lvc_fname VALUE 'SCURX'.
*----
-
*DATA *
*----
-
CLASS lcl_events_d0100 DEFINITION DEFERRED.
TYPES:
BEGIN OF g_ty_s_plane,
carrid TYPE g_ty_s_sflight-carrid,
connid TYPE g_ty_s_sflight-connid,
planetype TYPE g_ty_s_sflight-planetype,
seatsmax TYPE g_ty_s_sflight-seatsmax,
END OF g_ty_s_plane,
g_ty_t_plane TYPE SORTED TABLE OF g_ty_s_plane
WITH UNIQUE KEY carrid connid,
BEGIN OF g_ty_s_event,
user_command TYPE char1,
before_user_command TYPE char1,
after_user_command TYPE char1,
double_click TYPE char1,
hotspot_click TYPE char1,
button_click TYPE char1,
onf1 TYPE char1,
onf4 TYPE char1,
menu_button TYPE char1,
toolbar TYPE char1,
context_menu_request TYPE char1,
ondrag TYPE char1,
ondrop TYPE char1,
ondropcomplete TYPE char1,
ondropgetflavor TYPE char1,
subtotal_text TYPE char1,
data_changed TYPE char1,
data_changed_finished TYPE char1,
after_refresh TYPE char1,
delayed_callback TYPE char1,
delayed_changed_sel_callback TYPE char1,
top_of_page TYPE char1,
end_of_list TYPE char1,
print_top_of_page TYPE char1,
print_end_of_page TYPE char1,
print_top_of_list TYPE char1,
print_end_of_list TYPE char1,
END OF g_ty_s_event,
BEGIN OF g_ty_s_onf4,
register TYPE char1,
get_before TYPE char1,
change_after TYPE char1,
internal_format TYPE char1,
END OF g_ty_s_onf4,
BEGIN OF g_ty_s_test,
select_amount TYPE i,
no_info_popup TYPE char1,
info_popup_once TYPE char1,
events_info_popup TYPE lvc_fname OCCURS 0,
application_events TYPE char1,
event TYPE g_ty_s_event,
onf4 TYPE g_ty_s_onf4,
button_fields TYPE lvc_fname OCCURS 0,
hotspot_fields TYPE lvc_fname OCCURS 0,
onf1_fields TYPE lvc_fname OCCURS 0,
onf4_fields TYPE lvc_fname OCCURS 0,
bypassing_buffer TYPE char1,
buffer_active TYPE char1,
END OF g_ty_s_test,
BEGIN OF g_ty_s_outtab.
INCLUDE TYPE g_ty_s_sflight.
TYPES: box TYPE char1,
lights TYPE char1,
END OF g_ty_s_outtab,
g_ty_t_outtab TYPE TABLE OF g_ty_s_outtab.
CONSTANTS: con_exit TYPE sy-ucomm VALUE 'EXIT',
con_canc TYPE sy-ucomm VALUE 'CANC',
con_back TYPE sy-ucomm VALUE 'BACK',
con_true TYPE char1 VALUE 'X'.
DATA: g_okcode TYPE sy-ucomm.
DATA: gs_test TYPE g_ty_s_test.
DATA: gt_outtab TYPE g_ty_t_outtab WITH HEADER LINE,
gr_container_d0100 TYPE REF TO cl_gui_custom_container,
gr_grid_d0100 TYPE REF TO cl_gui_alv_grid,
gr_events_d0100 TYPE REF TO lcl_events_d0100,
gr_grid_dragdrop TYPE REF TO cl_dragdrop.
DATA: g_static_menu TYPE REF TO cl_ctmenu,
g_static_menu_default TYPE REF TO cl_ctmenu.
DATA: g_field TYPE lvc_s_fcat-fieldname.
*----
-
*CLASS lcl_dragdrop_obj_d0100 DEFINITION
*----
-
*
*----
-
CLASS lcl_dragdrop_obj_d0100 DEFINITION.
PUBLIC SECTION.
DATA: line TYPE g_ty_s_outtab,
index TYPE i.
ENDCLASS. "lcl_dragdrop_obj_d0100 DEFINITION
*----
-
*CLASS lcl_events_d0100 DEFINITION
*----
-
*
*----
-
CLASS lcl_events_d0100 DEFINITION.
PUBLIC SECTION.
METHODS:
user_command FOR EVENT user_command
OF cl_gui_alv_grid
IMPORTING e_ucomm sender,
before_user_command FOR EVENT before_user_command
OF cl_gui_alv_grid
IMPORTING e_ucomm,
after_user_command FOR EVENT after_user_command
OF cl_gui_alv_grid
IMPORTING e_ucomm
e_not_processed
e_saved,
double_click FOR EVENT double_click
OF cl_gui_alv_grid
IMPORTING e_row
e_column
es_row_no,
hotspot_click FOR EVENT hotspot_click
OF cl_gui_alv_grid
IMPORTING e_row_id
e_column_id
es_row_no,
menu_button FOR EVENT menu_button
OF cl_gui_alv_grid
IMPORTING e_object
e_ucomm,
toolbar FOR EVENT toolbar
OF cl_gui_alv_grid
IMPORTING e_object
e_interactive,
context_menu_request FOR EVENT context_menu_request
OF cl_gui_alv_grid
IMPORTING e_object,
top_of_page FOR EVENT top_of_page
OF cl_gui_alv_grid
IMPORTING e_dyndoc_id,
end_of_list FOR EVENT end_of_list
OF cl_gui_alv_grid
IMPORTING e_dyndoc_id,
print_top_of_page FOR EVENT print_top_of_page
OF cl_gui_alv_grid,
print_end_of_page FOR EVENT print_end_of_page
OF cl_gui_alv_grid,
print_top_of_list FOR EVENT print_top_of_list
OF cl_gui_alv_grid,
print_end_of_list FOR EVENT print_end_of_list
OF cl_gui_alv_grid,
after_refresh FOR EVENT after_refresh
OF cl_gui_alv_grid,
delayed_callback FOR EVENT delayed_callback
OF cl_gui_alv_grid,
delayed_changed_sel_callback
FOR EVENT delayed_changed_sel_callback
OF cl_gui_alv_grid,
subtotal_text FOR EVENT subtotal_text
OF cl_gui_alv_grid
IMPORTING es_subtottxt_info
ep_subtot_line
e_event_data,
ondrag FOR EVENT ondrag
OF cl_gui_alv_grid
IMPORTING e_row
e_column
es_row_no
e_dragdropobj,
ondrop FOR EVENT ondrop
OF cl_gui_alv_grid
IMPORTING e_row
e_column
es_row_no
e_dragdropobj,
ondropcomplete FOR EVENT ondropcomplete
OF cl_gui_alv_grid
IMPORTING e_row
e_column
es_row_no
e_dragdropobj,
ondropgetflavor FOR EVENT ondropgetflavor
OF cl_gui_alv_grid
IMPORTING e_row
e_column
es_row_no
e_dragdropobj
e_flavors,
data_changed FOR EVENT data_changed
OF cl_gui_alv_grid
IMPORTING er_data_changed
e_onf4
e_onf4_before
e_onf4_after,
data_changed_finished
FOR EVENT data_changed_finished
OF cl_gui_alv_grid,
button_click FOR EVENT button_click
OF cl_gui_alv_grid
IMPORTING es_col_id
es_row_no,
onf1 FOR EVENT onf1
OF cl_gui_alv_grid
IMPORTING e_fieldname
es_row_no
er_event_data,
onf4 FOR EVENT onf4
OF cl_gui_alv_grid
IMPORTING e_fieldname
e_fieldvalue
es_row_no
er_event_data
et_bad_cells
e_display.
ENDCLASS. "lcl_events_d0100 DEFINITION
*----
-
*CLASS lcl_events_d0100 IMPLEMENTATION
*----
-
*
*----
-
CLASS lcl_events_d0100 IMPLEMENTATION.
*----
-
*METHOD user_command *
*----
-
*----
-
METHOD user_command.
PERFORM d0100_event_ucomm USING e_ucomm.
ENDMETHOD. "user_command
*----
-
*METHOD before_user_command *
*----
-
*----
-
METHOD before_user_command.
PERFORM d0100_event_before_ucomm USING e_ucomm.
ENDMETHOD. "before_user_command
*----
-
*METHOD after_user_command *
*----
-
*----
-
METHOD after_user_command.
PERFORM d0100_event_after_ucomm USING e_ucomm
e_not_processed
e_saved.
ENDMETHOD. "after_user_command
*----
-
*METHOD double_click *
*----
-
*----
-
METHOD double_click.
PERFORM d0100_event_double_click USING e_row
e_column.
ENDMETHOD. "double_click
*----
-
*METHOD hotspot_click *
*----
-
*----
-
METHOD hotspot_click.
PERFORM d0100_event_hotspot_click USING e_row_id
e_column_id.
ENDMETHOD. "hotspot_click
*----
-
*METHOD menu_button *
*----
-
*........ *
*----
-
METHOD menu_button.
PERFORM d0100_event_menu_button USING e_object
e_ucomm.
ENDMETHOD. "menu_button
*----
-
*METHOD toolbar *
*----
-
*----
-
METHOD toolbar.
PERFORM d0100_event_toolbar USING e_object
e_interactive.
ENDMETHOD. "toolbar
*----
-
*METHOD context_menu_request *
*----
-
*----
-
METHOD context_menu_request.
PERFORM d0100_event_context_menu_reqst USING e_object.
ENDMETHOD. "context_menu_request
*----
-
*top_of_page *
*----
-
*----
-
METHOD top_of_page.
PERFORM d0100_event_top_of_page USING e_dyndoc_id.
ENDMETHOD. "top_of_page
*----
-
*METHOD end_of_list *
*----
-
*----
-
METHOD end_of_list.
PERFORM d0100_event_end_of_list USING e_dyndoc_id.
ENDMETHOD. "end_of_list
*----
-
*METHOD print_top_of_page *
*----
-
*----
-
METHOD print_top_of_page.
PERFORM d0100_event_print_top_of_page.
ENDMETHOD. "print_top_of_page
*----
-
*METHOD print_end_of_page *
*----
-
*........ *
*----
-
METHOD print_end_of_page.
PERFORM d0100_event_print_end_of_page.
ENDMETHOD. "print_end_of_page
*----
-
*METHOD print_top_of_list *
*----
-
*........ *
*----
-
METHOD print_top_of_list.
PERFORM d0100_event_print_top_of_list.
ENDMETHOD. "print_top_of_list
*----
-
*METHOD print_end_of_list *
*----
-
*........ *
*----
-
METHOD print_end_of_list.
PERFORM d0100_event_print_end_of_list.
ENDMETHOD. "print_end_of_list
*----
-
*METHOD after_refresh *
*----
-
*........ *
*----
-
METHOD after_refresh.
PERFORM d0100_event_after_refresh.
ENDMETHOD. "after_refresh
*----
-
*METHOD delayed_callback *
*----
-
*........ *
*----
-
METHOD delayed_callback.
PERFORM d0100_event_delayed_callback.
ENDMETHOD. "delayed_callback
*----
-
*METHOD delayed_changed_sel_callback *
*----
-
*........ *
*----
-
METHOD delayed_changed_sel_callback.
PERFORM d0100_event_changed_sel_callba.
ENDMETHOD. "delayed_changed_sel_callback
*----
-
*METHOD subtotal_text *
*----
-
*........ *
*----
-
METHOD subtotal_text.
PERFORM d0100_event_subtotal_text USING es_subtottxt_info
ep_subtot_line
e_event_data.
ENDMETHOD. "subtotal_text
*----
-
*METHOD ondrag *
*----
-
*........ *
*----
-
METHOD ondrag.
PERFORM d0100_event_ondrag USING e_row
e_column
e_dragdropobj.
ENDMETHOD. "ondrag
*----
-
*METHOD ondrop *
*----
-
*........ *
*----
-
METHOD ondrop.
PERFORM d0100_event_ondrop USING e_row
e_column
e_dragdropobj.
ENDMETHOD. "ondrop
*----
-
*METHOD ondropcomplete *
*----
-
*........ *
*----
-
METHOD ondropcomplete.
PERFORM d0100_event_ondropcomplete USING e_row
e_column
e_dragdropobj.
ENDMETHOD. "ondropcomplete
*----
-
*METHOD ondropgetflavor *
*----
-
*........ *
*----
-
METHOD ondropgetflavor.
PERFORM d0100_event_ondropgetflavor.
ENDMETHOD. "ondropgetflavor
*----
-
*METHOD data_changed *
*----
-
*........ *
*----
-
METHOD data_changed.
PERFORM d0100_event_data_changed USING er_data_changed
e_onf4
e_onf4_before
e_onf4_after.
ENDMETHOD. "data_changed
*----
-
*METHOD data_changed_finished *
*----
-
*........ *
*----
-
METHOD data_changed_finished.
PERFORM d0100_event_data_changed_finis.
ENDMETHOD. "data_changed_finished
*----
-
*METHOD button_click *
*----
-
*........ *
*----
-
METHOD button_click.
PERFORM d0100_event_button_click USING es_col_id
es_row_no.
ENDMETHOD. "button_click
*----
-
*METHOD onf1 *
*----
-
*........ *
*----
-
METHOD onf1.
PERFORM d0100_event_onf1 USING e_fieldname
es_row_no
er_event_data.
ENDMETHOD. "onf1
*----
-
*METHOD onf4 *
*----
-
*........ *
*----
-
METHOD onf4.
PERFORM d0100_event_onf4 USING e_fieldname
e_fieldvalue
es_row_no
er_event_data
et_bad_cells
e_display.
ENDMETHOD. "onf4
ENDCLASS. "lcl_events_d0100 IMPLEMENTATION
*----
-
*SELECTION-SCREEN *
*----
-
SELECTION-SCREEN BEGIN OF BLOCK gen WITH FRAME.
PARAMETERS:
p_amount TYPE i DEFAULT 30.
SELECTION-SCREEN END OF BLOCK gen.
SELECTION-SCREEN BEGIN OF BLOCK inf WITH FRAME.
PARAMETERS:
p_inf01 AS CHECKBOX DEFAULT con_true,
p_inf02 AS CHECKBOX.
SELECTION-SCREEN END OF BLOCK inf.
SELECTION-SCREEN BEGIN OF BLOCK app WITH FRAME.
PARAMETERS:
p_appevt AS CHECKBOX.
SELECTION-SCREEN END OF BLOCK app.
SELECTION-SCREEN BEGIN OF BLOCK evt WITH FRAME.
PARAMETERS:
p_evt01 AS CHECKBOX, "USER_COMMAND
p_evt02 AS CHECKBOX, "BEFORE_USER_COMMAND
p_evt03 AS CHECKBOX. "AFTER_USER_COMMAND
SELECTION-SCREEN SKIP.
PARAMETERS:
p_evt04 AS CHECKBOX, "DOUBLE_CLICK
p_evt05 AS CHECKBOX. "HOTSPOT_CLICK
SELECT-OPTIONS:
p_hotspt FOR g_field NO INTERVALS DEFAULT 'CARRID'.
PARAMETERS:
p_evt06 AS CHECKBOX. "BUTTON_CLICK
SELECT-OPTIONS:
p_button FOR g_field NO INTERVALS DEFAULT 'CARRID'.
SELECTION-SCREEN SKIP.
PARAMETERS:
p_evt07 AS CHECKBOX. "ONF1
SELECTION-SCREEN BEGIN OF BLOCK of4 WITH FRAME.
PARAMETERS:
p_evt08 AS CHECKBOX. "ONF4
SELECT-OPTIONS:
p_onf4 FOR g_field NO INTERVALS DEFAULT 'CARRID'.
SELECTION-SCREEN BEGIN OF LINE.
SELECTION-SCREEN COMMENT 5(30) text-c01 FOR FIELD p_f401.
PARAMETERS:
p_f401 AS CHECKBOX DEFAULT con_true. "REGISTER
SELECTION-SCREEN END OF LINE.
SELECTION-SCREEN BEGIN OF LINE.
SELECTION-SCREEN COMMENT 5(30) text-c02 FOR FIELD p_f402.
PARAMETERS:
p_f402 AS CHECKBOX. "GET_BEFORE
SELECTION-SCREEN END OF LINE.
SELECTION-SCREEN BEGIN OF LINE.
SELECTION-SCREEN COMMENT 5(30) text-c03 FOR FIELD p_f403.
PARAMETERS:
p_f403 AS CHECKBOX. "CHANGE_AFTER
SELECTION-SCREEN END OF LINE.
SELECTION-SCREEN BEGIN OF LINE.
SELECTION-SCREEN COMMENT 5(30) text-c04 FOR FIELD p_f404.
PARAMETERS:
p_f404 AS CHECKBOX. "INTERNAL_FORMAT
SELECTION-SCREEN END OF LINE.
SELECTION-SCREEN END OF BLOCK of4.
SELECTION-SCREEN SKIP.
PARAMETERS:
p_evt09 AS CHECKBOX, "MENU_BUTTON
p_evt10 AS CHECKBOX, "TOOLBAR
p_evt11 AS CHECKBOX. "CONTEXT_MENU_REQUEST
SELECTION-SCREEN SKIP.
PARAMETERS:
p_evt12 AS CHECKBOX, "ONDRAG
p_evt13 AS CHECKBOX, "ONDROP
p_evt14 AS CHECKBOX, "ONDROPCOMPLETE
p_evt15 AS CHECKBOX. "ONDROPGETFLAVOR
SELECTION-SCREEN SKIP.
PARAMETERS:
p_evt16 AS CHECKBOX. "SUBTOTAL_TEXT
SELECTION-SCREEN SKIP.
PARAMETERS:
p_evt17 AS CHECKBOX, "DATA_CHANGED
p_evt18 AS CHECKBOX, "DATA_CHANGED_FINISHED
p_evt19 AS CHECKBOX. "AFTER_REFRESH
SELECTION-SCREEN SKIP.
PARAMETERS:
p_evt20 AS CHECKBOX, "DELAYED_CALLBACK
p_evt21 AS CHECKBOX. "DELAYED_CHANGED_SEL_CALLBACK
SELECTION-SCREEN SKIP.
PARAMETERS:
p_evt22 AS CHECKBOX, "TOP_OF_PAGE
p_evt23 AS CHECKBOX, "END_OF_LIST
p_evt24 AS CHECKBOX, "PRINT_TOP_OF_PAGE
p_evt25 AS CHECKBOX, "PRINT_END_OF_PAGE
p_evt26 AS CHECKBOX, "PRINT_TOP_OF_LIST
p_evt27 AS CHECKBOX. "PRINT_END_OF_LIST
SELECTION-SCREEN END OF BLOCK evt.
*----
-
*AT SELECTION-SCREEN ON VALUE-REQUEST *
*----
-
AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_hotspt-low.
PERFORM d0100_f4_fcode CHANGING p_hotspt-low.
AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_button-low.
PERFORM d0100_f4_fcode CHANGING p_button-low.
AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_onf4-low.
PERFORM d0100_f4_fcode CHANGING p_onf4-low.
*----
-
*START-OF-SELECTION *
*----
-
START-OF-SELECTION.
gs_test-select_amount = p_amount.
gs_test-no_info_popup = p_inf01.
gs_test-info_popup_once = p_inf02.
gs_test-application_events = p_appevt.
gs_test-event-user_command = p_evt01.
gs_test-event-before_user_command = p_evt02.
gs_test-event-after_user_command = p_evt03.
gs_test-event-double_click = p_evt04.
gs_test-event-hotspot_click = p_evt05.
gs_test-event-button_click = p_evt06.
gs_test-event-onf1 = p_evt07.
gs_test-event-onf4 = p_evt08.
gs_test-event-menu_button = p_evt09.
gs_test-event-toolbar = p_evt10.
gs_test-event-context_menu_request = p_evt11.
gs_test-event-ondrag = p_evt12.
gs_test-event-ondrop = p_evt13.
gs_test-event-ondropcomplete = p_evt14.
gs_test-event-ondropgetflavor = p_evt15.
gs_test-event-subtotal_text = p_evt16.
gs_test-event-data_changed = p_evt17.
gs_test-event-data_changed_finished = p_evt18.
gs_test-event-after_refresh = p_evt19.
gs_test-event-delayed_callback = p_evt20.
gs_test-event-delayed_changed_sel_callback = p_evt21.
gs_test-event-top_of_page = p_evt22.
gs_test-event-end_of_list = p_evt23.
gs_test-event-print_top_of_page = p_evt24.
gs_test-event-print_end_of_page = p_evt25.
gs_test-event-print_top_of_list = p_evt26.
gs_test-event-print_end_of_list = p_evt27.
gs_test-onf4-register = p_f401.
gs_test-onf4-get_before = p_f402.
gs_test-onf4-change_after = p_f403.
gs_test-onf4-internal_format = p_f404.
IF p_evt05 NE space.
LOOP AT p_hotspt.
IF NOT p_hotspt-low IS INITIAL.
APPEND p_hotspt-low TO gs_test-hotspot_fields.
ENDIF.
ENDLOOP.
ENDIF.
IF p_evt06 NE space.
LOOP AT p_button.
IF NOT p_button-low IS INITIAL.
APPEND p_button-low TO gs_test-button_fields.
ENDIF.
ENDLOOP.
ENDIF.
IF p_evt08 NE space.
LOOP AT p_onf4.
IF NOT p_onf4-low IS INITIAL.
APPEND p_onf4-low TO gs_test-onf4_fields.
ENDIF.
ENDLOOP.
ENDIF.
gs_test-bypassing_buffer = space.
gs_test-buffer_active = space.
*----
-
*END-OF-SELECTION *
*----
-
END-OF-SELECTION.
CALL SCREEN 100.
&----
-
*& Module d0100_set_status OUTPUT
&----
-
*text
*----
-
MODULE d0100_set_status OUTPUT.
PERFORM d0100_set_status.
ENDMODULE. " d0100_set_status OUTPUT
&----
-
*& Module d0100_prepare_container OUTPUT
&----
-
*text
*----
-
MODULE d0100_prepare_container OUTPUT.
PERFORM d0100_prepare_container.
ENDMODULE. " d0100_prepare_container OUTPUT
&----
-
*& Module d0100_exit INPUT
&----
-
*text
*----
-
MODULE d0100_exit INPUT.
PERFORM d0100_exit.
ENDMODULE. " d0100_exit INPUT
&----
-
*& Module d0100_fcode INPUT
&----
-
*text
*----
-
MODULE d0100_fcode INPUT.
PERFORM d0100_fcode.
ENDMODULE. " d0100_fcode INPUT
&----
-
*& Form d0100_set_status
&----
-
*text
*----
-
FORM d0100_set_status .
TYPES: BEGIN OF l_ty_s_excl,
func TYPE syucomm,
END OF l_ty_s_excl,
l_ty_t_excl TYPE STANDARD TABLE OF l_ty_s_excl.
DATA: lt_excl TYPE l_ty_t_excl.
SET PF-STATUS 'D0100' EXCLUDING lt_excl.
SET TITLEBAR 'D0100'.
ENDFORM. " d0100_set_status
&----
-
*& Form d0100_prepare_container
&----
-
*text
*----
-
FORM d0100_prepare_container .
DATA: lt_fcat TYPE lvc_t_fcat,
ls_layo TYPE lvc_s_layo,
ls_vari TYPE disvariant,
ls_prnt TYPE lvc_s_prnt,
l_consistency_check TYPE char1.
IF gr_container_d0100 IS INITIAL.
IF cl_gui_alv_grid=>offline( ) IS INITIAL.
CREATE OBJECT gr_container_d0100
EXPORTING container_name = 'ALV_CONTAINER'.
ENDIF.
CREATE OBJECT gr_grid_d0100
EXPORTING i_parent = gr_container_d0100
i_appl_events = gs_test-application_events.
PERFORM d0100_get_outtab.
PERFORM d0100_set_grid_vari CHANGING ls_vari.
PERFORM d0100_set_grid_layo CHANGING ls_layo.
PERFORM d0100_set_grid_fcat CHANGING lt_fcat.
PERFORM d0100_set_grid_onf4 CHANGING lt_fcat.
PERFORM d0100_set_grid_buttons CHANGING lt_fcat.
PERFORM d0100_set_grid_hotspot CHANGING lt_fcat.
PERFORM d0100_set_grid_dragdrop CHANGING ls_layo.
PERFORM d0100_set_grid_edit CHANGING ls_layo.
PERFORM d0100_set_grid_events.
ls_prnt-grpchgedit = con_true.
CALL METHOD gr_grid_d0100->set_table_for_first_display
EXPORTING
i_buffer_active = gs_test-buffer_active
i_bypassing_buffer = gs_test-bypassing_buffer
i_consistency_check = l_consistency_check
is_variant = ls_vari
i_save = 'A'
i_default = con_true
is_layout = ls_layo
is_print = ls_prnt
CHANGING
it_outtab = gt_outtab[]
it_fieldcatalog = lt_fcat.
ENDIF.
ENDFORM. " d0100_prepare_container
&----
-
*& Form d0100_exit
&----
-
*text
*----
-
FORM d0100_exit .
DATA: l_okcode LIKE sy-ucomm.
l_okcode = g_okcode.
CLEAR g_okcode.
CASE l_okcode.
CASE sy-ucomm.
WHEN con_exit OR con_back OR con_canc.
CALL METHOD gr_grid_d0100->free.
CALL METHOD gr_container_d0100->free.
CALL METHOD cl_gui_cfw=>flush.
CLEAR gr_container_d0100.
CLEAR gr_grid_d0100.
CLEAR gr_events_d0100.
SET SCREEN 0.
LEAVE SCREEN.
ENDCASE.
ENDFORM. " d0100_exit
&----
-
*& Form d0100_fcode
&----
-
*text
*----
-
FORM d0100_fcode .
DATA: l_okcode LIKE sy-ucomm.
l_okcode = g_okcode.
CLEAR g_okcode.
CALL METHOD cl_gui_cfw=>dispatch.
CASE l_okcode.
WHEN con_exit OR con_back OR con_canc.
g_okcode = l_okcode.
PERFORM d0100_exit.
WHEN OTHERS.
ENDCASE.
ENDFORM. " d0100_fcode
&----
-
*& Form d0100_set_grid_vari
&----
-
*text
*----
-
FORM d0100_set_grid_vari CHANGING cs_vari TYPE disvariant.
cs_vari-report = sy-repid.
cs_vari-handle = space.
cs_vari-log_group = space.
cs_vari-username = space.
cs_vari-variant = space.
cs_vari-text = space.
cs_vari-dependvars = space.
ENDFORM. " d0100_set_grid_vari
&----
-
*& Form d0100_set_grid_layo
&----
-
*text
*----
-
FORM d0100_set_grid_layo CHANGING cs_layo TYPE lvc_s_layo.
*... ALV-Control: Allgemeine Anzeigeoptionen
cs_layo-stylefname = space.
cs_layo-cwidth_opt = con_true.
cs_layo-zebra = space.
cs_layo-smalltitle = space.
cs_layo-graphics = space.
cs_layo-frontend = space.
cs_layo-template = space.
*... ALV-Control: Gridcustomizing
cs_layo-no_colexpd = space.
cs_layo-no_hgridln = space.
cs_layo-no_vgridln = space.
cs_layo-no_rowmark = space.
cs_layo-no_headers = space.
cs_layo-no_merging = space.
cs_layo-grid_title = space.
cs_layo-no_toolbar = space.
cs_layo-sel_mode = 'D'.
cs_layo-box_fname = space.
cs_layo-sgl_clk_hd = space.
*... ALV-Control: Summenoptionen
cs_layo-totals_bef = space.
cs_layo-no_totline = space.
cs_layo-numc_total = space.
cs_layo-no_utsplit = space.
*... ALV-Control: Exceptions
cs_layo-excp_fname = 'LIGHTS'.
cs_layo-excp_rolln = space.
cs_layo-excp_conds = space.
cs_layo-excp_led = space.
*... ALV-Control: Steuerung Interaktion
cs_layo-detailinit = space.
cs_layo-detailtitl = space.
cs_layo-keyhot = space.
cs_layo-no_keyfix = space.
cs_layo-no_author = space.
CLEAR cs_layo-s_dragdrop.
*... ALV-Control: Farben
cs_layo-info_fname = space.
cs_layo-ctab_fname = space.
*... ALV-Control: Eingabefähigkeit
cs_layo-edit = space.
cs_layo-edit_mode = space.
cs_layo-no_rowins = space.
cs_layo-no_rowmove = space.
*... ALV-Control: Web-Optionen
cs_layo-weblook = space.
cs_layo-webstyle = space.
cs_layo-webrows = space.
cs_layo-webxwidth = space.
cs_layo-webxheight = space.
ENDFORM. " d0100_set_grid_layo
&----
-
*& Form d0100_set_grid_fcat
&----
-
*text
*----
-
FORM d0100_set_grid_fcat CHANGING ct_fcat TYPE lvc_t_fcat.
CALL FUNCTION 'LVC_FIELDCATALOG_MERGE'
EXPORTING
i_buffer_active = gs_test-buffer_active
i_structure_name = con_sflight
i_client_never_display = con_true
i_bypassing_buffer = gs_test-bypassing_buffer
CHANGING
ct_fieldcat = ct_fcat[]
EXCEPTIONS
inconsistent_interface = 1
program_error = 2
OTHERS = 3.
IF sy-subrc EQ 0.
MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
ENDIF.
ENDFORM. " d0100_set_grid_fcat
&----
-
*& Form d0100_set_grid_onf4
&----
-
*text
*----
-
FORM d0100_set_grid_onf4 CHANGING ct_fcat TYPE lvc_t_fcat.
FIELD-SYMBOLS: register_f4_for_fields
EXPORTING
it_f4 = lt_f4.
ENDFORM. " d0100_set_grid_onf4
&----
-
*& Form d0100_set_grid_buttons
&----
-
*text
*----
-
FORM d0100_set_grid_buttons CHANGING ct_fcat TYPE lvc_t_fcat.
FIELD-SYMBOLS: mc_style_button.
ENDIF.
ENDLOOP.
ENDFORM. " d0100_set_grid_buttons
&----
-
*& Form d0100_set_grid_hotspot
&----
-
*text
*----
-
FORM d0100_set_grid_hotspot CHANGING ct_fcat TYPE lvc_t_fcat.
FIELD-SYMBOLS: mc_style_hotspot.
ENDIF.
ENDLOOP.
ENDFORM. " d0100_set_grid_hotspot
&----
-
*& Form d0100_set_grid_edit
&----
-
*text
*----
-
FORM d0100_set_grid_edit CHANGING cs_layo TYPE lvc_s_layo.
IF gs_test-event-data_changed EQ con_true OR
gs_test-event-data_changed_finished EQ con_true OR
gs_test-event-after_refresh EQ con_true.
cs_layo-edit = con_true.
CALL METHOD gr_grid_d0100->register_edit_event
EXPORTING
i_event_id = cl_gui_alv_grid=>mc_evt_enter.
ENDIF.
ENDFORM. " d0100_set_grid_edit
&----
-
*& Form d0100_set_grid_dragdrop
&----
-
*text
*----
-
FORM d0100_set_grid_dragdrop CHANGING cs_layo TYPE lvc_s_layo.
DATA: l_effect TYPE i,
l_handle_grid TYPE i,
ls_dragdrop TYPE lvc_s_dd01.
*... setzen für Zeilen
CREATE OBJECT gr_grid_dragdrop.
l_effect = cl_dragdrop=>move + cl_dragdrop=>copy.
CALL METHOD gr_grid_dragdrop->add
EXPORTING
flavor = 'Line' "#EC NOTEXT
dragsrc = 'X'
droptarget = 'X'
effect = l_effect.
CALL METHOD gr_grid_dragdrop->get_handle
IMPORTING
handle = l_handle_grid.
ls_dragdrop-cntr_ddid = space.
ls_dragdrop-grid_ddid = space.
ls_dragdrop-col_ddid = space.
ls_dragdrop-row_ddid = l_handle_grid.
ls_dragdrop-fieldname = space.
cs_layo-s_dragdrop = ls_dragdrop.
ENDFORM. " d0100_set_grid_dragdrop
&----
-
*& Form d0100_set_grid_events
&----
-
*text
*----
-
FORM d0100_set_grid_events .
CREATE OBJECT gr_events_d0100.
IF gs_test-event-user_command EQ con_true.
SET HANDLER gr_events_d0100->user_command
FOR gr_grid_d0100.
ENDIF.
IF gs_test-event-before_user_command EQ con_true.
SET HANDLER gr_events_d0100->before_user_command
FOR gr_grid_d0100.
ENDIF.
IF gs_test-event-after_user_command EQ con_true.
SET HANDLER gr_events_d0100->after_user_command
FOR gr_grid_d0100.
ENDIF.
IF gs_test-event-double_click EQ con_true.
SET HANDLER gr_events_d0100->double_click
FOR gr_grid_d0100.
ENDIF.
IF gs_test-event-hotspot_click EQ con_true.
SET HANDLER gr_events_d0100->hotspot_click
FOR gr_grid_d0100.
ENDIF.
IF gs_test-event-button_click EQ con_true.
SET HANDLER gr_events_d0100->button_click
FOR gr_grid_d0100.
ENDIF.
IF gs_test-event-onf1 EQ con_true.
SET HANDLER gr_events_d0100->onf1
FOR gr_grid_d0100.
ENDIF.
IF gs_test-event-onf4 EQ con_true.
SET HANDLER gr_events_d0100->onf4
FOR gr_grid_d0100.
ENDIF.
IF gs_test-event-menu_button EQ con_true.
SET HANDLER gr_events_d0100->menu_button
FOR gr_grid_d0100.
ENDIF.
IF gs_test-event-toolbar EQ con_true.
SET HANDLER gr_events_d0100->toolbar
FOR gr_grid_d0100.
ENDIF.
IF gs_test-event-context_menu_request EQ con_true.
SET HANDLER gr_events_d0100->context_menu_request
FOR gr_grid_d0100.
ENDIF.
IF gs_test-event-ondrag EQ con_true.
SET HANDLER gr_events_d0100->ondrag
FOR gr_grid_d0100.
ENDIF.
IF gs_test-event-ondrop EQ con_true.
SET HANDLER gr_events_d0100->ondrop
FOR gr_grid_d0100.
ENDIF.
IF gs_test-event-ondropcomplete EQ con_true.
SET HANDLER gr_events_d0100->ondropcomplete
FOR gr_grid_d0100.
ENDIF.
IF gs_test-event-ondropgetflavor EQ con_true.
SET HANDLER gr_events_d0100->ondropgetflavor
FOR gr_grid_d0100.
ENDIF.
IF gs_test-event-subtotal_text EQ con_true.
SET HANDLER gr_events_d0100->subtotal_text
FOR gr_grid_d0100.
ENDIF.
IF gs_test-event-data_changed EQ con_true.
SET HANDLER gr_events_d0100->data_changed
FOR gr_grid_d0100.
ENDIF.
IF gs_test-event-data_changed_finished EQ con_true.
SET HANDLER gr_events_d0100->data_changed_finished
FOR gr_grid_d0100.
ENDIF.
IF gs_test-event-after_refresh EQ con_true.
SET HANDLER gr_events_d0100->after_refresh
FOR gr_grid_d0100.
ENDIF.
IF gs_test-event-delayed_callback EQ con_true.
SET HANDLER gr_events_d0100->delayed_callback
FOR gr_grid_d0100.
CALL METHOD gr_grid_d0100->register_delayed_event
EXPORTING
i_event_id = cl_gui_alv_grid=>mc_evt_delayed_move_curr_cell.
ENDIF.
IF gs_test-event-delayed_changed_sel_callback EQ con_true.
SET HANDLER gr_events_d0100->delayed_changed_sel_callback
FOR gr_grid_d0100.
CALL METHOD gr_grid_d0100->register_delayed_event
EXPORTING
i_event_id = cl_gui_alv_grid=>mc_evt_delayed_change_select.
ENDIF.
IF gs_test-event-top_of_page EQ con_true.
SET HANDLER gr_events_d0100->top_of_page
FOR gr_grid_d0100.
ENDIF.
IF gs_test-event-end_of_list EQ con_true.
SET HANDLER gr_events_d0100->end_of_list
FOR gr_grid_d0100.
ENDIF.
IF gs_test-event-print_top_of_page EQ con_true.
SET HANDLER gr_events_d0100->print_top_of_page
FOR gr_grid_d0100.
ENDIF.
IF gs_test-event-print_end_of_page EQ con_true.
SET HANDLER gr_events_d0100->print_end_of_page
FOR gr_grid_d0100.
ENDIF.
IF gs_test-event-print_top_of_list EQ con_true.
SET HANDLER gr_events_d0100->print_top_of_list
FOR gr_grid_d0100.
ENDIF.
IF gs_test-event-print_end_of_list EQ con_true.
SET HANDLER gr_events_d0100->print_end_of_list
FOR gr_grid_d0100.
ENDIF.
ENDFORM. " d0100_set_grid_events
&----
-
*& Form d0100_get_outtab
&----
-
*text
*----
-
FORM d0100_get_outtab .
FIELD-SYMBOLS: -lights = l_excp.
ENDLOOP.
SORT gt_outtab BY carrid connid fldate.
ENDFORM. " d0100_get_outtab
&----
-
*& Form d0100_get_carrid
&----
-
*text
*----
-
FORM d0100_get_carrid CHANGING ct_carrid TYPE g_ty_t_carrid.
SELECT * FROM (con_scarr) INTO TABLE ct_carrid
ORDER BY PRIMARY KEY.
ENDFORM. " d0100_get_chck
&----
-
*& Form d0100_get_connid
&----
-
*text
*----
-
FORM d0100_get_connid CHANGING ct_connid TYPE g_ty_t_connid.
SELECT * FROM (con_spfli) INTO TABLE ct_connid
ORDER BY PRIMARY KEY.
ENDFORM. " d0100_get_connid
&----
-
*& Form d0100_get_plane
&----
-
*text
*----
-
FORM d0100_get_plane USING value(it_connid) TYPE g_ty_t_connid
CHANGING ct_plane TYPE g_ty_t_plane.
DATA: ls_connid TYPE g_ty_s_connid,
ls_plane TYPE g_ty_s_plane.
LOOP AT it_connid INTO ls_connid.
MOVE-CORRESPONDING ls_connid TO ls_plane.
CASE ls_plane-carrid.
WHEN 'AA' OR 'AB' OR 'AC' OR 'AF'.
CASE ls_plane-connid.
WHEN '0017'.
ls_plane-planetype = '146-200'.
WHEN '0026'.
ls_plane-planetype = '146-300'.
WHEN '0064'.
ls_plane-planetype = '737-200SF'.
ENDCASE.
WHEN 'AZ' OR 'BA' OR 'CO' OR 'DL' OR 'FJ'.
CASE ls_plane-connid.
WHEN '0555'.
ls_plane-planetype = '747-200F'.
WHEN '0789'.
ls_plane-planetype = '757F'.
WHEN '0791'.
ls_plane-planetype = '767-200'.
ENDCASE.
WHEN 'JL'.
CASE ls_plane-connid.
WHEN '1699'.
ls_plane-planetype = '767-300'.
WHEN '1984'.
ls_plane-planetype = 'A310-200'.
ENDCASE.
WHEN 'LH'.
CASE ls_plane-connid.
WHEN '0400'.
ls_plane-planetype = 'A310-200F'.
WHEN '0402'.
ls_plane-planetype = 'A310-200SF'.
WHEN '2407'.
ls_plane-planetype = 'A330-300'.
WHEN '2463'.
ls_plane-planetype = 'DC-8-72'.
WHEN '3577'.
ls_plane-planetype = 'FOKKER 100'.
ENDCASE.
WHEN 'NG' OR 'NW'.
CASE ls_plane-connid.
WHEN '0001'.
ls_plane-planetype = '737-200'.
WHEN '0006'.
ls_plane-planetype = 'A321'.
WHEN '0012'.
ls_plane-planetype = '727-200'.
ENDCASE.
WHEN 'QF'.
CASE ls_plane-connid.
WHEN '0005'.
ls_plane-planetype = 'FOKKER 70'.
WHEN '0006'.
ls_plane-planetype = 'L-100-30'.
ENDCASE.
WHEN 'SA' OR 'SQ' OR 'SR'.
CASE ls_plane-connid.
WHEN '0002'.
ls_plane-planetype = 'L-1011-100'.
WHEN '0015'.
ls_plane-planetype = 'RJ115'.
WHEN '0066'.
ls_plane-planetype = 'RJ85'.
WHEN '0114'.
ls_plane-planetype = 'YAK-242'.
WHEN '0117'.
ls_plane-planetype = 'A310-300'.
ENDCASE.
WHEN 'UA'.
CASE ls_plane-connid.
WHEN '0007'.
ls_plane-planetype = 'A319'.
WHEN '0941'.
ls_plane-planetype = 'DC-10-10'.
WHEN '3504'.
ls_plane-planetype = '747-400'.
ENDCASE.
ENDCASE.
CASE ls_plane-planetype.
WHEN '146-200'.
ls_plane-seatsmax = '112'.
WHEN '146-300'.
ls_plane-seatsmax = '128'.
WHEN '737-200SF'.
ls_plane-seatsmax = '13'.
WHEN '747-200F'.
ls_plane-seatsmax = '171'.
WHEN '757F'.
ls_plane-seatsmax = '239'.
WHEN '767-200'.
ls_plane-seatsmax = '290'.
WHEN '767-300'.
ls_plane-seatsmax = '345'.
WHEN 'A310-200'.
ls_plane-seatsmax = '280'.
WHEN 'A310-200F'.
ls_plane-seatsmax = '10'.
WHEN 'A310-200SF'.
ls_plane-seatsmax = '8'.
WHEN 'A330-300'.
ls_plane-seatsmax = '223'.
WHEN 'DC-8-72'.
ls_plane-seatsmax = '201'.
WHEN 'FOKKER 100'.
ls_plane-seatsmax = '107'.
WHEN 'FOKKER 70'.
ls_plane-seatsmax = '79'.
WHEN 'L-100-30'.
ls_plane-seatsmax = '97'.
WHEN 'L-1011-100'.
ls_plane-seatsmax = '400'.
WHEN 'RJ115'.
ls_plane-seatsmax = '128'.
WHEN 'RJ85'.
ls_plane-seatsmax = '112'.
WHEN 'YAK-242'.
ls_plane-seatsmax = '180'.
WHEN 'A310-300'.
ls_plane-seatsmax = '280'.
WHEN 'A319'.
ls_plane-seatsmax = '220'.
WHEN 'DC-10-10'.
ls_plane-seatsmax = '380'.
WHEN '747-400'.
ls_plane-seatsmax = '385'.
WHEN '737-200'.
ls_plane-seatsmax = '130'.
WHEN 'A321'.
ls_plane-seatsmax = '220'.
WHEN '727-200'.
ls_plane-seatsmax = '189'.
WHEN OTHERS.
ls_plane-seatsmax = '999'.
ENDCASE.
INSERT ls_plane INTO TABLE ct_plane.
ENDLOOP.
ENDFORM. " d0100_get_plane
&----
-
*& Form d0100_event_data_changed
&----
-
*text
*----
-
FORM d0100_event_data_changed USING er_data_changed
e_onf4
e_onf4_before
e_onf4_after. "#EC *
DATA: l_text TYPE string.
CONCATENATE text-001
text-103 e_onf4
text-104 e_onf4_before
text-105 e_onf4_after
INTO l_text SEPARATED BY space.
DATA: l_event TYPE lvc_fname. "#EC NEEDED
IF gs_test-info_popup_once EQ con_true.
READ TABLE gs_test-events_info_popup INTO l_event
WITH KEY table_line = 'DATA_CHANGED'.
IF sy-subrc NE 0.
INSERT 'DATA_CHANGED' INTO gs_test-events_info_popup INDEX 1.
MESSAGE i000(0k) WITH l_text.
ENDIF.
ELSEIF gs_test-no_info_popup EQ space.
MESSAGE i000(0k) WITH l_text.
ENDIF.
*... die Ausgabetabelle ist noch nicht aktualisiert
*hier sollen semantische Prüfungen zunächst erfolgen über
*er_data_changed->mt_good_cells
*Fehler können dann dem Fehlerprotokoll angehängt werden
*er_data_changed->add_protocol_entry
*Es darf an dieser Stelle kein Refresh erfolgen!
PERFORM d0100_get_grid_infos.
ENDFORM. " d0100_event_data_changed
&----
-
*& Form d0100_event_data_changed_finis
&----
-
*text
*----
-
FORM d0100_event_data_changed_finis . "#EC *
DATA: l_event TYPE lvc_fname. "#EC NEEDED
IF gs_test-info_popup_once EQ con_true.
READ TABLE gs_test-events_info_popup INTO l_event
WITH KEY table_line = 'DATA_CHANGED_FINISHED'.
IF sy-subrc NE 0.
INSERT 'DATA_CHANGED_FINISHED' INTO gs_test-events_info_popup
INDEX 1.
MESSAGE i000(0k) WITH text-002.
ENDIF.
ELSEIF gs_test-no_info_popup EQ space.
MESSAGE i000(0k) WITH text-002.
ENDIF.
*... die Ausgabetabelle ist nun aktualisiert
PERFORM d0100_get_grid_infos.
ENDFORM. " d0100_event_data_changed_finis
&----
-
*& Form d0100_event_ucomm
&----
-
*text
*----
-
FORM d0100_event_ucomm USING e_ucomm TYPE sy-ucomm. "#EC *
DATA: l_event TYPE lvc_fname. "#EC NEEDED
IF gs_test-info_popup_once EQ con_true.
READ TABLE gs_test-events_info_popup INTO l_event
WITH KEY table_line = 'USER_COMMAND'.
IF sy-subrc NE 0.
INSERT 'USER_COMMAND' INTO gs_test-events_info_popup
INDEX 1.
MESSAGE i000(0k) WITH text-003 e_ucomm.
ENDIF.
ELSEIF gs_test-no_info_popup EQ space.
MESSAGE i000(0k) WITH text-003 e_ucomm.
ENDIF.
PERFORM d0100_get_grid_infos.
DATA: l_ucomm TYPE sy-ucomm.
*... An dieser Stelle kann die Logik für die Funktion hinterlegt werden
*... At this point, the logic for the function you are
CASE e_ucomm.
WHEN 'EnableStaticMenu' OR 'EnableStaticMenuDefault'.
l_ucomm = 'Enable'. "#EC NOTEXT
WHEN 'DisableStaticMenu' OR 'DisableStaticMenuDefault'.
l_ucomm = 'Disable'. "#EC NOTEXT
ENDCASE.
CASE e_ucomm.
WHEN 'EnableStaticMenu' OR 'DisableStaticMenu'.
PERFORM d0100_enable_disable_menu USING g_static_menu
l_ucomm.
WHEN 'EnableStaticMenuDefault' OR 'DisableStaticMenuDefault'.
PERFORM d0100_enable_disable_menu USING g_static_menu_default
l_ucomm.
WHEN OTHERS.
EXIT.
ENDCASE.
ENDFORM. " d0100_event_ucomm
&----
-
*& Form d0100_event_before_ucomm
&----
-
*text
*----
-
FORM d0100_event_before_ucomm USING e_ucomm TYPE sy-ucomm. "#EC *
DATA: l_event TYPE lvc_fname. "#EC NEEDED
*
IF gs_test-info_popup_once EQ con_true.
READ TABLE gs_test-events_info_popup INTO l_event
WITH KEY table_line = 'BEFORE_USER_COMMAND'.
IF sy-subrc NE 0.
INSERT 'BEFORE_USER_COMMAND' INTO gs_test-events_info_popup
INDEX 1.
MESSAGE i000(0k) WITH text-004 e_ucomm.
ENDIF.
ELSEIF gs_test-no_info_popup EQ space.
MESSAGE i000(0k) WITH text-004 e_ucomm.
ENDIF.
*
PERFORM d0100_get_grid_infos.
skip.
ENDFORM. " d0100_event_before_ucomm
&----
-
*& Form d0100_event_after_ucomm
&----
-
*text
*----
-
FORM d0100_event_after_ucomm USING e_ucomm TYPE sy-ucomm
e_not_processed TYPE char1
e_saved TYPE char1.
DATA: l_event TYPE lvc_fname, "#EC NEEDED
l_text1 TYPE string,
l_text2 TYPE string.
CONCATENATE 'E_NOT_PROCESSED =' e_not_processed INTO l_text1.
CONCATENATE 'E_SAVED =' e_saved INTO l_text2.
IF gs_test-info_popup_once EQ con_true.
READ TABLE gs_test-events_info_popup INTO l_event
WITH KEY table_line = 'AFTER_USER_COMMAND'.
IF sy-subrc NE 0.
INSERT 'AFTER_USER_COMMAND' INTO gs_test-events_info_popup
INDEX 1.
MESSAGE i000(0k) WITH text-005 e_ucomm l_text1 l_text2.
ENDIF.
ELSEIF gs_test-no_info_popup EQ space.
MESSAGE i000(0k) WITH text-005 e_ucomm l_text1 l_text2.
ENDIF.
PERFORM d0100_get_grid_infos.
*
PERFORM d0100_apply_filter.
ENDFORM. " d0100_event_after_ucomm
&----
-
*& Form d0100_event_double_click
&----
-
*text
*----
-
FORM d0100_event_double_click USING e_row TYPE lvc_s_row
e_column TYPE lvc_s_col. "#EC *
DATA: l_text TYPE string.
CONCATENATE text-006
text-100 e_row-index
text-101 e_column-fieldname
INTO l_text SEPARATED BY space.
DATA: l_event TYPE lvc_fname. "#EC NEEDED
IF gs_test-info_popup_once EQ con_true.
READ TABLE gs_test-events_info_popup INTO l_event
WITH KEY table_line = 'DOUBLE_CLICK'.
IF sy-subrc NE 0.
INSERT 'DOUBLE_CLICK' INTO gs_test-events_info_popup
INDEX 1.
MESSAGE i000(0k) WITH l_text.
ENDIF.
ELSEIF gs_test-no_info_popup EQ space.
MESSAGE i000(0k) WITH l_text.
ENDIF.
PERFORM d0100_get_grid_infos.
ENDFORM. " d0100_event_double_click
&----
-
*& Form d0100_event_hotspot_click
&----
-
*text
*----
-
FORM d0100_event_hotspot_click USING e_row_id TYPE lvc_s_row
e_column_id TYPE lvc_s_col. "#EC *
DATA: l_text TYPE string.
CONCATENATE text-007
text-100 e_row_id-index
text-101 e_column_id-fieldname
INTO l_text SEPARATED BY space.
DATA: l_event TYPE lvc_fname. "#EC NEEDED
IF gs_test-info_popup_once EQ con_true.
READ TABLE gs_test-events_info_popup INTO l_event
WITH KEY table_line = 'HOTSPOT_CLICK'.
IF sy-subrc NE 0.
INSERT 'HOTSPOT_CLICK' INTO gs_test-events_info_popup
INDEX 1.
MESSAGE i000(0k) WITH l_text.
ENDIF.
ELSEIF gs_test-no_info_popup EQ space.
MESSAGE i000(0k) WITH l_text.
ENDIF.
PERFORM d0100_get_grid_infos.
ENDFORM. " d0100_event_hotspot_click
&----
-
*& Form d0100_event_menu_button
&----
-
*text
*----
-
FORM d0100_event_menu_button USING e_object TYPE REF TO cl_ctmenu
e_ucomm LIKE sy-ucomm. "#EC *
DATA: l_event TYPE lvc_fname. "#EC NEEDED
IF gs_test-info_popup_once EQ con_true.
READ TABLE gs_test-events_info_popup INTO l_event
WITH KEY table_line = 'MENU_BUTTON'.
IF sy-subrc NE 0.
INSERT 'MENU_BUTTON' INTO gs_test-events_info_popup
INDEX 1.
MESSAGE i000(0k) WITH text-008 e_ucomm.
ENDIF.
ELSEIF gs_test-no_info_popup EQ space.
MESSAGE i000(0k) WITH text-008 e_ucomm.
ENDIF.
PERFORM d0100_get_grid_infos.
CASE e_ucomm.
WHEN 'MyStaticMenuDefault'.
CALL METHOD e_object->add_function
EXPORTING
fcode = 'MyStaticMenuDefaultFunc1'
text = 'MyStaticMenuDefaultFunc1'
icon = space
ftype = '6'
disabled = space
hidden = space
checked = space.
CALL METHOD e_object->add_function
EXPORTING
fcode = 'MyStaticMenuDefaultFunc2Disable'
text = 'MyStaticMenuDefaultFunc2Disable'
icon = space
ftype = '6'
disabled = con_true
hidden = space
checked = space.
WHEN 'MyMenuDefault'.
CALL METHOD e_object->add_function
EXPORTING
fcode = 'MyMenuDefaultFunc1'
text = 'MyMenuDefaultFunc1'
icon = space
ftype = '6'
disabled = space
hidden = space
checked = space.
CALL METHOD e_object->add_separator.
CALL METHOD e_object->add_function
EXPORTING
fcode = 'MyMenuDefaultFunc2'
text = 'MyMenuDefaultFunc2Disabled'
icon = space
ftype = '6'
disabled = con_true
hidden = space
checked = space.
WHEN 'MyMenu'.
CALL METHOD e_object->add_function
EXPORTING
fcode = 'MyMenuFunc1'
text = 'MyMenuFunc1'
icon = space
ftype = '6'
disabled = space
hidden = space
checked = space.
CALL METHOD e_object->add_separator.
CALL METHOD e_object->add_function
EXPORTING
fcode = 'MyMenuFunc2'
text = 'MyMenuFunc2Disabled'
icon = space
ftype = '6'
disabled = con_true
hidden = space
checked = space.
ENDCASE.
ENDFORM. " d0100_event_menu_button
&----
-
*& Form d0100_event_toolbar
&----
-
*text
*----
-
FORM d0100_event_toolbar USING e_object
TYPE REF TO cl_alv_event_toolbar_set
e_interactive TYPE c. "#EC *
DATA: l_event TYPE lvc_fname. "#EC NEEDED
IF gs_test-info_popup_once EQ con_true.
READ TABLE gs_test-events_info_popup INTO l_event
WITH KEY table_line = 'TOOLBAR'.
IF sy-subrc NE 0.
INSERT 'TOOLBAR' INTO gs_test-events_info_popup INDEX 1.
MESSAGE i000(0k) WITH text-009.
ENDIF.
ELSEIF gs_test-no_info_popup EQ space.
MESSAGE i000(0k) WITH text-009.
ENDIF.
PERFORM d0100_get_grid_infos.
*... An dieser Stelle kann der Toolbar um weitere Funktionen ergänzt
*werden.
DATA: ls_toolbar TYPE stb_button,
ls_menu TYPE stb_btnmnu,
lc_menu TYPE REF TO cl_ctmenu,
lc_menu_2 TYPE REF TO cl_ctmenu.
************************************************************************
*STATIC MENU
************************************************************************
*... Statischer Menu im Toolbar eintragen
CLEAR ls_toolbar.
ls_toolbar-function = 'MyStaticMenu'.
ls_toolbar-icon = space.
ls_toolbar-butn_type = '2'.
ls_toolbar-disabled = space.
ls_toolbar-text = 'MyStaticMenu'.
ls_toolbar-quickinfo = space.
ls_toolbar-checked = space.
APPEND ls_toolbar TO e_object->mt_toolbar.
*... Statischer Menu anlegen
CREATE OBJECT lc_menu.
CALL METHOD lc_menu->add_function
EXPORTING
fcode = 'MyStaticMenuFunc1'
text = 'MyStaticMenuFunc1'
icon = space
ftype = space
disabled = space
hidden = space
checked = space
accelerator = space.
CALL METHOD lc_menu->add_function
EXPORTING
fcode = 'MyStaticMenuFunc2Disabled'
text = 'MyStaticMenuFunc2Disabled'
icon = space
ftype = space
disabled = con_true
hidden = space
checked = space
accelerator = space.
ls_menu-ctmenu = lc_menu.
ls_menu-function = 'MyStaticMenu'.
APPEND ls_menu TO e_object->mt_btnmnu.
g_static_menu = lc_menu.
*... Normal Button
CLEAR ls_toolbar.
ls_toolbar-function = 'EnableStaticMenu'.
ls_toolbar-icon = space.
ls_toolbar-butn_type = '0'.
ls_toolbar-disabled = space.
ls_toolbar-text = 'EnableStaticMenu'.
ls_toolbar-quickinfo = space.
ls_toolbar-checked = space.
APPEND ls_toolbar TO e_object->mt_toolbar.
*... Normal Button
CLEAR ls_toolbar.
ls_toolbar-function = 'DisableStaticMenu'.
ls_toolbar-icon = space.
ls_toolbar-butn_type = '0'.
ls_toolbar-disabled = space.
ls_toolbar-text = 'DisableStaticMenu'.
ls_toolbar-quickinfo = space.
ls_toolbar-checked = space.
APPEND ls_toolbar TO e_object->mt_toolbar.
************************************************************************
*DEFAULT STATIC MENU
************************************************************************
*...Seperator
ls_toolbar-function = 'DUMMY'.
ls_toolbar-butn_type = '3'.
APPEND ls_toolbar TO e_object->mt_toolbar.
*... Statischer Menu Default im Toolbar eintragen
CLEAR ls_toolbar.
ls_toolbar-function = 'MyStaticMenuDefault'.
ls_toolbar-icon = space.
ls_toolbar-butn_type = '1'.
ls_toolbar-disabled = space.
ls_toolbar-text = 'MyStaticMenuDefault'.
ls_toolbar-quickinfo = space.
ls_toolbar-checked = space.
APPEND ls_toolbar TO e_object->mt_toolbar.
*... Statischer Menu Default anlegen
CREATE OBJECT lc_menu_2.
CALL METHOD lc_menu_2->add_function
EXPORTING
fcode = 'MyStaticMenuDefaultFunc1'
text = 'MyStaticMenuDefaultFunc1'
icon = space
ftype = '6'
disabled = space
hidden = space
checked = space
accelerator = space.
CALL METHOD lc_menu_2->add_function
EXPORTING
fcode = 'MyStaticMenuDefaultFunc2Disabled'
text = 'MyStaticMenuDefaultFunc2Disabled'
icon = space
ftype = '6'
disabled = con_true
hidden = space
checked = space
accelerator = space.
CLEAR ls_menu.
ls_menu-ctmenu = lc_menu_2.
ls_menu-function = 'MyStaticMenuDefault'.
APPEND ls_menu TO e_object->mt_btnmnu.
g_static_menu_default = lc_menu_2.
*... Normal Button
CLEAR ls_toolbar.
ls_toolbar-function = 'EnableStaticMenuDefault'.
ls_toolbar-icon = space.
ls_toolbar-butn_type = '0'.
ls_toolbar-disabled = space.
ls_toolbar-text = 'EnableStaticMenuDefault'.
ls_toolbar-quickinfo = space.
ls_toolbar-checked = space.
APPEND ls_toolbar TO e_object->mt_toolbar.
*... Normal Button
CLEAR ls_toolbar.
ls_toolbar-function = 'DisableStaticMenuDefault'.
ls_toolbar-icon = space.
ls_toolbar-butn_type = '0'.
ls_toolbar-disabled = space.
ls_toolbar-text = 'DisableStaticMenuDefault'.
ls_toolbar-quickinfo = space.
ls_toolbar-checked = space.
APPEND ls_toolbar TO e_object->mt_toolbar.
************************************************************************
*MENU
************************************************************************
*...Seperator
ls_toolbar-function = 'DUMMY'.
ls_toolbar-butn_type = '3'.
APPEND ls_toolbar TO e_object->mt_toolbar.
*... Menu
CLEAR ls_toolbar.
ls_toolbar-function = 'MyMenu'.
ls_toolbar-icon = space.
ls_toolbar-butn_type = '2'.
ls_toolbar-disabled = space.
ls_toolbar-text = 'MyMenu'.
ls_toolbar-quickinfo = space.
ls_toolbar-checked = space.
APPEND ls_toolbar TO e_object->mt_toolbar.
*... Menueintrag - noch nicht aktiv
CLEAR ls_toolbar.
ls_toolbar-function = 'MyMenuFunc'.
ls_toolbar-icon = space.
ls_toolbar-butn_type = '6'.
ls_toolbar-disabled = space.
ls_toolbar-text = 'MyMenuFunc'.
ls_toolbar-quickinfo = space.
ls_toolbar-checked = space.
APPEND ls_toolbar TO e_object->mt_toolbar.
************************************************************************
*DEFAULT MENU
************************************************************************
*...Seperator
ls_toolbar-function = 'DUMMY'.
ls_toolbar-butn_type = '3'.
APPEND ls_toolbar TO e_object->mt_toolbar.
*... Menu + Defaultbutton
CLEAR ls_toolbar.
ls_toolbar-function = 'MyMenuDefault'.
ls_toolbar-icon = space.
ls_toolbar-butn_type = '1'.
ls_toolbar-disabled = space.
ls_toolbar-text = 'MyMenuDefault'.
ls_toolbar-quickinfo = space.
ls_toolbar-checked = space.
APPEND ls_toolbar TO e_object->mt_toolbar.
*... Menueintrag - noch nicht aktiv
CLEAR ls_toolbar.
ls_toolbar-function = 'MyMenuDefaultFunc'.
ls_toolbar-icon = space.
ls_toolbar-butn_type = '6'.
ls_toolbar-disabled = space.
ls_toolbar-text = 'MyMenuDefaultFunc'.
ls_toolbar-quickinfo = space.
ls_toolbar-checked = space.
APPEND ls_toolbar TO e_object->mt_toolbar.
************************************************************************
*BUTTON
************************************************************************
*...Seperator
ls_toolbar-function = 'DUMMY'.
ls_toolbar-butn_type = '3'.
APPEND ls_toolbar TO e_object->mt_toolbar.
*... Normal Button
CLEAR ls_toolbar.
ls_toolbar-function = 'MyFunc1'.
ls_toolbar-icon = space.
ls_toolbar-butn_type = '0'.
ls_toolbar-disabled = space.
ls_toolbar-text = 'MyFunc'.
ls_toolbar-quickinfo = space.
ls_toolbar-checked = space.
APPEND ls_toolbar TO e_object->mt_toolbar.
************************************************************************
*CHECKBOX
************************************************************************
*...Seperator
ls_toolbar-function = 'DUMMY'.
ls_toolbar-butn_type = '3'.
APPEND ls_toolbar TO e_object->mt_toolbar.
*... Checkbox
CLEAR ls_toolbar.
ls_toolbar-function = 'MyCheckBox'.
ls_toolbar-icon = space.
ls_toolbar-butn_type = '5'.
ls_toolbar-disabled = space.
ls_toolbar-text = 'MyCheckBox'.
ls_toolbar-quickinfo = space.
ls_toolbar-checked = space.
APPEND ls_toolbar TO e_object->mt_toolbar.
************************************************************************
*RADIOBUTTON
************************************************************************
*...Seperator
ls_toolbar-function = 'DUMMY'.
ls_toolbar-butn_type = '3'.
APPEND ls_toolbar TO e_object->mt_toolbar.
*... Radiobutton
CLEAR ls_toolbar.
ls_toolbar-function = 'MyRadioButton1'.
ls_toolbar-icon = space.
ls_toolbar-butn_type = '4'.
ls_toolbar-disabled = space.
ls_toolbar-text = 'MyRadioButton1'.
ls_toolbar-quickinfo = space.
ls_toolbar-checked = space.
APPEND ls_toolbar TO e_object->mt_toolbar.
*... Radiobutton
CLEAR ls_toolbar.
ls_toolbar-function = 'MyRadioButton2'.
ls_toolbar-icon = space.
ls_toolbar-butn_type = '4'.
ls_toolbar-disabled = space.
ls_toolbar-text = 'MyRadioButton2'.
ls_toolbar-quickinfo = space.
ls_toolbar-checked = space.
APPEND ls_toolbar TO e_object->mt_toolbar.
*... Radiobutton
CLEAR ls_toolbar.
ls_toolbar-function = 'MyRadioButton3'.
ls_toolbar-icon = space.
ls_toolbar-butn_type = '4'.
ls_toolbar-disabled = space.
ls_toolbar-text = 'MyRadioButton3'.
ls_toolbar-quickinfo = space.
ls_toolbar-checked = space.
APPEND ls_toolbar TO e_object->mt_toolbar.
ENDFORM. " d0100_event_toolbar
&----
-
*& Form d0100_event_context_menu_reqst
&----
-
*text
*----
-
FORM d0100_event_context_menu_reqst USING e_object
TYPE REF TO cl_ctmenu.
"#EC *
DATA: l_event TYPE lvc_fname. "#EC NEEDED
IF gs_test-info_popup_once EQ con_true.
READ TABLE gs_test-events_info_popup INTO l_event
WITH KEY table_line = 'CONTEXT_MENU_REQUEST'.
IF sy-subrc NE 0.
INSERT 'CONTEXT_MENU_REQUEST' INTO gs_test-events_info_popup
INDEX 1.
MESSAGE i000(0k) WITH text-010.
ENDIF.
ELSEIF gs_test-no_info_popup EQ space.
MESSAGE i000(0k) WITH text-010.
ENDIF.
PERFORM d0100_get_grid_infos.
*... An dieser Stelle kann der ContextMenu um weitere Funktionen ergänzt
*werden.
CALL METHOD e_object->add_function
EXPORTING
fcode = 'MyCMenuFunc1'
text = 'MyContextMenuFunc1'
icon = space
ftype = '6'
disabled = space
hidden = space
checked = space.
CALL METHOD e_object->add_function
EXPORTING
fcode = 'MyCMenuFunc2'
text = 'MyContextMenuFunc2'
icon = space
ftype = '6'
disabled = space
hidden = space
checked = space.
ENDFORM. " d0100_event_context_menu_reqst
&----
-
*& Form d0100_event_top_of_page
&----
-
*text
*----
-
FORM d0100_event_top_of_page USING e_dyndoc_id
TYPE REF TO cl_dd_document.
"#EC *
DATA: l_event TYPE lvc_fname. "#EC NEEDED
IF gs_test-info_popup_once EQ con_true.
READ TABLE gs_test-events_info_popup INTO l_event
WITH KEY table_line = 'TOP_OF_PAGE'.
IF sy-subrc NE 0.
INSERT 'TOP_OF_PAGE' INTO gs_test-events_info_popup INDEX 1.
MESSAGE i000(0k) WITH text-011.
ENDIF.
ELSEIF gs_test-no_info_popup EQ space.
MESSAGE i000(0k) WITH text-011.
ENDIF.
PERFORM d0100_get_grid_infos.
WRITE: / text-011.
ENDFORM. " d0100_event_top_of_page
&----
-
*& Form d0100_event_end_of_list
&----
-
*text
*----
-
FORM d0100_event_end_of_list USING e_dyndoc_id
TYPE REF TO cl_dd_document.
"#EC *
DATA: l_event TYPE lvc_fname. "#EC NEEDED
IF gs_test-info_popup_once EQ con_true.
READ TABLE gs_test-events_info_popup INTO l_event
WITH KEY table_line = 'END_OF_LIST'.
IF sy-subrc NE 0.
INSERT 'END_OF_LIST' INTO gs_test-events_info_popup INDEX 1.
MESSAGE i000(0k) WITH text-012.
ENDIF.
ELSEIF gs_test-no_info_popup EQ space.
MESSAGE i000(0k) WITH text-012.
ENDIF.
PERFORM d0100_get_grid_infos.
WRITE: / text-012.
ENDFORM. " d0100_event_end_of_list
&----
-
*& Form d0100_event_print_top_of_page
&----
-
*text
*----
-
FORM d0100_event_print_top_of_page . "#EC CALLED
DATA: l_event TYPE lvc_fname. "#EC NEEDED
IF gs_test-info_popup_once EQ con_true.
READ TABLE gs_test-events_info_popup INTO l_event
WITH KEY table_line = 'PRINT_TOP_OF_PAGE'.
IF sy-subrc NE 0.
INSERT 'PRINT_TOP_OF_PAGE' INTO gs_test-events_info_popup INDEX 1.
MESSAGE i000(0k) WITH text-013.
ENDIF.
ELSEIF gs_test-no_info_popup EQ space.
MESSAGE i000(0k) WITH text-013.
ENDIF.
PERFORM d0100_get_grid_infos.
WRITE: / text-013.
ENDFORM. " d0100_event_print_top_of_page
&----
-
*& Form d0100_event_print_end_of_page
&----
-
*text
*----
-
FORM d0100_event_print_end_of_page . "#EC CALLED
DATA: l_event TYPE lvc_fname. "#EC NEEDED
IF gs_test-info_popup_once EQ con_true.
READ TABLE gs_test-events_info_popup INTO l_event
WITH KEY table_line = 'PRINT_END_OF_PAGE'.
IF sy-subrc NE 0.
INSERT 'PRINT_END_OF_PAGE' INTO gs_test-events_info_popup INDEX 1.
MESSAGE i000(0k) WITH text-014.
ENDIF.
ELSEIF gs_test-no_info_popup EQ space.
MESSAGE i000(0k) WITH text-014.
ENDIF.
PERFORM d0100_get_grid_infos.
WRITE: / text-014.
ENDFORM. " d0100_event_print_end_of_page
&----
-
*& Form d0100_event_print_top_of_list
&----
-
*text
*----
-
FORM d0100_event_print_top_of_list . "#EC CALLED
DATA: l_event TYPE lvc_fname. "#EC NEEDED
IF gs_test-info_popup_once EQ con_true.
READ TABLE gs_test-events_info_popup INTO l_event
WITH KEY table_line = 'PRINT_TOP_OF_LIST'.
IF sy-subrc NE 0.
INSERT 'PRINT_TOP_OF_LIST' INTO gs_test-events_info_popup INDEX 1.
MESSAGE i000(0k) WITH text-015.
ENDIF.
ELSEIF gs_test-no_info_popup EQ space.
MESSAGE i000(0k) WITH text-015.
ENDIF.
PERFORM d0100_get_grid_infos.
WRITE: / text-015.
ENDFORM. " d0100_event_print_top_of_list
&----
-
*& Form d0100_event_print_end_of_list
&----
-
*text
*----
-
FORM d0100_event_print_end_of_list . "#EC CALLED
DATA: l_event TYPE lvc_fname. "#EC NEEDED
IF gs_test-info_popup_once EQ con_true.
READ TABLE gs_test-events_info_popup INTO l_event
WITH KEY table_line = 'PRINT_END_OF_LIST'.
IF sy-subrc NE 0.
INSERT 'PRINT_END_OF_LIST' INTO gs_test-events_info_popup INDEX 1.
MESSAGE i000(0k) WITH text-016.
ENDIF.
ELSEIF gs_test-no_info_popup EQ space.
MESSAGE i000(0k) WITH text-016.
ENDIF.
PERFORM d0100_get_grid_infos.
WRITE: / text-016.
ENDFORM. " d0100_event_print_end_of_list
&----
-
*& Form d0100_event_after_refresh
&----
-
*text
*----
-
FORM d0100_event_after_refresh . "#EC CALLED
DATA: l_event TYPE lvc_fname. "#EC NEEDED
IF gs_test-info_popup_once EQ con_true.
READ TABLE gs_test-events_info_popup INTO l_event
WITH KEY table_line = 'AFTER_REFRESH'.
IF sy-subrc NE 0.
INSERT 'AFTER_REFRESH' INTO gs_test-events_info_popup INDEX 1.
MESSAGE i000(0k) WITH text-017.
ENDIF.
ELSEIF gs_test-no_info_popup EQ space.
MESSAGE i000(0k) WITH text-017.
ENDIF.
PERFORM d0100_get_grid_infos.
ENDFORM. " d0100_event_after_refresh
&----
-
*& Form d0100_event_delayed_callback
&----
-
*text
*----
-
FORM d0100_event_delayed_callback . "#EC CALLED
DATA: l_event TYPE lvc_fname. "#EC NEEDED
IF gs_test-info_popup_once EQ con_true.
READ TABLE gs_test-events_info_popup INTO l_event
WITH KEY table_line = 'DELAYED_CALLBACK'.
IF sy-subrc NE 0.
INSERT 'DELAYED_CALLBACK' INTO gs_test-events_info_popup INDEX 1.
MESSAGE i000(0k) WITH text-018.
ENDIF.
ELSEIF gs_test-no_info_popup EQ space.
MESSAGE i000(0k) WITH text-018.
ENDIF.
PERFORM d0100_get_grid_infos.
ENDFORM. " d0100_event_delayed_callback
&----
-
*& Form d0100_event_changed_sel_callba
&----
-
*text
*----
-
FORM d0100_event_changed_sel_callba . "#EC CALLED
DATA: l_event TYPE lvc_fname. "#EC NEEDED
IF gs_test-info_popup_once EQ con_true.
READ TABLE gs_test-events_info_popup INTO l_event
WITH KEY table_line = 'CHANGED_SELECTION_CALLBACK'.
IF sy-subrc NE 0.
INSERT 'CHANGED_SELECTION_CALLBACK'
INTO gs_test-events_info_popup INDEX 1.
MESSAGE i000(0k) WITH text-019.
ENDIF.
ELSEIF gs_test-no_info_popup EQ space.
MESSAGE i000(0k) WITH text-019.
ENDIF.
PERFORM d0100_get_grid_infos.
ENDFORM. " d0100_event_changed_sel_callba
&----
-
*& Form d0100_event_subtotal_text
&----
-
*text
*----
-
FORM d0100_event_subtotal_text USING es_subtottxt_info TYPE lvc_s_stxt
ep_subtot_line TYPE REF TO data
e_event_data
TYPE REF TO cl_alv_event_data.
"#EC *
DATA: l_event TYPE lvc_fname. "#EC NEEDED
IF gs_test-info_popup_once EQ con_true.
READ TABLE gs_test-events_info_popup INTO l_event
WITH KEY table_line = 'SUBTOTAL_TEXT'.
IF sy-subrc NE 0.
INSERT 'SUBTOTAL_TEXT'
INTO gs_test-events_info_popup INDEX 1.
MESSAGE i000(0k) WITH text-020.
ENDIF.
ELSEIF gs_test-no_info_popup EQ space.
MESSAGE i000(0k) WITH text-020.
ENDIF.
PERFORM d0100_get_grid_infos.
DATA: l_text TYPE string. "#EC NEEDED
l_text = es_subtottxt_info.
FIELD-SYMBOLS: = text-200.
ENDFORM. " d0100_event_subtotal_text
&----
-
*& Form d0100_event_ondrag
&----
-
*text
*----
-
FORM d0100_event_ondrag USING e_row TYPE lvc_s_row
e_column TYPE lvc_s_col
e_dragdropobj TYPE REF TO
cl_dragdropobject.
"#EC *
DATA: l_text TYPE string.
CONCATENATE text-021
text-100 e_row-index
text-101 e_column-fieldname
INTO l_text SEPARATED BY space.
DATA: l_event TYPE lvc_fname. "#EC NEEDED
IF gs_test-info_popup_once EQ con_true.
READ TABLE gs_test-events_info_popup INTO l_event
WITH KEY table_line = 'ONDRAG'.
IF sy-subrc NE 0.
INSERT 'ONDRAG'
INTO gs_test-events_info_popup INDEX 1.
MESSAGE i000(0k) WITH l_text.
ENDIF.
ELSEIF gs_test-no_info_popup EQ space.
MESSAGE i000(0k) WITH l_text.
ENDIF.
PERFORM d0100_get_grid_infos.
DATA: l_obj TYPE REF TO lcl_dragdrop_obj_d0100,
ls_outtab TYPE g_ty_s_outtab.
CREATE OBJECT l_obj.
READ TABLE gt_outtab INTO ls_outtab INDEX e_row-index.
IF sy-subrc EQ 0.
l_obj->line = ls_outtab.
l_obj->index = e_row-index.
e_dragdropobj->object = l_obj.
ENDIF.
ENDFORM. " d0100_event_ondrag
&----
-
*& Form d0100_event_ondrop
&----
-
*text
*----
-
FORM d0100_event_ondrop USING e_row TYPE lvc_s_row
e_column TYPE lvc_s_col
e_dragdropobj TYPE REF TO
cl_dragdropobject.
"#EC *
DATA: l_text TYPE string.
CONCATENATE text-022
text-100 e_row-index
text-101 e_column-fieldname
INTO l_text SEPARATED BY space.
DATA: l_event TYPE lvc_fname. "#EC NEEDED
IF gs_test-info_popup_once EQ con_true.
READ TABLE gs_test-events_info_popup INTO l_event
WITH KEY table_line = 'ONDROP'.
IF sy-subrc NE 0.
INSERT 'ONDROP'
INTO gs_test-events_info_popup INDEX 1.
MESSAGE i000(0k) WITH l_text.
ENDIF.
ELSEIF gs_test-no_info_popup EQ space.
MESSAGE i000(0k) WITH l_text.
ENDIF.
PERFORM d0100_get_grid_infos.
DATA: l_obj TYPE REF TO lcl_dragdrop_obj_d0100,
ls_outtab TYPE g_ty_s_outtab.
CATCH SYSTEM-EXCEPTIONS move_cast_error = 1.
l_obj ?= e_dragdropobj->object.
ls_outtab = l_obj->line.
INSERT ls_outtab INTO gt_outtab INDEX e_row-index.
ENDCATCH.
IF sy-subrc EQ 0.
CALL METHOD e_dragdropobj->abort.
ENDIF.
ENDFORM. " d0100_event_ondrop
&----
-
*& Form d0100_event_ondropcomplete
&----
-
*text
*----
-
FORM d0100_event_ondropcomplete USING e_row TYPE lvc_s_row
e_column TYPE lvc_s_col
e_dragdropobj TYPE REF TO
cl_dragdropobject.
"#EC *
DATA: l_text TYPE string.
CONCATENATE text-023
text-100 e_row-index
text-101 e_column-fieldname
INTO l_text SEPARATED BY space.
DATA: l_event TYPE lvc_fname. "#EC NEEDED
IF gs_test-info_popup_once EQ con_true.
READ TABLE gs_test-events_info_popup INTO l_event
WITH KEY table_line = 'ONDROPCOMPLETE'.
IF sy-subrc NE 0.
INSERT 'ONDROPCOMPLETE'
INTO gs_test-events_info_popup INDEX 1.
MESSAGE i000(0k) WITH l_text.
ENDIF.
ELSEIF gs_test-no_info_popup EQ space.
MESSAGE i000(0k) WITH l_text.
ENDIF.
PERFORM d0100_get_grid_infos.
DATA: l_obj TYPE REF TO lcl_dragdrop_obj_d0100.
CATCH SYSTEM-EXCEPTIONS move_cast_error = 1.
l_obj ?= e_dragdropobj->object.
IF e_dragdropobj->effect = cl_dragdrop=>move.
DELETE gt_outtab INDEX l_obj->index.
ENDIF.
ENDCATCH.
CASE sy-subrc.
WHEN 0.
CALL METHOD gr_grid_d0100->refresh_table_display.
WHEN OTHERS.
CALL METHOD e_dragdropobj->abort.
ENDCASE.
ENDFORM. " d0100_event_ondropcomplete
&----
-
*& Form d0100_event_ondropgetflavor
&----
-
*text
*----
-
FORM d0100_event_ondropgetflavor . "#EC CALLED
DATA: l_event TYPE lvc_fname. "#EC NEEDED
IF gs_test-info_popup_once EQ con_true.
READ TABLE gs_test-events_info_popup INTO l_event
WITH KEY table_line = 'ONDROPGETFLAVOR'.
IF sy-subrc NE 0.
INSERT 'ONDROPGETFLAVOR' INTO gs_test-events_info_popup INDEX 1.
MESSAGE i000(0k) WITH text-024.
ENDIF.
ELSEIF gs_test-no_info_popup EQ space.
MESSAGE i000(0k) WITH text-024.
ENDIF.
PERFORM d0100_get_grid_infos.
ENDFORM. " d0100_event_ondropgetflavor
&----
-
*& Form d0100_event_button_click
&----
-
*text
*----
-
FORM d0100_event_button_click USING es_col_id TYPE lvc_s_col
es_row_no TYPE lvc_s_roid. "#EC *
DATA: l_text TYPE string,
l_row TYPE char10.
l_row = es_row_no-row_id.
CONCATENATE text-025
text-100 l_row
text-101 es_col_id-fieldname
INTO l_text SEPARATED BY space.
DATA: l_event TYPE lvc_fname. "#EC NEEDED
IF gs_test-info_popup_once EQ con_true.
READ TABLE gs_test-events_info_popup INTO l_event
WITH KEY table_line = 'BUTTON_CLICK'.
IF sy-subrc NE 0.
INSERT 'BUTTON_CLICK' INTO gs_test-events_info_popup INDEX 1.
MESSAGE i000(0k) WITH l_text.
ENDIF.
ELSEIF gs_test-no_info_popup EQ space.
MESSAGE i000(0k) WITH l_text.
ENDIF.
PERFORM d0100_get_grid_infos.
ENDFORM. " d0100_event_button_click
&----
-
*& Form d0100_event_onf1
&----
-
*text
*----
-
FORM d0100_event_onf1 USING e_fieldname TYPE lvc_fname
es_row_no TYPE lvc_s_roid
er_event_data TYPE REF TO cl_alv_event_data.
"#EC *
DATA: l_text TYPE string,
l_row TYPE char10.
l_row = es_row_no-row_id.
CONCATENATE text-026
text-100 l_row
text-101 e_fieldname
INTO l_text SEPARATED BY space.
DATA: l_event TYPE lvc_fname. "#EC NEEDED
IF gs_test-info_popup_once EQ con_true.
READ TABLE gs_test-events_info_popup INTO l_event
WITH KEY table_line = 'ONF1'.
IF sy-subrc NE 0.
INSERT 'ONF1' INTO gs_test-events_info_popup INDEX 1.
MESSAGE i000(0k) WITH l_text.
ENDIF.
ELSEIF gs_test-no_info_popup EQ space.
MESSAGE i000(0k) WITH l_text.
ENDIF.
PERFORM d0100_get_grid_infos.
ENDFORM. " d0100_event_onf1
&----
-
*& Form d0100_event_onf4
&----
-
*text
*----
-
FORM d0100_event_onf4 USING e_fieldname TYPE lvc_fname
e_fieldvalue TYPE lvc_value
es_row_no TYPE lvc_s_roid
er_event_data TYPE REF TO cl_alv_event_data
et_bad_cells TYPE lvc_t_modi
e_display TYPE char01. "#EC *
DATA: l_text TYPE string,
l_row TYPE char10.
l_row = es_row_no-row_id.
CONCATENATE text-027
text-100 l_row
text-101 e_fieldname
text-102 e_fieldvalue
INTO l_text SEPARATED BY space.
DATA: l_event TYPE lvc_fname. "#EC NEEDED
IF gs_test-info_popup_once EQ con_true.
READ TABLE gs_test-events_info_popup INTO l_event
WITH KEY table_line = 'ONF4'.
IF sy-subrc NE 0.
INSERT 'ONF4' INTO gs_test-events_info_popup INDEX 1.
MESSAGE i000(0k) WITH l_text.
ENDIF.
ELSEIF gs_test-no_info_popup EQ space.
MESSAGE i000(0k) WITH l_text.
ENDIF.
PERFORM d0100_get_grid_infos.
ENDFORM. " d0100_event_onf4
&----
-
*& Form d0100_enable_disable_menu
&----
-
*text
*----
-
FORM d0100_enable_disable_menu USING value(i_static_menu)
TYPE REF TO cl_ctmenu
value(i_ucomm)
TYPE sy-ucomm.
DATA: lt_func_attr TYPE ui_funcattr,
ls_func_attr TYPE uiattentry,
lt_fcodes TYPE ui_functions,
ls_fcode TYPE ui_func.
CALL METHOD i_static_menu->get_functions
IMPORTING
fcodes = lt_func_attr.
LOOP AT lt_func_attr INTO ls_func_attr.
ls_fcode = ls_func_attr-fcode.
APPEND ls_fcode TO lt_fcodes.
ENDLOOP.
CASE i_ucomm.
WHEN 'Enable'.
CALL METHOD i_static_menu->enable_functions
EXPORTING
fcodes = lt_fcodes.
WHEN 'Disable'.
CALL METHOD i_static_menu->disable_functions
EXPORTING
fcodes = lt_fcodes.
ENDCASE.
ENDFORM. " d0100_enable_disable_menu
&----
-
*& Form d0100_f4_fcode
&----
-
*text
*----
-
FORM d0100_f4_fcode CHANGING c_value TYPE lvc_s_fcat-fieldname.
DATA: lt_fcat TYPE lvc_t_fcat,
ls_fcat TYPE lvc_s_fcat.
PERFORM d0100_set_grid_fcat CHANGING lt_fcat.
DATA: lt_values TYPE TABLE OF seahlpres,
lt_fields TYPE TABLE OF dfies,
lt_return TYPE TABLE OF ddshretval,
ls_value TYPE seahlpres,
ls_field TYPE dfies,
ls_return TYPE ddshretval.
CLEAR ls_field.
ls_field-fieldname = 'FIELDNAME'.
ls_field-intlen = 30.
ls_field-leng = 30.
ls_field-outputlen = 30.
ls_field-scrtext_s = ls_field-fieldname.
ls_field-scrtext_m = ls_field-fieldname.
ls_field-scrtext_l = ls_field-fieldname.
ls_field-reptext = ls_field-fieldname.
APPEND ls_field TO lt_fields.
LOOP AT lt_fcat INTO ls_fcat WHERE tech EQ space.
ls_value-string = ls_fcat-fieldname.
APPEND ls_value TO lt_values.
ENDLOOP.
CALL FUNCTION 'F4IF_INT_TABLE_VALUE_REQUEST'
EXPORTING
ddic_structure = ' '
retfield = 'FIELDNAME'
pvalkey = ' '
dynpprog = ' '
dynpnr = ' '
dynprofield = ' '
stepl = 0
window_title = ' '
value = ' '
value_org = 'C'
multiple_choice = ' '
display = space
callback_program = ' '
callback_form = ' '
TABLES
value_tab = lt_values
field_tab = lt_fields
return_tab = lt_return
*DYNPFLD_MAPPING =
EXCEPTIONS
parameter_error = 1
no_values_found = 2
OTHERS = 3.
IF sy-subrc EQ 0 AND sy-subrc NE 3.
MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
ENDIF.
READ TABLE lt_return INTO ls_return
WITH KEY fieldname = 'FIELDNAME'.
IF sy-subrc EQ 0.
c_value = ls_return-fieldval.
ENDIF.
ENDFORM. " d0100_f4_fcode
&----
-
*& Form d0100_get_grid_infos
&----
-
*text
*----
-
FORM d0100_get_grid_infos .
DATA: lt_filtered_entries TYPE lvc_t_fidx.
CALL METHOD gr_grid_d0100->get_filtered_entries
IMPORTING
et_filtered_entries = lt_filtered_entries.
DATA: lt_filter TYPE lvc_t_filt.
CALL METHOD gr_grid_d0100->get_filter_criteria
IMPORTING
et_filter = lt_filter.
DATA: lt_fcat TYPE lvc_t_fcat.
CALL METHOD gr_grid_d0100->get_frontend_fieldcatalog
IMPORTING
et_fieldcatalog = lt_fcat.
DATA: lt_sort TYPE lvc_t_sort.
CALL METHOD gr_grid_d0100->get_sort_criteria
IMPORTING
et_sort = lt_sort.
ENDFORM. " d0100_get_grid_infos
&----
-
*& Form d0100_apply_filter
&----
-
*text
*----
-
FORM d0100_apply_filter .
DATA: lt_filter TYPE lvc_t_filt,
lt_filtered_entries TYPE lvc_t_fidx.
CALL METHOD gr_grid_d0100->get_filter_criteria
IMPORTING
et_filter = lt_filter.
CALL FUNCTION 'LVC_FILTER_APPLY'
EXPORTING
it_filter = lt_filter
*IT_VALUE_UNIT =
*IT_GROUPLEVELS =
*I_FILTER_FLAGNAME =
*I_TABNAME =
*I_TABNAME_SLAVE =
*I_SLAVE =
IMPORTING
et_filter_index = lt_filtered_entries
*ET_GROUPLEVELS_FILTER =
*ET_FILTER_INDEX_INSIDE =
TABLES
it_data = gt_outtab.
ENDFORM. " d0100_apply_filter
2008 Feb 25 7:28 AM
hi
good
You have to copy the standard pf status to a new one.
For this go to the ALV screen and take the menu System -> Status. (I do not access to the system now) then look for the standard pf status. Copy this to Z range and then add your new button.
Even you can do in this method
Create a GUI status.
Go to GUI Status->Application toolbar.
THen add the button by giving
Function text
Icon name
Icon text
Info. text
Fastpath
Then in PBO of the screen,
Just give in a module
set pf_status 'ZSTATUS'.
Here is an example for your question
TYPE-POOLS: slis.
DATA: i_qmel LIKE qmel OCCURS 0.
data v_repid type repid.
SELECT * FROM qmel INTO TABLE i_qmel.
v_repid = sy-repid.
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
I_CALLBACK_PROGRAM = v_repid
I_CALLBACK_PF_STATUS_SET = 'SET_PF_STATUS'
I_CALLBACK_USER_COMMAND = 'USER_COMMAND'
i_structure_name = 'QMEL'
TABLES
t_outtab = i_qmel
EXCEPTIONS
program_error = 1
OTHERS = 2.
IF sy-subrc 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
form set_pf_status using rt_extab type slis_t_extab.
set pf-status 'TEST'.
endform.
FORM user_command USING ucomm LIKE sy-ucomm
selfield TYPE slis_selfield.
data lv_ucomm type sy-ucomm.
lv_ucomm
= sy-ucomm.
CASE lv_ucomm.
WHEN 'BUTTON'. "Double Click line Item
call transaction 'MM01'.
endcase.
endform.
To Click on the you have to do in the following way
i_callback_user_command = 'USER_COMMAND'
form user_command using i_ucomm like sy-ucomm
is_selfield type slis_selfield.
case i_ucomm.
when 'XXXX'. "XXXX is the function code for new button
endcase.
endform.
For More info please refer the below links
Please refer the following
http://www.sap-basis-abap.com/abap/add-button-to-alv-toolbar-with-reuse-alv-list-display.htm
Thanks
mrutyun^
2008 Feb 25 7:33 AM
Hi
In order to add user command functioality to the ALV grid you need to perform the following steps:
1. Update 'REUSE_ALV_GRID_DISPLAY' FM call to include 'USER_COMMAND' FORM
2. Create 'USER_COMMAND' FORM
call function 'REUSE_ALV_GRID_DISPLAY'
exporting
i_callback_program = gd_repid
i_callback_top_of_page = 'TOP-OF-PAGE'
I_callback_user_command = 'USER_COMMAND' "see FORM
is_layout = gd_layout
it_fieldcat = fieldcatalog[]
i_save = 'X'
tables
t_outtab = it_ekko
exceptions
program_error = 1
others = 2.
----
FORM USER_COMMAND *
----
--> R_UCOMM *
--> RS_SELFIELD *
----
FORM user_command USING r_ucomm LIKE sy-ucomm
rs_selfield TYPE slis_selfield.
Check function code
CASE r_ucomm.
WHEN '&IC1'.
Check field clicked on within ALVgrid report
IF rs_selfield-fieldname = 'EBELN'.
Read data table, using index of row user clicked on
READ TABLE it_ekko INTO wa_ekko INDEX rs_selfield-tabindex.
Set parameter ID for transaction screen field
SET PARAMETER ID 'BES' FIELD wa_ekko-ebeln.
Sxecute transaction ME23N, and skip initial data entry screen
CALL TRANSACTION 'ME23N' AND SKIP FIRST SCREEN.
ENDIF.
ENDCASE.
ENDFORM.
In order modify PF_STATUS of ALV grid report you need to perform the following steps:
1. Update 'REUSE_ALV_GRID_DISPLAY' FM call to include:
i_callback_pf_status_set = 'SET_PF_STATUS' statement.
2. Create 'SET_PF_STATUS' FORM
3. Create pf_status (i.e. 'ZNEWSTATUS').
- It is recommend that you copy standard status'STANDARD' from function group SALV
and modify it accordingly. ALV standard function codes always start with '&'.
call function 'REUSE_ALV_GRID_DISPLAY'
exporting
i_callback_program = gd_repid
i_callback_top_of_page = 'TOP-OF-PAGE'
i_callback_pf_status_set = 'SET_PF_STATUS' "see FORM
is_layout = gd_layout
it_fieldcat = fieldcatalog[]
i_save = 'X'
tables
t_outtab = it_ekko
exceptions
program_error = 1
others = 2.
----
FORM SET_PF_STATUS *
----
FORM set_pf_status USING rt_extab TYPE slis_t_extab.
SET PF-STATUS 'ZNEWSTATUS'.
"Copy of 'STANDARD' pf_status from fgroup SALV
ENDFORM.
| User | Count |
|---|---|
| 3 | |
| 1 | |
| 1 | |
| 1 | |
| 1 | |
| 1 | |
| 1 | |
| 1 | |
| 1 | |
| 1 |