Posted: Wed Dec 26, 2007 10:46 pm Post subject: Прочитать следующий номер без NUMBER_GET_NEXT
Привет!
Поискал на форуме, но не нашел, как прочитать следующий номер без использования NUMBER_GET_NEXT. Эта функция не подходит, потому что сразу назначает номер. Мне нужна функция только для чтения, типа READ_NEXT_NUMBER. Код используется в user-exit, в котором назначенный номер еще неизвестен.
Age: 46 Joined: 05 Nov 2007 Posts: 725 Location: КраснАдар
Posted: Wed Dec 26, 2007 11:12 pm Post subject:
Я бы предложил использовать либо свой диапазон номеров, как вторичный ключ в расширении юзер-экзита, либо суррогатный ключ (ФМ GUID_CREATE или CREATE_GUID - сейчас не помню без системы). Это несколько усложнит получение данных (как я понимаю - некая Z-табличка в расширении системного объекта), но вполне работоспособно.
John Doe, спасибо за ответ.
Хочу уточнить, нам нужно использовать диапазон адресов, который использует SAP транзакция, потому что этот номер будет в дальнейшем присвоен документу. В user-exit он еще неизвестен.
Age: 46 Joined: 05 Nov 2007 Posts: 725 Location: КраснАдар
Posted: Wed Dec 26, 2007 11:51 pm Post subject:
Влад wrote:
В user-exit он еще неизвестен.
Часто когда используют расширения сталкиваются с проблемой отсутствия первичного ключа, так как юзер-эксит при сохранении отрабатывает до присвоения номера объекту. В этом случае структуру CI_* расширяемой таблицы можно дополнить полем вторичного ключа, к примеру MYUSERID, который будет выполнять роль первичного ключа в Z-таблицах собственных данных.
Пример, нужно расширить структуру инвестиционной заявки табличкой с целями инвестиционного проекта (собственные данные). Расширяем структуру CI_IMAK нужным полем ID. При сохранении получаем "искусственный" ключ и передаем его в свое поле расширения, одновременно сохраняем свои данные в собственные таблички с первичным ключом ID. Соответственно, в PBO юзер-экзита при редактировании или просмотре инвестиционной заявки делаем выборку из этих таблиц и выводим на подэкраны пользовательского расширения.
ЗЫ Извините, что много текста. Можно узнать цель получения будущего ключа?
John Doe, Ваша идея вообщем понятна, спасибо за совет.
Я пытаюсь подвязать функциональность Digital Signature при создании оповещения QM01. Тяжело привязать Digital Signature к документу, который в данный момент не существует.
ФМ NUMBER_GET_INFO возвращает текущее состояние интервала. Если увеличить NRIV- NRLEVEL на единицу, наверно это и будет следующим номером?
ФМ NUMBER_GET_INFO возвращает текущее состояние интервала. Если увеличить NRIV- NRLEVEL на единицу, наверно это и будет следующим номером?
Именно.
Не совсем - если в системе есть несколько диалоговых серверов и на них одновременно будет запрашиваться номер из диапазона, то добавление единицы не спасет.
Не совсем - если в системе есть несколько диалоговых серверов и на них одновременно будет запрашиваться номер из диапазона, то добавление единицы не спасет.
Уважаемый mike1, а что тогда делать, создавать свой объект блокировок?
Age: 46 Joined: 05 Nov 2007 Posts: 725 Location: КраснАдар
Posted: Fri Dec 28, 2007 2:11 pm Post subject:
mike1 wrote:
Не совсем - если в системе есть несколько диалоговых серверов и на них одновременно будет запрашиваться номер из диапазона, то добавление единицы не спасет.
Да, это скорее будет предполагаемым номером, что может в последующем привести к проблеме при сохранении в случае работы в многопользовательском режиме. Т.е. при запуске своей программы и использовании такой конструкции нужно "по-хорошему" блокировать ее запуск другими пользователями.
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.