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
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.
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 |
|---|---|
| 4 | |
| 2 | |
| 2 | |
| 1 | |
| 1 | |
| 1 | |
| 1 | |
| 1 | |
| 1 | |
| 1 |