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

Часовой пояс: 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 часа


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

Сейчас этот форум просматривают: Google [Bot]


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

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