Текущее время: Вс, авг 03 2025, 13:48

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


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


ВНИМАНИЕ!

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



Начать новую тему Ответить на тему  [ Сообщений: 8 ] 
Автор Сообщение
 Заголовок сообщения: Определение номера создаваемого документа
СообщениеДобавлено: Ср, окт 08 2008, 14:49 
Ассистент
Ассистент

Зарегистрирован:
Вт, дек 11 2007, 12:15
Сообщения: 31
Здравствуйте, коллеги. Нужен совет: у меня есть некий документ (можете представить себе sales order или delivery или еще что-то, все равно...). Создана транзакция, которая закладывает этот документ, по сути добавляет запись в таблицу... Так вот, как можно реализовать, чтобы только что созданный документ получал номер равный номеру предыдущего документа + 1? Как сделать это безопасным, чтобы два документа не могли получить один и тот же номер при одновременном создании? Или может делать INSERT с увеличением номера на 1 пока запись не вставится в таблицу?


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Определение номера создаваемого документа
СообщениеДобавлено: Ср, окт 08 2008, 14:53 
Гуру-эксперт
Гуру-эксперт
Аватара пользователя

Зарегистрирован:
Чт, ноя 11 2004, 16:25
Сообщения: 3109
Пол: Мужской
dmkm написал(а):
Здравствуйте, коллеги. Нужен совет: у меня есть некий документ (можете представить себе sales order или delivery или еще что-то, все равно...). Создана транзакция, которая закладывает этот документ, по сути добавляет запись в таблицу... Так вот, как можно реализовать, чтобы только что созданный документ получал номер равный номеру предыдущего документа + 1? Как сделать это безопасным, чтобы два документа не могли получить один и тот же номер при одновременном создании? Или может делать INSERT с увеличением номера на 1 пока запись не вставится в таблицу?

правильно будет создать диапозон номеров в SNRO и потом использовать Фм NUMBER_GET_NEXT для увеличения счетчика.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Ср, окт 08 2008, 15:12 
Ассистент
Ассистент

Зарегистрирован:
Вт, дек 11 2007, 12:15
Сообщения: 31
Большое спасибо. То что надо!


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Ср, окт 08 2008, 15:16 
Старший специалист
Старший специалист
Аватара пользователя

Зарегистрирован:
Пн, июн 25 2007, 17:37
Сообщения: 350
Пол: Мужской
Code:
Select single max( num_doc ) from tab into gen_num_doc .
gen_num_doc = gen_num_doc + 1.


Но если поле ключевое то документы с од. номером не создадутся а будут перетиратся!


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Ср, окт 08 2008, 15:35 
Директор
Директор
Аватара пользователя

Зарегистрирован:
Пн, дек 20 2004, 16:05
Сообщения: 1080
Откуда: 4.0B
Пол: Мужской
Valeriy написал:
Code:
Select single max( num_doc ) from tab into gen_num_doc .
gen_num_doc = gen_num_doc + 1.


Но если поле ключевое то документы с од. номером не создадутся а будут перетиратся!


Скорее будет дамп.

_________________
Я слышу и забываю,
Я вижу и помню долго,
Я делаю и — понимаю.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Ср, окт 08 2008, 15:41 
Старший специалист
Старший специалист
Аватара пользователя

Зарегистрирован:
Пн, июн 25 2007, 17:37
Сообщения: 350
Пол: Мужской
Lars написал:
Valeriy написал:
Code:
Select single max( num_doc ) from tab into gen_num_doc .
gen_num_doc = gen_num_doc + 1.


Но если поле ключевое то документы с од. номером не создадутся а будут перетиратся!


Скорее будет дамп.


Не будет перетирать я проверял (4.6)


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Ср, окт 08 2008, 15:53 
Директор
Директор
Аватара пользователя

Зарегистрирован:
Пн, дек 20 2004, 16:05
Сообщения: 1080
Откуда: 4.0B
Пол: Мужской
Valeriy написал:
Lars написал:
Valeriy написал:
Code:
Select single max( num_doc ) from tab into gen_num_doc .
gen_num_doc = gen_num_doc + 1.


Но если поле ключевое то документы с од. номером не создадутся а будут перетиратся!


Скорее будет дамп.


Не будет перетирать я проверял (4.6)

Смотря как Вы пишите. В стандарте чаще используется inset без подавления ошибки о повторяющихся ключах, что приводит к дампу.
Встречалось неоднократно при съезжании диапозонов номеров.

_________________
Я слышу и забываю,
Я вижу и помню долго,
Я делаю и — понимаю.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Ср, окт 08 2008, 15:56 
Старший специалист
Старший специалист
Аватара пользователя

Зарегистрирован:
Пн, июн 25 2007, 17:37
Сообщения: 350
Пол: Мужской
Lars написал:
Valeriy написал:
Lars написал:
Valeriy написал:
Code:
Select single max( num_doc ) from tab into gen_num_doc .
gen_num_doc = gen_num_doc + 1.


Но если поле ключевое то документы с од. номером не создадутся а будут перетиратся!


Скорее будет дамп.


Не будет перетирать я проверял (4.6)

Смотря как Вы пишите. В стандарте чаще используется inset без подавления ошибки о повторяющихся ключах, что приводит к дампу.
Встречалось неоднократно при съезжании диапозонов номеров.


Code:
MODIFY Z_TAB FROM TABLE i_doc_lines . COMMIT WORK. " Finish
Да делаю через modify да навернека при inserte будет дамп  :roll:  :lol:


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

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


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

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


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

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