Удав написал(а):
Покажите определение и вызов контейнера для ALV.
Code:
CLASS lcl_sudsprav_pos_event_handler DEFINITION.
PUBLIC SECTION.
METHODS:
handle_toolbar5 FOR EVENT toolbar OF cl_gui_alv_grid
IMPORTING e_object e_interactive ,
handle_user_command5 FOR EVENT user_command OF cl_gui_alv_grid
IMPORTING e_ucomm .
* handle_f4 FOR EVENT onf4 OF cl_gui_alv_grid
* IMPORTING e_fieldname e_fieldvalue es_row_no er_event_data,
* handle_hotspot_click FOR EVENT hotspot_click OF cl_gui_alv_grid
* IMPORTING e_row_id e_column_id es_row_no.
ENDCLASS. "lcl_dovgoods_pos_event_handler DEFINITION
Code:
CLASS lcl_sudsprav_pos_event_handler IMPLEMENTATION.
*** HANDLE_TOOLBAR ***
METHOD handle_toolbar5.
DATA: ls_button TYPE stb_button.
READ TABLE e_object->mt_toolbar WITH KEY function = '&LOCAL&APPEND'
INTO ls_button.
IF sy-subrc = 0.
ls_button-function = 'APPEND'.
MODIFY e_object->mt_toolbar FROM ls_button INDEX sy-tabix.
ENDIF.
READ TABLE e_object->mt_toolbar WITH KEY function = '&REFRESH'
INTO ls_button.
IF sy-subrc = 0.
ls_button-function = 'REFRESH'.
MODIFY e_object->mt_toolbar FROM ls_button INDEX sy-tabix.
ENDIF.
READ TABLE e_object->mt_toolbar WITH KEY function = '&LOCAL&DELETE_ROW'
INTO ls_button.
IF sy-subrc = 0.
ls_button-function = 'DELETE'.
MODIFY e_object->mt_toolbar FROM ls_button INDEX sy-tabix.
ENDIF.
IF gv_readonly_mode IS INITIAL.
CLEAR ls_button.
ls_button-function = 'ADDPOS'.
ls_button-text = 'Додати позиції'(002).
ls_button-quickinfo = 'Додати позиції'(002).
APPEND ls_button TO e_object->mt_toolbar.
ENDIF.
ENDMETHOD. "handle_toolbar
*** HANDLE_USER_COMMAND ***
METHOD handle_user_command5.
DATA: lt_index_sel TYPE lvc_t_row,
ls_index_sel TYPE lvc_s_row.
DATA: ls_dov_sudspravpos TYPE ty_dms_sudspravpos,
ls_sudpos TYPE ty_dms_sudspravpos,
ls_sudpos2 TYPE ty_dms_sudspravpos.
* ls_vbap TYPE vbap.
DATA: lt_return_tab TYPE TABLE OF ddshretval,
ls_return_tab TYPE ddshretval.
DATA: ls_purch_shlp TYPE zdms_doverenost_ebeln_shlp.
DATA: lt_fieldcat TYPE slis_t_fieldcat_alv,
ls_fieldcat TYPE slis_fieldcat_alv,
ls_layout TYPE slis_layout_alv,
ls_variant TYPE disvariant.
DATA: lv_lines TYPE i,
lv_posno TYPE zdms_dovposno.
CASE e_ucomm.
WHEN 'APPEND'.
DESCRIBE TABLE gt_dms_sudspravpos LINES lv_lines.
SORT gt_dms_sudspravpos BY posno ASCENDING.
READ TABLE gt_dms_sudspravpos INTO ls_sudpos INDEX lv_lines.
MOVE-CORRESPONDING: gs_draw TO ls_dov_sudspravpos.
ls_dov_sudspravpos-posno = ls_sudpos-posno + 1.
APPEND ls_dov_sudspravpos TO gt_dms_sudspravpos.
CALL METHOD gr_sud_pos->refresh_table_display.
WHEN 'DELETE'.
CALL METHOD gr_sud_pos->get_selected_rows
IMPORTING
et_index_rows = lt_index_sel.
READ TABLE lt_index_sel INTO ls_index_sel INDEX 1.
IF sy-subrc = 0.
DELETE gt_dms_sudspravpos INDEX ls_index_sel-index.
ENDIF.
CALL METHOD gr_sud_pos->refresh_table_display.
WHEN 'REFRESH'.
DATA: ls_dms_sudspravpos LIKE LINE OF gt_dms_sudspravpos.
LOOP AT gt_dms_sudspravpos INTO ls_dms_sudspravpos.
CLEAR: ls_dms_sudspravpos-nazvdvt.
SELECT SINGLE nazvdvt
INTO ls_dms_sudspravpos-nazvdvt
FROM zdms_nazvpost
WHERE nazvdv = ls_dms_sudspravpos-nazvdv.
MODIFY gt_dms_sudspravpos FROM ls_dms_sudspravpos.
ENDLOOP.
CALL METHOD gr_sud_pos->refresh_table_display.
ENDCASE.
ENDMETHOD. "handle_user_command
ENDCLASS. "lcl_sudsprav_pos_event_handler IMPLEMENTATION
Code:
IF gr_sud_pos IS NOT BOUND.
FREE: gt_sud_fieldcat,
gt_toolbar_excluding.
CLEAR: gs_layout,
gs_variant.
CALL FUNCTION 'LVC_FIELDCATALOG_MERGE'
EXPORTING
i_structure_name = 'ZDMS_SUD_POS_S'
CHANGING
ct_fieldcat = gt_sud_fieldcat
EXCEPTIONS
inconsistent_interface = 1
program_error = 2
OTHERS = 3.
READ TABLE gt_sud_fieldcat INTO gs_sud_fieldcat WITH KEY fieldname = 'DATA'.
gs_sud_fieldcat-edit = 'X'.
"gs_sud_fieldcat-f4availabl = 'X'.
MODIFY gt_sud_fieldcat FROM gs_sud_fieldcat INDEX sy-tabix.
READ TABLE gt_sud_fieldcat INTO gs_sud_fieldcat WITH KEY fieldname = 'NAZVDV'.
gs_sud_fieldcat-edit = 'X'.
MODIFY gt_sud_fieldcat FROM gs_sud_fieldcat INDEX sy-tabix.
READ TABLE gt_sud_fieldcat INTO gs_sud_fieldcat WITH KEY fieldname = 'PRIM'.
gs_sud_fieldcat-edit = 'X'.
MODIFY gt_sud_fieldcat FROM gs_sud_fieldcat INDEX sy-tabix.
DELETE gt_sud_fieldcat WHERE fieldname = 'DOKAR' OR
fieldname = 'DOKNR' OR
fieldname = 'DOKVR' OR
fieldname = 'DOKTL'.
APPEND cl_gui_alv_grid=>mc_fc_loc_copy TO gt_toolbar_excluding.
APPEND cl_gui_alv_grid=>mc_fc_loc_copy_row TO gt_toolbar_excluding.
APPEND cl_gui_alv_grid=>mc_fc_loc_paste TO gt_toolbar_excluding.
APPEND cl_gui_alv_grid=>mc_fc_loc_paste_new_row TO gt_toolbar_excluding.
APPEND cl_gui_alv_grid=>mc_fc_loc_insert_row TO gt_toolbar_excluding.
APPEND cl_gui_alv_grid=>mc_fc_loc_move_row TO gt_toolbar_excluding.
APPEND cl_gui_alv_grid=>mc_fc_info TO gt_toolbar_excluding.
APPEND cl_gui_alv_grid=>mc_fc_views TO gt_toolbar_excluding.
APPEND cl_gui_alv_grid=>mc_fc_find TO gt_toolbar_excluding.
APPEND cl_gui_alv_grid=>mc_fc_loc_cut TO gt_toolbar_excluding.
APPEND cl_gui_alv_grid=>mc_fc_loc_undo TO gt_toolbar_excluding.
APPEND cl_gui_alv_grid=>mc_fc_graph TO gt_toolbar_excluding.
APPEND cl_gui_alv_grid=>mc_fc_print TO gt_toolbar_excluding.
APPEND cl_gui_alv_grid=>mc_mb_export TO gt_toolbar_excluding.
* APPEND cl_gui_alv_grid=>mc_fc_refresh TO gt_toolbar_excluding.
gs_layout-zebra = 'X'.
gs_layout-cwidth_opt = 'X'.
gs_layout-sel_mode = 'A'.
gs_layout-box_fname = 'SEL'.
gs_variant-report = sy-repid.
CREATE OBJECT gr_sud_container
EXPORTING
container_name = gv_sud_806
EXCEPTIONS
cntl_error = 1
cntl_system_error = 2
create_error = 3
lifetime_error = 4
lifetime_dynpro_dynpro_link = 5
OTHERS = 6.
CREATE OBJECT gr_sud_pos
EXPORTING
i_parent = gr_sud_container
EXCEPTIONS
error_cntl_create = 1
error_cntl_init = 2
error_cntl_link = 3
error_dp_create = 4
OTHERS = 5.
CREATE OBJECT gr_sudsprav_pos_event_handler.
SET HANDLER gr_sudsprav_pos_event_handler->handle_user_command5 FOR gr_sud_pos.
SET HANDLER gr_sudsprav_pos_event_handler->handle_toolbar5 FOR gr_sud_pos.
"SET HANDLER gr_sudsprav_pos_event_handler->handle_f4 FOR gr_sud_pos.
CALL METHOD gr_sud_pos->set_table_for_first_display
EXPORTING
is_variant = gs_variant
i_save = 'A'
i_default = 'X'
is_layout = gs_layout
it_toolbar_excluding = gt_toolbar_excluding
CHANGING
it_outtab = gt_dms_sudspravpos[]
it_fieldcatalog = gt_sud_fieldcat
EXCEPTIONS
invalid_parameter_combination = 1
program_error = 2
too_many_lines = 3
OTHERS = 4.
ENDIF.