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

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


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

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


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

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