По различным причинам, иногда приходиться делать следующий финт при загрузке данные в DSO.
1.Приходят записи
а.по определенным ключам из DSO цели считываются уже существующие значения, выставляется RECORDMODE = 'D', записи помещаются в результат
b.идет обработка пришедших строк, записи помещаются в результат
В принципе, всё хорошо работает. Но тут столкнулись с ситуацией, что дельта формируемая уже из целевой DSO может вызвать большие изменения в системе, при описанном подходе... хотя по факту изменений может и не быть...
В принципе, можно было бы реализовать внутри блока 1b разного рода проверки, на наличие идентичной записи... но читабельность кода была бы хуже, да и душа требовала чего то более универсального.
Как мне кажется был придуман интересный способ, как это сделать красиво :)
Схематично выглядит ~ следующее..
0. Объявляется сортированная таблица = RESULT_PAK с ключами по всем полям кроме RECORD
1.Приходят записи
а.по определенным ключам из DSO цели считываются уже существующие значения, выставляется RECORD = -1, записи помещаются в результат
b.идет обработка пришедших строк, RECORD = 1, записи помещаются в результат с помощью операнда COLLECT
c. Записи с
RECORD = 0 >> отбрасываются
RECORD = 1 >> RECORDMODE = SPACE
RECORD = -1>> RECORDMODE = 'D'
Вот так и живём... :)
Комментариев нет:
Отправить комментарий