T написал:
Нда..
Видимо только более-менее полный исходник может помочь разобраться..
Ну или кусок кода из дампа.
PS. Хоть уже и сетовали выше на каталог полей, но повторюсь, что больше всего на него похоже..
В дампе пишется You attempted to access an unassigned field symbol. Приводить дальше имхо нет смысла т.к. проблема в саповском коде. А вот код:
Code:
report abc.
call screen 100.
class LCL_EVENT_RECEIVER definition.
public section.
methods:
handle_data_changed
FOR EVENT data_changed OF cl_gui_alv_grid
IMPORTING er_data_changed.
endclass. "LCL_EVENT_RECEIVER
class lcl_event_receiver implementation.
method handle_data_changed.
perform handle_data_changed using er_data_changed.
endmethod.
endclass. "lcl_event_receiver.
DATA BEGIN OF gt_list OCCURS 0 .
INCLUDE STRUCTURE ZHR_KANDID.
DATA END OF gt_list .
DATA: EX TYPE tab OCCURS 100 WITH HEADER LINE,
gr_alvgrid type ref to cl_gui_alv_grid,
gc_custom_control_name type scrfname value 'CC_ALV',
gr_ccontainer type ref to cl_gui_custom_container,
gt_fieldcat type lvc_t_fcat,
gs_layout type lvc_s_layo,
pt_exclude type ui_functions,
ls_fcat type lvc_s_fcat,
ls_mod_cell type lvc_s_modi,
lv_value type lvc_value.
form handle_data_changed using ir_data_changed
type ref to cl_alv_changed_data_protocol.
SORT ir_data_changed->MT_MOD_CELLS BY ROW_ID.
LOOP AT ir_data_changed->MT_MOD_CELLS INTO LS_MOD_CELL.
call method ir_data_changed->get_cell_value
exporting i_row_id = ls_mod_cell-row_id
i_fieldname = 'data1'
importing e_value = lv_value.
ENDLOOP.
ENDFORM. " handle_data_changed
MODULE display_alv OUTPUT.
PERFORM display_alv.
ENDMODULE. " STATUS_0100 OUTPUT
FORM display_alv.
*контейнер
IF gr_alvgrid IS INITIAL .
create object gr_ccontainer
exporting
container_name = gc_custom_control_name.
endif.
*ALV
create object gr_alvgrid
exporting i_parent = gr_ccontainer.
*исключение ненужных кнопок:
perform exclude changing pt_exclude.
*настройка:
CLEAR ls_fcat.
ls_fcat-fieldname = 'abc'.
ls_fcat-seltext = 'Начало работы'.
ls_fcat-coltext = 'Начало работы'.
ls_fcat-inttype = 'C'.
ls_fcat-edit = 'X'. "Изменение возможно
ls_fcat-outputlen = 10.
APPEND ls_fcat TO gt_fieldcat.
*вызов
call method gr_alvgrid->set_table_for_first_display
exporting
it_toolbar_excluding = pt_exclude
changing
it_outtab = gt_list[]
it_fieldcatalog = gt_fieldcat.
*обработчик
data: gr_event_handler type ref to lcl_event_receiver.
create object gr_event_handler.
*call method gr_alvgrid->REGISTER_EDIT_EVENT
* exporting i_event_id = cl_gui_alv_grid=>mc_evt_enter.
set handler gr_event_handler->handle_data_changed for gr_alvgrid.
ENDFORM. " display_alv