Текущее время: Вт, июн 17 2025, 21:39

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


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

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


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

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