Текущее время: Сб, июл 19 2025, 08:58

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


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


ВНИМАНИЕ!

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



Начать новую тему Ответить на тему  [ Сообщений: 7 ] 
Автор Сообщение
 Заголовок сообщения: Редактируемый ALV-Grid: как построить дельта-таблицы для сохранения изменений?
СообщениеДобавлено: Чт, фев 13 2014, 03:31 
Старший специалист
Старший специалист
Аватара пользователя

Зарегистрирован:
Пн, авг 29 2011, 08:54
Сообщения: 318
Откуда: Владивосток, Россия
Пол: Мужской
Здравствуйте!

Возникла задача реализовать функционал для редактирования данных в ALV Grid c последующим сохранением в таблицу БД.
Опыта в АБАП мало, поэтому для примера взял отчет BCALV_EDIT_04, но там сразу наткнулся на ошибки в логике работы.

Никто не пытался реализовать что-то похожее именно с использованием дельта-таблиц для хранения истории изменения данных? Или может, где примеры внятные посмотреть можно?

_________________
У меня два правила:
1. Не говорить всего, что знаю.


Пометить тему как нерешенную
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Редактируемый ALV-Grid: как построить дельта-таблицы для сохранения изменений?  Тема решена
СообщениеДобавлено: Чт, фев 13 2014, 07:16 
Почетный гуру
Почетный гуру
Аватара пользователя

Зарегистрирован:
Чт, окт 06 2005, 16:44
Сообщения: 3080
Откуда: Москва
Зачем для этого дельта-таблицы?
Достаточно поля "индикатор изменений" и одной таблицы для удаленных записей.

_________________
С уважением,
Удав.


Пометить тему как нерешенную
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Редактируемый ALV-Grid: как построить дельта-таблицы для сохранения изменений?
СообщениеДобавлено: Чт, фев 13 2014, 09:01 
Старший специалист
Старший специалист
Аватара пользователя

Зарегистрирован:
Пн, авг 29 2011, 08:54
Сообщения: 318
Откуда: Владивосток, Россия
Пол: Мужской
Ну в принципе я уже тоже пошел по такому варианту. Еще раз повторюсь: опыта работы с редактируемым ALV нет, поэтому пока начал понимать логику его работы, три раза код переписал :-)

_________________
У меня два правила:
1. Не говорить всего, что знаю.


Пометить тему как нерешенную
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Редактируемый ALV-Grid: как построить дельта-таблицы для сохранения изменений?
СообщениеДобавлено: Чт, фев 13 2014, 14:55 
Почетный гуру
Почетный гуру
Аватара пользователя

Зарегистрирован:
Чт, сен 09 2004, 07:32
Сообщения: 777
Откуда: Москва
Пол: Мужской
коллеги, все придумано до нас :D
1) делаем структуру YZTAB, состоящую из include ZTAB (ваша таблица) и include ICDIND (индикатор изменения).
2) объявляем две внутренних таблицы LT_ZTAB_NEW & LT_ZTAB_OLD структуры YZTAB. Первую заполняем свежими данными перед сохранением, вторую - старыми данными в начале работы программы.
3) вызываем что-нибудь а-ля
Code:
  DATA: ld_result TYPE c.

  CALL METHOD cf_reca_storable=>get_change_indicator
    EXPORTING
      tablename              = 'ZTAB'
    IMPORTING
      RESULT                 = ld_result
    CHANGING
      table_new              = lt_ztab_new
      table_old              = lt_ztab_old
    EXCEPTIONS
      nametab_error          = 1
      wrong_structure_length = 2
      OTHERS                 = 3.
  IF sy-subrc <> 0.
*   Обработка ошибок
  ENDIF.

  IF ld_result <> 'F'.
*   Данные не изменены, обновлять ничего не нужно
  ENDIF.

Вот и все - в таблице LT_ZTAB_NEW имеем только измененные записи с заполненным индикатором KZ = {I,U,D}. Отдаем ее в свой ФМ обновления и радуемся жизни :)

P.S.: Для тех, у кого в системе нет заветного класса CF_RECA_STORABLE, жизнь немного усложнится - надо отсортировать таблицы по ключу и сравнить записи, расставив признак изменения. Можно также использовать для этого ФМ CHANGEDOCUMENT_PREPARE_TABLES.

_________________
"Прежде чем сделать что-то, подумай, к чему это может привести..."


Пометить тему как нерешенную
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Редактируемый ALV-Grid: как построить дельта-таблицы для сохранения изменений?
СообщениеДобавлено: Пт, фев 14 2014, 07:42 
Старший специалист
Старший специалист
Аватара пользователя

Зарегистрирован:
Пн, авг 29 2011, 08:54
Сообщения: 318
Откуда: Владивосток, Россия
Пол: Мужской
Так как в отчете необходимо редактировать несколько таблиц, и все они имеют разную структуру, я нарисовал класс-потомок ALV Grid'а, внутри которого уже реализуются все необходимые шаги по проверке данных при вводе, отслеживанию изменений и сохранению данных в соответствующие таблицы БД. Внутренние структуры и таблицы в классе практически все создаются динамически, поэтому, мне проще делать по пути, предложенному уважаемым Удавом.
В моем случае мне кажется, что перелопачивать две таблицы, чтобы найти 2-3 измененные записи, как-то нерационально. Хотя, вполне возможно, я ошибаюсь, так как сам занимаюсь PI, и в ABAP не силен (базовые знания). Вот поэтому и прошу совета у гуру :-).

_________________
У меня два правила:
1. Не говорить всего, что знаю.


Пометить тему как нерешенную
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Редактируемый ALV-Grid: как построить дельта-таблицы для сохранения изменений?
СообщениеДобавлено: Вт, апр 01 2014, 16:45 
Ассистент
Ассистент

Зарегистрирован:
Чт, мар 11 2010, 18:35
Сообщения: 33
Если в редактируемом АЛВ очень большая таблица(миллионы + много полей) и редактируются 2-5 полей, то некорректно создавать ещё и дельта-таблицу.
Память сессионная закончится раньше. В этом случае добавляю 2-5 технических полей со скопированными старыми значениями.
А при сохранении тупо анализирую совпадают вновь введённые значения или нет со старыми.


Пометить тему как нерешенную
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Редактируемый ALV-Grid: как построить дельта-таблицы для сохранения изменений?
СообщениеДобавлено: Ср, апр 02 2014, 11:00 
Старший специалист
Старший специалист
Аватара пользователя

Зарегистрирован:
Пн, ноя 01 2004, 12:17
Сообщения: 298
Пол: Мужской
Цитата:
Если в редактируемом АЛВ очень большая таблица(миллионы + много полей) и редактируются 2-5 полей, то некорректно создавать ещё и дельта-таблицу.


В этом случае некорректно создавать редактируемый АЛВ


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

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


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

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


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

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