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

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


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

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


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

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