+ Sapforum.Biz » Инструменты » ABAP - Инструментальные средстваТема:
|- BEGDA-ENDDA не перекрывались для PERNR




Автор Тема: BEGDA-ENDDA не перекрывались для PERNR  (Прочитано 654 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн Skif

  • Jr. Member
  • **
  • Сообщений: 721
  • Reputation Power: 0
  • Skif has no influence.
  • YearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYears
BEGDA-ENDDA не перекрывались для PERNR
« : Июль 04, 2017, 12:00:51 pm »
Привет,
Чисто программистская задачка. Наверняка сто раз решена - где-то - Ткните пальцем, плз :)
Не дать сохранить дублирующую PERNR запись с перекрывающимся интервалом. В смысле, т.к. они ключевые, то конечно матюкнётся на update. Но хотелось бы проверить до сохранения, выдать сообщение об ошибке с требованием проверить интервалы.

Оффлайн Uukrul

  • SAP ECC 6.0 Ehp(*)
  • Administrator
  • Epic Member
  • *****
  • Сообщений: 3 674
  • Reputation Power: 2
  • Uukrul barely matters.Uukrul barely matters.
  • Пол: Мужской
  • YearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYears
    • Sapforum.BIZ
Re: BEGDA-ENDDA не перекрывались для PERNR
« Ответ #1 : Июль 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. <все в порядке пересечения нет>.

Оффлайн ysichov

  • Newbie
  • *
  • Сообщений: 40
  • Reputation Power: 0
  • ysichov has no influence.
  • YearsYearsYearsYearsYearsYearsYears
Re: BEGDA-ENDDA не перекрывались для PERNR
« Ответ #2 : Июль 07, 2017, 10:58:38 am »
Добрый день! Подсмотрел алгоритм у самого SAP  когда-то :)

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

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



Оффлайн Uukrul

  • SAP ECC 6.0 Ehp(*)
  • Administrator
  • Epic Member
  • *****
  • Сообщений: 3 674
  • Reputation Power: 2
  • Uukrul barely matters.Uukrul barely matters.
  • Пол: Мужской
  • YearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYears
    • Sapforum.BIZ
Re: BEGDA-ENDDA не перекрывались для PERNR
« Ответ #3 : Июль 07, 2017, 11:33:50 am »
You are not allowed to view links. Register or Login
Добрый день! Подсмотрел алгоритм у самого SAP  когда-то :)
Юра, там условие, было следующее. Так что твой вариант мимо кассы получается, базу то трогать не хотят лишними нагрузками.
Цитировать
Но хотелось бы проверить до сохранения, выдать сообщение об ошибке

Оффлайн ysichov

  • Newbie
  • *
  • Сообщений: 40
  • Reputation Power: 0
  • ysichov has no influence.
  • YearsYearsYearsYearsYearsYearsYears
Re: BEGDA-ENDDA не перекрывались для PERNR
« Ответ #4 : Июль 07, 2017, 01:16:27 pm »
Олег, в варианте с RANGE используется  SELECT к таблице? или вся таблица загружена во внутреннюю память?


Оффлайн Uukrul

  • SAP ECC 6.0 Ehp(*)
  • Administrator
  • Epic Member
  • *****
  • Сообщений: 3 674
  • Reputation Power: 2
  • Uukrul barely matters.Uukrul barely matters.
  • Пол: Мужской
  • YearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYears
    • Sapforum.BIZ
Re: BEGDA-ENDDA не перекрывались для PERNR
« Ответ #5 : Июль 07, 2017, 01:49:26 pm »
You are not allowed to view links. Register or Login
Олег, в варианте с RANGE используется  SELECT к таблице? или вся таблица загружена во внутреннюю память?
Так я так понял данные по существующим интервалам у него уже где-то есть в переменных., так что RANGE просто используется для проверки без запроса к базе, хотя если конечно там HANA, то как бы все равно  8)