Текущее время: Пт, май 16 2025, 08:22

Часовой пояс: UTC + 3 часа


Правила форума


ВНИМАНИЕ!

Вопросы по SAP Query и Quick View - сюда



Начать новую тему Ответить на тему  [ Сообщений: 26 ]  На страницу Пред.  1, 2
Автор Сообщение
 Заголовок сообщения:
СообщениеДобавлено: Чт, ноя 03 2005, 17:47 
Гость
T написал:
Можно взглянуть на определение метода handle_data_changed?


Code:
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.


Принять этот ответ
Вернуться к началу
  
 
 Заголовок сообщения:
СообщениеДобавлено: Чт, ноя 03 2005, 17:57 
Почетный гуру
Почетный гуру
Аватара пользователя

Зарегистрирован:
Ср, май 04 2005, 16:29
Сообщения: 687
Откуда: Нижневартовск->Москва
Пол: Мужской
Нда..
Видимо только более-менее полный исходник может помочь разобраться..
Ну или кусок кода из дампа.

PS. Хоть уже и сетовали выше на каталог полей, но повторюсь, что больше всего на него похоже..


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Чт, ноя 03 2005, 18:56 
Гость
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



Принять этот ответ
Вернуться к началу
  
 
 Заголовок сообщения:
СообщениеДобавлено: Вс, ноя 06 2005, 08:54 
Гость
Если код действительно такой,

Цитата:
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.


то лучше бы имя поля писать в верхнем регистре.
В методе get_cell_value стоит assign component, а эта команда не
любит несоответствий в регистре.


Принять этот ответ
Вернуться к началу
  
 
 Заголовок сообщения:
СообщениеДобавлено: Вс, ноя 06 2005, 16:51 
Гость
MilAndAl1 написал(а):
Если код действительно такой,

Цитата:
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.


то лучше бы имя поля писать в верхнем регистре.
В методе get_cell_value стоит assign component, а эта команда не
любит несоответствий в регистре.


К сожалению, отчет вываливается в дамп до того как п/п handle_data_changed начинает выполняться....


Принять этот ответ
Вернуться к началу
  
 
 Заголовок сообщения:
СообщениеДобавлено: Вс, ноя 06 2005, 18:00 
Гость
Безумству храбрых поем мы песню!

Проблема решена не была, но благодаря переопределению каталога gt_fieldcat[]:
Code:
  CALL FUNCTION 'LVC_FIELDCATALOG_MERGE'
       EXPORTING
            i_structure_name       = 'ZHR_KANDID'
       CHANGING
            ct_fieldcat            = gt_fieldcat[]
       EXCEPTIONS
            inconsistent_interface = 1
            program_error          = 2
            OTHERS                 = 3.
  IF sy-subrc <> 0.
*--Exception handling
  ENDIF.

  LOOP AT gt_fieldcat INTO ls_fcat .
    CASE ls_fcat-fieldname .
      WHEN 'CITY' .
        ls_fcat-edit = 'X' .
        MODIFY gt_fieldcat FROM ls_fcat .
    ENDCASE .
  ENDLOOP .

... прога стала вываливаться в дамп на методе ir_data_changed->get_cell_value, т.е. значительно позже .
Я получаю данные без этого метода (ручками из таблички ls_mod_cell TYPE lvc_s_mod), :arrow: работает )


Принять этот ответ
Вернуться к началу
  
 
 Заголовок сообщения:
СообщениеДобавлено: Пн, ноя 07 2005, 10:20 
Почетный гуру
Почетный гуру
Аватара пользователя

Зарегистрирован:
Ср, май 04 2005, 16:29
Сообщения: 687
Откуда: Нижневартовск->Москва
Пол: Мужской
Если код такой (речь о длинном коде), то на каждом исполнении PBO создаётся новый объект грида и отображается в контейнере + в каталог полей попадает новое поле 'ABC'.
То есть IF gr_alvgrid IS INITIAL. ... ENDIF стоит заменить на CHECK gr_alvgrid IS INITIAL.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Вт, ноя 08 2005, 17:31 
Гость
T написал:
Если код такой (речь о длинном коде), то на каждом исполнении PBO создаётся новый объект грида и отображается в контейнере + в каталог полей попадает новое поле 'ABC'.
То есть IF gr_alvgrid IS INITIAL. ... ENDIF стоит заменить на CHECK gr_alvgrid IS INITIAL.


Гм, а какая разница?


Принять этот ответ
Вернуться к началу
  
 
 Заголовок сообщения:
СообщениеДобавлено: Вт, ноя 08 2005, 17:46 
Почетный гуру
Почетный гуру
Аватара пользователя

Зарегистрирован:
Ср, май 04 2005, 16:29
Сообщения: 687
Откуда: Нижневартовск->Москва
Пол: Мужской
В IF..ENDIF заключено только создание контейнера, а всё остальное (создание грида, включение поля в каталог полей, обработка событий) отрабатывает при каждом проходе PBO.
А CHECK не даст выполняться лишнему..


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Ср, ноя 09 2005, 09:24 
Старший специалист
Старший специалист
Аватара пользователя

Зарегистрирован:
Вт, авг 17 2004, 08:55
Сообщения: 331
Откуда: Украина, г.Мариуполь
Пол: Мужской
Как вариант: остальной кусок кода можно перенести внутрь иф-а - тогда никакой разницы между ифом и чеком действительно не будет.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Сб, ноя 12 2005, 12:00 
Гость
Спасибо :)


Принять этот ответ
Вернуться к началу
  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 26 ]  На страницу Пред.  1, 2

Часовой пояс: UTC + 3 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
cron
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB