Sapforum.Biz

Инструменты => ABAP - Инструментальные средства => Тема начата: Skif от Июль 04, 2017, 12:00:51 pm

Название: BEGDA-ENDDA не перекрывались для PERNR
Отправлено: Skif от Июль 04, 2017, 12:00:51 pm
Привет,
Чисто программистская задачка. Наверняка сто раз решена - где-то - Ткните пальцем, плз :)
Не дать сохранить дублирующую PERNR запись с перекрывающимся интервалом. В смысле, т.к. они ключевые, то конечно матюкнётся на update. Но хотелось бы проверить до сохранения, выдать сообщение об ошибке с требованием проверить интервалы.
Название: Re: BEGDA-ENDDA не перекрывались для PERNR
Отправлено: Uukrul от Июль 04, 2017, 09:41:42 pm
You are not allowed to view links. Register or Login
хотелось бы проверить до сохранения, выдать сообщение об ошибке с требованием проверить интервалы.
Сделать переменную типа RANGES в нее загнать интервалы? которые существуют (sign = I, option = BT, low = <начало>, high = <конец>), а дальше новый интервал проверить вхождение начала интервала и конца в этот RANGES если начало или конец входят в проверку то значит есть пересечение, т.е. типа if BEGDA-ENDDA in RANGES. <значит дата входит в один из диапазонов>. elseif BEGDA-BGNDA in RANGES. <дата входит в пересечение диапазона>. else. <все в порядке пересечения нет>.
Название: Re: BEGDA-ENDDA не перекрывались для PERNR
Отправлено: ysichov от Июль 07, 2017, 10:58:38 am
Добрый день! Подсмотрел алгоритм у самого SAP  когда-то :)

... where begda <= p_end
        and endda >= p_beg.

где p_beg , p_end - период нашей новой записи.


Название: Re: BEGDA-ENDDA не перекрывались для PERNR
Отправлено: Uukrul от Июль 07, 2017, 11:33:50 am
You are not allowed to view links. Register or Login
Добрый день! Подсмотрел алгоритм у самого SAP  когда-то :)
Юра, там условие, было следующее. Так что твой вариант мимо кассы получается, базу то трогать не хотят лишними нагрузками.
Цитировать
Но хотелось бы проверить до сохранения, выдать сообщение об ошибке
Название: Re: BEGDA-ENDDA не перекрывались для PERNR
Отправлено: ysichov от Июль 07, 2017, 01:16:27 pm
Олег, в варианте с RANGE используется  SELECT к таблице? или вся таблица загружена во внутреннюю память?

Название: Re: BEGDA-ENDDA не перекрывались для PERNR
Отправлено: Uukrul от Июль 07, 2017, 01:49:26 pm
You are not allowed to view links. Register or Login
Олег, в варианте с RANGE используется  SELECT к таблице? или вся таблица загружена во внутреннюю память?
Так я так понял данные по существующим интервалам у него уже где-то есть в переменных., так что RANGE просто используется для проверки без запроса к базе, хотя если конечно там HANA, то как бы все равно  8)