SAP R/3 форум ABAP консультантов
Russian ABAP Developer's Club

Home - FAQ - Search - Memberlist - Usergroups - Profile - Log in to check your private messages - Register - Log in - English
Blogs - Weblogs News

Прочитать следующий номер без NUMBER_GET_NEXT



 
Post new topic   Reply to topic    Russian ABAP Developer's Club Forum Index -> ABAP
View previous topic :: View next topic  
Author Message
Влад
Специалист
Специалист



Joined: 26 Dec 2007
Posts: 63

PostPosted: Wed Dec 26, 2007 10:46 pm    Post subject: Прочитать следующий номер без NUMBER_GET_NEXT Reply with quote

Привет!
Поискал на форуме, но не нашел, как прочитать следующий номер без использования NUMBER_GET_NEXT. Эта функция не подходит, потому что сразу назначает номер. Мне нужна функция только для чтения, типа READ_NEXT_NUMBER. Код используется в user-exit, в котором назначенный номер еще неизвестен.
Back to top
View user's profile Send private message
John Doe
Модератор
Модератор


Age: 46
Joined: 05 Nov 2007
Posts: 725
Location: КраснАдар

PostPosted: Wed Dec 26, 2007 11:12 pm    Post subject: Reply with quote

Я бы предложил использовать либо свой диапазон номеров, как вторичный ключ в расширении юзер-экзита, либо суррогатный ключ (ФМ GUID_CREATE или CREATE_GUID - сейчас не помню без системы). Это несколько усложнит получение данных (как я понимаю - некая Z-табличка в расширении системного объекта), но вполне работоспособно.
Back to top
View user's profile Send private message Blog
Влад
Специалист
Специалист



Joined: 26 Dec 2007
Posts: 63

PostPosted: Wed Dec 26, 2007 11:33 pm    Post subject: Reply with quote

John Doe, спасибо за ответ.
Хочу уточнить, нам нужно использовать диапазон адресов, который использует SAP транзакция, потому что этот номер будет в дальнейшем присвоен документу. В user-exit он еще неизвестен.
Back to top
View user's profile Send private message
John Doe
Модератор
Модератор


Age: 46
Joined: 05 Nov 2007
Posts: 725
Location: КраснАдар

PostPosted: Wed Dec 26, 2007 11:51 pm    Post subject: Reply with quote

Влад wrote:
В user-exit он еще неизвестен.

Часто когда используют расширения сталкиваются с проблемой отсутствия первичного ключа, так как юзер-эксит при сохранении отрабатывает до присвоения номера объекту. В этом случае структуру CI_* расширяемой таблицы можно дополнить полем вторичного ключа, к примеру MYUSERID, который будет выполнять роль первичного ключа в Z-таблицах собственных данных.
Пример, нужно расширить структуру инвестиционной заявки табличкой с целями инвестиционного проекта (собственные данные). Расширяем структуру CI_IMAK нужным полем ID. При сохранении получаем "искусственный" ключ и передаем его в свое поле расширения, одновременно сохраняем свои данные в собственные таблички с первичным ключом ID. Соответственно, в PBO юзер-экзита при редактировании или просмотре инвестиционной заявки делаем выборку из этих таблиц и выводим на подэкраны пользовательского расширения.

ЗЫ Извините, что много текста. Можно узнать цель получения будущего ключа?
Back to top
View user's profile Send private message Blog
John Doe
Модератор
Модератор


Age: 46
Joined: 05 Nov 2007
Posts: 725
Location: КраснАдар

PostPosted: Thu Dec 27, 2007 12:53 am    Post subject: Reply with quote

Если я Вас еще не переубедил - то текущий номер можно получить ФМ NUMBER_GET_INFO.
Back to top
View user's profile Send private message Blog
Влад
Специалист
Специалист



Joined: 26 Dec 2007
Posts: 63

PostPosted: Thu Dec 27, 2007 11:43 am    Post subject: Reply with quote

John Doe, Ваша идея вообщем понятна, спасибо за совет.
Я пытаюсь подвязать функциональность Digital Signature при создании оповещения QM01. Тяжело привязать Digital Signature к документу, который в данный момент не существует.


ФМ NUMBER_GET_INFO возвращает текущее состояние интервала. Если увеличить NRIV- NRLEVEL на единицу, наверно это и будет следующим номером?
Back to top
View user's profile Send private message
John Doe
Модератор
Модератор


Age: 46
Joined: 05 Nov 2007
Posts: 725
Location: КраснАдар

PostPosted: Thu Dec 27, 2007 11:59 am    Post subject: Reply with quote

Влад wrote:
ФМ NUMBER_GET_INFO возвращает текущее состояние интервала. Если увеличить NRIV- NRLEVEL на единицу, наверно это и будет следующим номером?

Именно.
Back to top
View user's profile Send private message Blog
mike1
Модератор
Модератор



Joined: 22 Nov 2007
Posts: 82

PostPosted: Fri Dec 28, 2007 1:38 pm    Post subject: Reply with quote

John Doe wrote:
Влад wrote:
ФМ NUMBER_GET_INFO возвращает текущее состояние интервала. Если увеличить NRIV- NRLEVEL на единицу, наверно это и будет следующим номером?

Именно.
Не совсем - если в системе есть несколько диалоговых серверов и на них одновременно будет запрашиваться номер из диапазона, то добавление единицы не спасет.
Back to top
View user's profile Send private message
Влад
Специалист
Специалист



Joined: 26 Dec 2007
Posts: 63

PostPosted: Fri Dec 28, 2007 2:00 pm    Post subject: Reply with quote

mike1 wrote:
Не совсем - если в системе есть несколько диалоговых серверов и на них одновременно будет запрашиваться номер из диапазона, то добавление единицы не спасет.


Уважаемый mike1, а что тогда делать, создавать свой объект блокировок?
Back to top
View user's profile Send private message
John Doe
Модератор
Модератор


Age: 46
Joined: 05 Nov 2007
Posts: 725
Location: КраснАдар

PostPosted: Fri Dec 28, 2007 2:11 pm    Post subject: Reply with quote

mike1 wrote:
Не совсем - если в системе есть несколько диалоговых серверов и на них одновременно будет запрашиваться номер из диапазона, то добавление единицы не спасет.

Да, это скорее будет предполагаемым номером, что может в последующем привести к проблеме при сохранении в случае работы в многопользовательском режиме. Т.е. при запуске своей программы и использовании такой конструкции нужно "по-хорошему" блокировать ее запуск другими пользователями.
Back to top
View user's profile Send private message Blog
Display posts from previous:   
Post new topic   Reply to topic    Russian ABAP Developer's Club Forum Index -> ABAP All times are GMT + 4 Hours
Page 1 of 1

 
Jump to:  
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum
You cannot attach files in this forum
You can download files in this forum


All product names are trademarks of their respective companies. SAPNET.RU websites are in no way affiliated with SAP AG.
SAP, SAP R/3, R/3 software, mySAP, ABAP, BAPI, xApps, SAP NetWeaver and any other are registered trademarks of SAP AG.
Every effort is made to ensure content integrity. Use information on this site at your own risk.