Code: Alles auswählen.
* ------------------------------------------------------------------
* | |
* | Report Y_CL_GUI_ALV_GRID |
* | |
* |------------------------------------------------------------------
* | |
* | Dieses Programm ist eine DEMO für CL_GUI_ALV_GRID Benutzung. |
* | |
* |------------------------------------------------------------------
* | Anforderer: XXX |
* |------------------------------------------------------------------
* | Programmierer, Datum - Änderungen Datum |
* ------------------------------------------------------------------
REPORT y_cl_gui_alv_grid.
TABLES: makt.
*------------------------*
* Deklarationen *
*------------------------*
TYPES: BEGIN OF ty_auswertung,
matnr TYPE makt-matnr,
spras TYPE makt-spras,
maktx TYPE makt-maktx,
END OF ty_auswertung.
CLASS cl_event_handler DEFINITION DEFERRED.
DATA: gt_auswertung TYPE STANDARD TABLE OF ty_auswertung,
wa_auswertung TYPE TABLE OF ty_auswertung WITH HEADER LINE,
go_grid TYPE REF TO cl_gui_alv_grid,
go_cont TYPE REF TO cl_gui_custom_container,
gt_fcat TYPE lvc_t_fcat,
ok_code TYPE sy-ucomm,
go_event_handler TYPE REF TO cl_event_handler.
*----------------------------------------------------------------------*
* CLASS cl_event_handler DEFINITION
*----------------------------------------------------------------------*
CLASS cl_event_handler DEFINITION.
PUBLIC SECTION.
METHODS on_f4
FOR EVENT onf4 OF cl_gui_alv_grid
IMPORTING e_fieldname
es_row_no
er_event_data
et_bad_cells
e_display.
ENDCLASS. "cl_event_handler DEFINITION
*------------------------*
* Programmstart *
*------------------------*
*-----------------------------Selection-Screen-----------------------------*
SELECTION-SCREEN: BEGIN OF BLOCK param WITH FRAME TITLE text-001.
SELECT-OPTIONS: s_matnr FOR makt-matnr.
SELECTION-SCREEN: END OF BLOCK param.
*-----------------------------Datenverarbeitung-----------------------------*
START-OF-SELECTION.
SELECT matnr spras maktx
FROM makt
INTO CORRESPONDING FIELDS OF TABLE gt_auswertung
WHERE matnr IN s_matnr.
PERFORM fieldcat_create CHANGING gt_fcat.
IF gt_auswertung IS NOT INITIAL.
CALL SCREEN 0100.
ELSE.
LEAVE TO LIST-PROCESSING.
MESSAGE 'Keine Daten gefunden!' TYPE 'I'.
ENDIF.
*---------------------------------------------------------------------*
* Form fieldcat_create
*---------------------------------------------------------------------*
FORM fieldcat_create CHANGING pt_fcat TYPE lvc_t_fcat.
FIELD-SYMBOLS: <fs_fcat> TYPE lvc_s_fcat.
CALL FUNCTION 'LVC_FIELDCATALOG_MERGE'
EXPORTING
i_structure_name = 'MAKT'
CHANGING
ct_fieldcat = gt_fcat.
* Key-Felder, Editierbare Felder, Spaltenüberschriften
LOOP AT gt_fcat ASSIGNING <fs_fcat>.
CASE <fs_fcat>-fieldname.
WHEN 'MATNR'.
<fs_fcat>-key = 'X'.
<fs_fcat>-emphasize = 'X'.
WHEN 'SPRAS'.
<fs_fcat>-edit = 'X'.
<fs_fcat>-f4availabl = '1'.
ENDCASE.
ENDLOOP.
ENDFORM. "fieldcat_create
*---------------------------------------------------------------------*
* Form on_f4_help
*---------------------------------------------------------------------*
FORM on_f4_help USING p_e_fieldname row_id p_er_event_data TYPE REF TO cl_alv_event_data p_et_bad_cells p_e_display.
DATA: wa_spras TYPE STANDARD TABLE OF spras,
line TYPE char10,
return_tab TYPE TABLE OF ddshretval WITH HEADER LINE.
CLEAR wa_spras.
SELECT DISTINCT spras FROM makt INTO line.
APPEND line TO wa_spras.
ENDSELECT.
CALL FUNCTION 'F4IF_INT_TABLE_VALUE_REQUEST'
EXPORTING
retfield = 'SPRAS'
value_org = 'S'
dynpprog = sy-repid
dynpnr = sy-dynnr
TABLES
value_tab = wa_spras
return_tab = return_tab
EXCEPTIONS
parameter_error = 1
no_values_found = 2
OTHERS = 3.
READ TABLE gt_auswertung INTO wa_auswertung INDEX row_id.
IF return_tab-fieldval IS NOT INITIAL.
wa_auswertung-spras = return_tab-fieldval.
ENDIF.
MODIFY gt_auswertung FROM wa_auswertung.
CALL METHOD go_grid->refresh_table_display.
ENDFORM. "ON_F4_HELP
*---------------------------------------------------------------------*
* Form data_save
*---------------------------------------------------------------------*
FORM data_save.
* save data
ENDFORM. "data_save
*---------------------------------------------------------------------*
* Form alv_init
*---------------------------------------------------------------------*
FORM alv_init.
DATA: ls_layout TYPE lvc_s_layo,
lt_exclude TYPE ui_functions,
ls_exclude TYPE ui_func,
ls_sort TYPE lvc_s_sort,
it_sort TYPE lvc_t_sort,
ls_variant TYPE disvariant.
IF go_cont IS INITIAL.
* Dynpro Status zuordnen
SET PF-STATUS 'STAT_0100'.
* Custom Container erstellen
CREATE OBJECT go_cont
EXPORTING
container_name = 'CONT1_0100'.
* Grid dem Container zuordnen
CREATE OBJECT go_grid
EXPORTING
i_parent = go_cont.
* Event Handlers erstellen
CREATE OBJECT go_event_handler.
SET HANDLER go_event_handler->on_f4 FOR go_grid.
* Titel
ls_layout-grid_title = 'Materialart'.
* Layout: Spaltenoptimierung
ls_layout-cwidth_opt = 'X'.
* Sortierung
ls_sort-spos = '1'.
ls_sort-fieldname = 'MATNR'.
ls_sort-up = 'X'.
ls_sort-down = space.
ls_sort-group = 'X'.
ls_sort-comp = 'X'.
APPEND ls_sort TO it_sort.
* Mehrfachselektionen
ls_layout-sel_mode = 'A'.
* Layout-Variante des Users laden
ls_variant-report = sy-repid.
ls_variant-username = sy-uname.
* Grid erstellen
CALL METHOD go_grid->set_table_for_first_display
EXPORTING
is_layout = ls_layout
is_variant = ls_variant
i_save = 'A'
CHANGING
it_fieldcatalog = gt_fcat
it_outtab = gt_auswertung
it_sort = it_sort.
ELSE.
ENDIF.
ENDFORM. "alv_init
*---------------------------------------------------------------------*
* Form user_command
*---------------------------------------------------------------------*
FORM user_command.
CALL METHOD cl_gui_cfw=>dispatch.
CASE ok_code.
WHEN 'BACK'.
LEAVE TO LIST-PROCESSING AND RETURN TO SCREEN 0.
WHEN 'EXIT'.
LEAVE PROGRAM.
WHEN 'SAVE'.
PERFORM data_save.
ENDCASE.
CLEAR ok_code.
ENDFORM. "user_command
*----------------------------------------------------------------------*
* MODULE pbo_0100 OUTPUT
*----------------------------------------------------------------------*
MODULE pbo_0100 OUTPUT.
PERFORM alv_init.
ENDMODULE. "pbo_0100 OUTPUT
*----------------------------------------------------------------------*
* MODULE pai_0100 INPUT
*----------------------------------------------------------------------*
MODULE pai_0100 INPUT.
PERFORM user_command.
ENDMODULE. "pai_0100 INPUT
*----------------------------------------------------------------------*
* CLASS cl_event_handler IMPLEMENTATION
*----------------------------------------------------------------------*
CLASS cl_event_handler IMPLEMENTATION.
METHOD on_f4.
PERFORM on_f4_help USING e_fieldname
es_row_no-row_id
er_event_data
et_bad_cells
e_display.
er_event_data->m_event_handled = 'X'.
ENDMETHOD. "ON_F4
ENDCLASS. "cl_event_handler IMPLEMENTATION