Текущее время: Пт, июн 07 2024, 19:03

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


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


ВНИМАНИЕ!

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



Начать новую тему Ответить на тему  [ Сообщений: 2 ] 
Автор Сообщение
 Заголовок сообщения: Редактирование через ALV
СообщениеДобавлено: Пн, июн 27 2005, 10:38 
Менеджер
Менеджер
Аватара пользователя

Зарегистрирован:
Чт, апр 07 2005, 05:27
Сообщения: 621
Откуда: Москва
Пол: Мужской
Задача (ессно упрощаю несущественное)
Предоставить возможность редактировать таблицу, при этом показывая связанное поле в виде отдельного столбца.

Как это было реализовано
Смотреть тут, проще говоря - редактируемая таблица и справочник были связаны через view.

Появились доп требования:
Раширить на ширину окна редактируемое, отсортировать итп. Мораль - надо делать через красивую ALV.

Сделал через класс lcl_event_receiver, за прототип взят отчет BCALV_GRID_EDIT


Вопрос
Как проще всего сделать ALV с редактированием?
--------------------------------------------------
Возникшие проблемы:
1. Можно ли сделать сохранение "на автомате", вместо набора написанного ручками Update?
2. Как предоставить пользователям возможность редактировать только неключевые поля, но при этом при введении новой записи (кнопка с плюсиком) ессно ключевые поля должны быть редактируемыми?

Избранные куски кода приведу ниже


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пн, июн 27 2005, 10:42 
Менеджер
Менеджер
Аватара пользователя

Зарегистрирован:
Чт, апр 07 2005, 05:27
Сообщения: 621
Откуда: Москва
Пол: Мужской
Code:
CREATE OBJECT g_custom_container
       EXPORTING
          CONTAINER_NAME = 'BCALV_GRID_DEMO_0100_CONT1'.

CREATE OBJECT GRID1
       EXPORTING
         I_PARENT = g_custom_container.
* Подцепляем Listener для событий GRID-а
    CREATE OBJECT event_receiver.
    SET HANDLER event_receiver->handle_data_changed FOR grid1.

CALL METHOD grid1->set_table_for_first_display
             EXPORTING
                 I_STRUCTURE_NAME = 'ZZT_CUSTOMER_A'
                 I_SAVE = 'A'
                 IS_VARIANT = gs_variant


             CHANGING
                 IT_FIELDCATALOG = gt_fieldcat
                 IT_OUTTAB = it_main.
                 IT_SORT = it_sort.


........

    WHEN 'SAVE'.
      CALL METHOD grid1->check_changed_data
          IMPORTING e_valid = l_valid.
      if l_valid = 'X'.
        message i000(0k) with text-009.
      else.
        message i000(0k) with text-010.
      endif.

.................

  loop at rr_data_changed->mt_good_cells into ls_mod_cells.

    case ls_mod_cells-fieldname.
      when  'DATBI'.
        call method rr_data_changed->get_cell_value
                       exporting i_row_id = ls_mod_cells-row_id
                                 i_fieldname = ls_mod_cells-fieldname
                       importing e_value = l_carrid.

       call method rr_data_changed->get_cell_value
                       exporting i_row_id = ls_mod_cells-row_id
                                 i_fieldname = 'KUNNR'
                       importing e_value = l_kunnr.


        SELECT SINGLE *
            FROM zzt_customer
            WHERE kunnr = l_kunnr.

        zzt_customer-datbi = l_carrid.
        update zzt_customer.



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

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


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

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


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

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