SAPфорум.RU
https://sapboard.ru/forum/

Редактирование в ALV
https://sapboard.ru/forum/viewtopic.php?f=13&t=4347
Страница 1 из 1

Автор:  Вольдемар [ Пт, апр 08 2005, 12:45 ]
Заголовок сообщения:  Редактирование в ALV

Имеется полноэкранная АЛВ (создана ф-ей REUSE_ALV_GRID_DISPLAY) Необходимо организовать редактирование "по месту". Я, конечно, понимаю, что надо бы отлавливать события. Но, например, slis_ev_data_changed возникает не после изменения конкретной ячейки, а... непонятно, по какому принципу... Да и как применять функцию-обработчик не разобрался :oops:
Подскажите, в какую сторону копать? Желательно, с примерами :)

Автор:  nicky555 [ Пт, апр 08 2005, 15:57 ]
Заголовок сообщения: 

Поищи по форуму - уже такое обсуждалось.
Смысл в отлове изменений в сетке в CALLBACK_USER_COMMAND по команде пользователя (например, "Сохранить").
Есть ФМ типа *LVC_GLOBALS_GET* (точно не помню названия :oops: ) - получаешь с его помощью ссылку на объект класса cl_gui_alv_grid. Дальше вызов метода для проверки изменений - это даст тебе обновление внутренней таблицы измененными значениями.

Автор:  Max Popenker [ Пт, апр 08 2005, 16:04 ]
Заголовок сообщения: 

Гррр. самый простой спсособ:

Code:
FORM display_alv.

  DATA: fieldcat TYPE SLIS_T_FIELDCAT_ALV,
        fc_str   TYPE SLIS_FIELDCAT_ALV,
        layout   TYPE SLIS_LAYOUT_ALV,
        title    TYPE LVC_TITLE,
        repid    LIKE sy-repid,
        variant  LIKE DISVARIANT
        .
  repid = sy-repid.
  layout-colwidth_optimize = 'X'.
  layout-edit = 'X'.
  variant-report = repid.

* create field catalog
  CALL FUNCTION 'REUSE_ALV_FIELDCATALOG_MERGE'
   EXPORTING
     I_PROGRAM_NAME          = repid
     I_INTERNAL_TABNAME      = 'ITAB'
     I_INCLNAME              = repid
    CHANGING
      CT_FIELDCAT            = fieldcat
   EXCEPTIONS
     INCONSISTENT_INTERFACE  = 1
     PROGRAM_ERROR           = 2
     OTHERS                  = 3
          .

* update field catalog (hide/reposition/etc)
  LOOP AT fieldcat INTO fc_str.

    CASE fc_str-fieldname.
      WHEN 'MARK'.
        fc_str-ddictxt   = 'M'.
        fc_str-seltext_m = 'Выводить'.
        fc_str-checkbox = 'X'.
        fc_str-edit = 'X'.
      WHEN 'LBKUM'.
        fc_str-input = 'X'.
        fc_str-edit = 'X'.
      WHEN 'VERPR'.
        fc_str-input = 'X'.
        fc_str-edit = 'X'.
      WHEN OTHERS.
        fc_str-input = ' '.
        fc_str-edit = ' '.
    ENDCASE.

    MODIFY fieldcat FROM fc_str.
  ENDLOOP.


  CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
   EXPORTING
     I_GRID_TITLE        = title
     IT_FIELDCAT         = fieldcat
     IS_LAYOUT           = layout
     I_SAVE              = 'A'
     IS_VARIANT          = variant
     I_CALLBACK_PROGRAM       = repid
     I_CALLBACK_PF_STATUS_SET = 'OUTPUTALV_STATUS'
     I_CALLBACK_USER_COMMAND  = 'OUTPUTALV_CMD'
    TABLES
      T_OUTTAB    = itab
   EXCEPTIONS
     PROGRAM_ERROR = 1
     OTHERS        = 2
  .
ENDFORM.


Весь перенос в itab делается автоматически :)
Одна фишка - нужно после нового ввода нажать ентер в поле, дабы грид отработал ввод и сделал перенос.

Автор:  Вольдемар [ Пт, апр 08 2005, 16:27 ]
Заголовок сообщения: 

Замечательно. То, что нужно! Но... Как я могу определить, какая запись у меня изменилась? Не лупиться же по всей таблице... :(

Автор:  Вольдемар [ Пт, апр 08 2005, 16:35 ]
Заголовок сообщения: 

Маленькое замечание - лучше установить layout-edit = ' '. Иначе юзер может писать даже в полях, которые закрыты на редактирование.

И ещё вопрос - а можно как-то запретить редактирование конкретных строк?

Автор:  MilAndAl1 [ Сб, апр 09 2005, 04:56 ]
Заголовок сообщения: 

Если надо, чтобы обновление таблицы происходило после изменений в
любой ячейке грида, то можешь поставить в структуре I_GRID_SETTINGS в поле EDT_CLL_CB значение X и будет тебе счастье
(вместе с хорошими тормозами, если таблица большая :D )



Code:
  ......

  ls_gridset-edt_cll_cb      = 'X'.

  ls_events-name = slis_ev_data_changed.
  ls_events-form  = 'ON_CHANGE'.
  append ls_events to lt_events.

  CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
    EXPORTING
       .....
      I_GRID_SETTINGS              = ls_gridset
      IT_EVENTS                    = lt_events
    TABLES
      .....
    EXCEPTIONS
      PROGRAM_ERROR             = 1
      OTHERS                    = 2.



FORM ON_CHANGE USING rr_data_changed type ref to
                                                   cl_alv_changed_data_protocol.
field-symbols <ft> type "твоя таблица".

assign rr_data_changed->mp_mod_rows->* to <ft>.

.......
обработка
.......
ENDFORM.


При изменении любой ячейки в гриде программа перейдет в форму
ON_CHANGE, а там уже делай что хочешь :twisted:

Автор:  Вольдемар [ Пн, апр 11 2005, 10:47 ]
Заголовок сообщения: 

Спасибо, это то, что нужно!
Но один вопрос остаётся -
Цитата:
а можно как-то запретить редактирование конкретных строк?

Автор:  MilAndAl1 [ Вт, апр 12 2005, 05:04 ]
Заголовок сообщения: 

Можно, но в REUSE_ALV_GRID_DISPLAY навряд ли :( .
Попробуй использовать REUSE_ALV_GRID_DISPLAY_LVC, а лучше
переписать используя класс CL_GUI_ALV_GRID.

У класса и у ФМ REUSE...._LVC в IS_LAYOUT есть поле STYLEFNAME, с его помощью можно запретить редактирование в любой ячейке грида. Пример в 4.6с - BCALV_EDIT_02 (подпрограмма FILL_CELLTAB)

Автор:  Ewcouni [ Ср, янв 18 2006, 18:44 ]
Заголовок сообщения:  re:

куплю бизнес бизнес план проекта идеи малого бизнеса бизнес план проекта поддержка бизнеса деревянные окна со стеклопакетами идеи домашнего бизнеса поддержка бизнеса бизнес курсы расчет стеклопакетов куплю бизнес начать бизнес идеи домашнего бизнеса куплю стеклопакет бизнес курсы поддержка бизнеса бизнес предложения цена стеклопакеты бизнес центры петербурга кредитование бизнеса бизнес журнал пластиковые стеклопакеты пример бизнес поддержка бизнеса примеры бизнес план поддержка малого бизнеса идеи малого бизнеса психология бизнеса поддержка малого бизнеса ремонт стеклопакетов бизнес туризм стеклопакет линия перспективный бизнес бизнес предложения институт бизнеса стоимость стеклопакета туристический бизнес бизнес образование примеры бизнес план стеклопакеты санкт петербург бизнес образование пластиковые стеклопакеты бизнес план проекта бизнес структуры примеры бизнес план кредитование малого бизнеса бизнес книга идеи бизнеса модельный бизнес инвестиция бизнеса бизнес туризм примеры бизнес план куплю бизнес бизнес сайт бизнес курсы бизнес справочник безопасность бизнеса куплю стеклопакет новые бизнес идеи цена стеклопакеты бизнес предложения изготовление стеклопакетов начать бизнес новые бизнес идеи поддержка малого бизнеса домашний бизнес организовать бизнес бизнес проектов куплю бизнес новые бизнес идеи бизнес структуры деревянные окна со стеклопакетами безопасность бизнеса технология стеклопакетов бизнес тренинги цена стеклопакеты поддержка бизнеса стеклопакет стекло идеи домашнего бизнеса бизнес тренинги бизнес журнал организовать бизнес куплю бизнес окна стеклопакеты бизнес справочник бизнес санкт петербург бизнес петербург бизнес санкт петербург инвестиция бизнеса бизнес проектов производство оборудование стеклопакет кредитование бизнеса производство оборудование стеклопакет институт бизнеса стеклопакет москва бизнес справочник производители стеклопакета бизнес петербург стеклопакеты продажа бизнес журнал стеклопакеты спб стеклопакет стекло стеклопакет линия стеклопакет стекло ремонт стеклопакетов стеклопакет оборудование жалюзи стеклопакеты деревянные окна со стеклопакетами окна деревянные стеклопакет стеклопакеты стеклопакеты продажа домашний бизнес стоимость стеклопакета идеи бизнеса стеклопакеты монтаж безопасность бизнеса окна стеклопакеты институт бизнеса пластиковые стеклопакеты институт бизнеса

Автор:  Гость [ Чт, фев 02 2006, 00:44 ]
Заголовок сообщения:  re:

готовые фирмы лицензия регистрация компаний ликвидация филиала ремонт фотоаппаратов регистрация пбоюл цветок розы государственная регистрация юридических лиц готовые фирмы со готовые фирмы со регистрация ооо документы ликвидация фирмы перерегистрация фирм регистрация ооо документы ликвидация компаний ликвидация фирмы бизнес букет ликвидация филиала регистрация предпринимателей готовые фирмы лицензия готовые фирмы строительные лицензии ликвидация компаний готовые фирмы лицензия готовые ооо скачать ремонт регистрация ооо документы регистрация юридических лиц перерегистрация ооо ремонт мониторов юр лицо регистрация ремонт оборудования ликвидация фирмы ремонт двигателя перерегистрация ооо 2006 готовый бизнес предприятия регистрация общества перерегистрация предприятий свадебные букеты ликвидация филиала комнатные цветы доставка букетов ткань цветы ликвидации лица под цветы гарантийный ремонт букет невесты картинки цветов ткани цветы цветы доставка салоны цветов ремонт двигателя искусственные цветы ремонт цветы доставка ремонт мониторов заказ букетов под цветы бизнес букет ремонт открытки цветы ремонт офисов ткань цветы ремонт двигателя доставка букетов бизнес букет доставка букетов открытки цветы салоны цветов ликвидации лица букет цветов ремонт советы купить цветы готовый бизнес предприятия продажа цветов ликвидация предприятий искусственные цветы под цветы искусственные цветы готовый бизнес предприятия символика цветов салоны цветов магазин цветов готовые предприятия доставка цветов регистрация компаний каталог цветов интерьеры цветами заказ цветов ремонт офисов интерьеры цветами готовые фирмы форум ремонт перерегистрация ооо ремонт советы ремонт мониторов кузовной ремонт ремонт автомобилей гарантийный ремонт свадебный букет ремонт стиральных машин перерегистрация ооо 2006 ремонт ноутбуков картинки цветы ремонт машин цветы доставка ремонт техники картинки цветов ремонт сотовых телефонов перерегистрация предприятий ремонт машин регистрация юридических лиц ремонт ванной ремонт стиральных ремонт квартиры готовые строительные фирмы ремонт автомобилей регистрация ооо документы кузовной ремонт продажа готовых фирм ремонт квартиры комнатные цветы

Автор:  Гость [ Чт, фев 02 2006, 08:21 ]
Заголовок сообщения:  re:

ремонт стиральных без рекламы ремонт квартиры курсовая реклама ремонт обслуживание ремонт мониторов ремонт автомобилей ремонт двигателя руководство ремонт реклама маркетинг ремонт обслуживание без рекламы отделка ремонт реклама шанс ремонт обуви реклама sony ремонт квартиры ремонт мониторов ремонт холодильников ремонт блока ремонт мониторов реклама соков форум ремонт ремонт обуви ремонт стиральных ремонт автомобилей ремонт изготовление рекламы ремонт книг ремонт москва руководство ремонт реклама газеты ремонт книг наружная реклама ремонт книг законы рекламы ремонт машин гарантийный ремонт ремонт квартиры ремонт компьютеров рефераты реклама ремонт обслуживание типография психология рекламы реклама pr ремонт двигателя рынок рекламы менеджер рекламы без рекламы ремонт техники менеджер рекламы ремонт двигателя скачать рекламу бесплатная реклама реклама менеджер рекламы эффективность рекламы ремонт принтеров радио реклама психология рекламы музыка реклама скачать рекламу примеры рекламы изготовление рекламы реклама сайта реклама шанс реклама сми ремонт ноутбуков реклама сайта ремонт холодильников виды рекламы ремонт сотовых виды рекламы скачать ремонт курсовая реклама форум ремонт реклама пива ремонт автомобилей реклама газеты кузовной ремонт реклама pr ремонт телефонов законы рекламы ремонт стиральных машин бесплатная реклама ремонт автомобилей законы рекламы гарантийный ремонт без рекламы без рекламы реклама соков ремонт часов реклама ремонт оборудования реклама маркетинг ремонт ваз интернет реклама реклама москва музыка реклама ремонт стиральных машин типография ремонт фотоаппаратов история рекламы бытовой ремонт особенности рекламы бытовой ремонт менеджер рекламы рефераты реклама менеджер рекламы ремонт сотовых телефонов виды рекламы реклама шанс менеджер рекламы реклама шанс наружная реклама радио реклама реклама газеты ремонт холодильников реклама sony типографии москвы

Автор:  sonics [ Вт, июл 25 2017, 11:58 ]
Заголовок сообщения:  Re:

MilAndAl1 написал(а):
Можно, но в REUSE_ALV_GRID_DISPLAY навряд ли :( .
Попробуй использовать REUSE_ALV_GRID_DISPLAY_LVC, а лучше
переписать используя класс CL_GUI_ALV_GRID.

У класса и у ФМ REUSE...._LVC в IS_LAYOUT есть поле STYLEFNAME, с его помощью можно запретить редактирование в любой ячейке грида. Пример в 4.6с - BCALV_EDIT_02 (подпрограмма FILL_CELLTAB)


не совсем понял как происходит блокирование редактирования ячеек. в этом примере все ячейки закрыты же для редактирования.

Автор:  Besa [ Вт, авг 29 2017, 15:57 ]
Заголовок сообщения:  Re: Re:

sonics написал(а):
MilAndAl1 написал(а):
Можно, но в REUSE_ALV_GRID_DISPLAY навряд ли :( .
Попробуй использовать REUSE_ALV_GRID_DISPLAY_LVC, а лучше
переписать используя класс CL_GUI_ALV_GRID.

У класса и у ФМ REUSE...._LVC в IS_LAYOUT есть поле STYLEFNAME, с его помощью можно запретить редактирование в любой ячейке грида. Пример в 4.6с - BCALV_EDIT_02 (подпрограмма FILL_CELLTAB)


не совсем понял как происходит блокирование редактирования ячеек. в этом примере все ячейки закрыты же для редактирования.

В каком в этом?
BCALV_EDIT_02 там есть переключатель режима редактирования, там на уровне ячеек идет управление вводом.
Если делаете все через ФМ, то это тоже решается, но все таки лучше использовать класс.
Принцип простой - структура Вашей результирующей таблицы должна содержать вложенную внутреннюю таблицу, где ведется управление стилями на уровне ячеек, через указание имя поля.

Страница 1 из 1 Часовой пояс: UTC + 3 часа
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
http://www.phpbb.com/