Текущее время: Вс, июл 27 2025, 08:36

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


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


ВНИМАНИЕ!

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



Начать новую тему Ответить на тему  [ Сообщений: 10 ] 
Автор Сообщение
 Заголовок сообщения: COMMIT
СообщениеДобавлено: Пт, сен 09 2011, 12:04 
Старший специалист
Старший специалист
Аватара пользователя

Зарегистрирован:
Пн, авг 03 2009, 15:37
Сообщения: 292
Откуда: Алматы
Пол: Мужской
Добрый день, коллеги.

Создаю документ ММ (Заявка к примеру), в EXIT-е меняю одно поле. Это поле храниться в Z таблице, счетчик. Т.е. на каждую позицию документа ММ надо это поле сохранять в БД(обновлять) - отрабатывает коммит ворк, чтоб на второй строке или при параллельном создании документа значение этого поля не повторялось.
Так вот, собственно вопрос заключается в том, правильно ли делать коммит ворк при еще не созданном документе? Или есть более правильные решения? В общем-то хотелось бы чтоб при создании документа значение этого поля генерировалось для каждой позиции, но при этом в случае если документ не сохранять откатить сохранение в Z таблицу.
Заранее всем спасибо за участие.

_________________
Все в этом мире стоит под сомнением, над сомнением – только google...


Пометить тему как нерешенную
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: COMMIT  Тема решена
СообщениеДобавлено: Пт, сен 09 2011, 12:31 
Гуру-эксперт
Гуру-эксперт
Аватара пользователя

Зарегистрирован:
Чт, ноя 11 2004, 16:25
Сообщения: 3109
Пол: Мужской
По-моему, так Вам нужно пересмотреть свою логику, так как Вы написали - не делается.

Почему просто не используете счетчик(SNRO)? Вам ведь нужно чтобы значение поля не повторялось или есть какие другие условия? Судя по тому что Вы написали, нужно просто использовать счетчик(SNRO) и коммитить данные в Z таблицу при сохранении заявки через модуль обновления(или, если не ошибаюсь, там даже уже есть экзит, который в обновлении выполняется), если заявка не сохраниться, в Z таблицу ничего не попадет.


Пометить тему как нерешенную
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: COMMIT
СообщениеДобавлено: Пт, сен 09 2011, 13:57 
Старший специалист
Старший специалист
Аватара пользователя

Зарегистрирован:
Пн, авг 03 2009, 15:37
Сообщения: 292
Откуда: Алматы
Пол: Мужской
Besa написал:
По-моему, так Вам нужно пересмотреть свою логику, так как Вы написали - не делается.

Почему просто не используете счетчик(SNRO)? Вам ведь нужно чтобы значение поля не повторялось или есть какие другие условия? Судя по тому что Вы написали, нужно просто использовать счетчик(SNRO) и коммитить данные в Z таблицу при сохранении заявки через модуль обновления(или, если не ошибаюсь, там даже уже есть экзит, который в обновлении выполняется), если заявка не сохраниться, в Z таблицу ничего не попадет.

Я все-таки немного не дописал условия выполнения. Присвоение не совсем счетчик, шаблон такой <счетчик без нолей> <буква при определенных условиях разная, в зависимости от выбранного материала>. Нужно сделать чтоб пользователь видел этот номер до сохранения документа а не после. Т.е. сгенерированный номер должен коммититься до сохранения при этом не задеть документ. Как такое правильно сделать понятия не имею. Может попробовать сделать коммит в параллельном процессе
Code:
STARTING NEW TASK '****'
?

_________________
Все в этом мире стоит под сомнением, над сомнением – только google...


Пометить тему как нерешенную
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: COMMIT
СообщениеДобавлено: Пт, сен 09 2011, 14:34 
Старший специалист
Старший специалист

Зарегистрирован:
Пн, апр 17 2006, 21:49
Сообщения: 299
Откуда: Москва
FeBO-Sh написал:
Может попробовать сделать коммит в параллельном процессе
Code:
STARTING NEW TASK '****'
?

плохая идея - может запись и не создастся к тому моменту, когда вам надо

P.S. если не удается пересмотреть логику, можно написать свое ведение объекта нумерации - хоть буквы, хоть цифры.


Пометить тему как нерешенную
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: COMMIT
СообщениеДобавлено: Пт, сен 09 2011, 14:47 
Гуру-эксперт
Гуру-эксперт
Аватара пользователя

Зарегистрирован:
Чт, ноя 11 2004, 16:25
Сообщения: 3109
Пол: Мужской
FeBO-Sh написал:
Я все-таки немного не дописал условия выполнения. Присвоение не совсем счетчик, шаблон такой <счетчик без нолей> <буква при определенных условиях разная, в зависимости от выбранного материала>. Нужно сделать чтоб пользователь видел этот номер до сохранения документа а не после. Т.е. сгенерированный номер должен коммититься до сохранения при этом не задеть документ. Как такое правильно сделать понятия не имею. Может попробовать сделать коммит в параллельном процессе
Code:
STARTING NEW TASK '****'
?
х
Ваше доп условие никак не мешает сделать как я написал. Все это можно решить через счетчик + экзит. Пользователь будет видеть номер до сохранения, другое дело что если произойдет отмена создания заявки, то конечно точно такого номера Вы больше не увидите... Почему номер должен коммитися?? зачем его в базу сажать до сохранения дока? Про STARTING NEW TASK не понял вообще.

Может задачу расскажете? Может найдутся другие решения...


Пометить тему как нерешенную
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: COMMIT
СообщениеДобавлено: Пт, сен 09 2011, 15:01 
Старший специалист
Старший специалист
Аватара пользователя

Зарегистрирован:
Пн, авг 03 2009, 15:37
Сообщения: 292
Откуда: Алматы
Пол: Мужской
Besa написал:
FeBO-Sh написал:
Я все-таки немного не дописал условия выполнения. Присвоение не совсем счетчик, шаблон такой <счетчик без нолей> <буква при определенных условиях разная, в зависимости от выбранного материала>. Нужно сделать чтоб пользователь видел этот номер до сохранения документа а не после. Т.е. сгенерированный номер должен коммититься до сохранения при этом не задеть документ. Как такое правильно сделать понятия не имею. Может попробовать сделать коммит в параллельном процессе
Code:
STARTING NEW TASK '****'
?
х
Ваше доп условие никак не мешает сделать как я написал. Все это можно решить через счетчик + экзит. Пользователь будет видеть номер до сохранения, другое дело что если произойдет отмена создания заявки, то конечно точно такого номера Вы больше не увидите... Почему номер должен коммитися?? зачем его в базу сажать до сохранения дока? Про STARTING NEW TASK не понял вообще.

Про STARTING NEW TASK я имел ввиду программно создать новый процесс и там в подпрограмме к примеру генерировать номер и коммитить. Я так полагаю коммит другого процесса не повлияет на операции другого процесса? Наверно я ошибаюсь.

Про SNRO, примерно вот это вы имеете ввиду?
1. В екзите EXIT_SAPLMEREQ_005 написать такой код:
Code:
CASE ...
WHEN '1'.
nr_range = '01'.
bukva = 'A'.
WHEN others.
nr_range = '02'.
bukva = 'B'.
ENDCASE.

CALL FUNCTION 'NUMBER_GET_NEXT'
  EXPORTING
    nr_range_nr             = nr_range
    object                  = 'ZTEST'
*   QUANTITY                = '1'
*   SUBOBJECT               = ' '
*   TOYEAR                  = '0000'
*   IGNORE_BUFFER           = ' '
  IMPORTING
    number                  = number
*   QUANTITY                =
    returncode              = returncode
  EXCEPTIONS
    interval_not_found      = 1
    number_range_not_intern = 2
    object_not_found        = 3
    quantity_is_0           = 4
    quantity_is_not_1       = 5
    interval_overflow       = 6
    buffer_overflow         = 7
    OTHERS                  = 8.
IF sy-subrc NE 0.
" MESSAGE TYPE 'E'.
RETURN.
ENDIF.
" Какие-то условия
CONCATENATE number bukrs INTO l_bednr SEPARATED space.
...


Цитата:
Может задачу расскажете? Может найдутся другие решения...

Ну задача в принципе не трудная, до создания документа генерировать номера (счетчик) + буковка по условию, главное чтоб эти присвоенные номера не повторялись в разных заявках. Вот и все ).

_________________
Все в этом мире стоит под сомнением, над сомнением – только google...


Пометить тему как нерешенную
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: COMMIT
СообщениеДобавлено: Пт, сен 09 2011, 15:35 
Гуру-эксперт
Гуру-эксперт
Аватара пользователя

Зарегистрирован:
Чт, ноя 11 2004, 16:25
Сообщения: 3109
Пол: Мужской
Задача понятная, решается просто, выше написано как.
STARTING NEW TASK отпадает.

Точного названия экзита не помню. Но в общих чертах, да, я имел в ввиду это + можно поднастроить сам объект номеров(подобъект).


Пометить тему как нерешенную
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: COMMIT
СообщениеДобавлено: Пт, сен 09 2011, 16:32 
Старший специалист
Старший специалист
Аватара пользователя

Зарегистрирован:
Пн, авг 03 2009, 15:37
Сообщения: 292
Откуда: Алматы
Пол: Мужской
Besa написал:
Задача понятная, решается просто, выше написано как.
STARTING NEW TASK отпадает.

Точного названия экзита не помню. Но в общих чертах, да, я имел в ввиду это + можно поднастроить сам объект номеров(подобъект).

Спасибо большое, Besa.
Возникает другая засада, что делать если на один объект диапазона нельзя создать два диапазона (01, 02) начинающие с номера 1 к примеру? Они будут пересекаться...

Неужели создавать еще один объект со своим диапазоном?

_________________
Все в этом мире стоит под сомнением, над сомнением – только google...


Пометить тему как нерешенную
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: COMMIT
СообщениеДобавлено: Пт, сен 09 2011, 16:57 
Старший специалист
Старший специалист

Зарегистрирован:
Пн, апр 17 2006, 21:49
Сообщения: 299
Откуда: Москва
FeBO-Sh написал:
Спасибо большое, Besa.
Возникает другая засада, что делать если на один объект диапазона нельзя создать два диапазона (01, 02) начинающие с номера 1 к примеру? Они будут пересекаться...

Неужели создавать еще один объект со своим диапазоном?

подобъект не поможет?


Пометить тему как нерешенную
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: COMMIT
СообщениеДобавлено: Пт, сен 09 2011, 17:20 
Гуру-эксперт
Гуру-эксперт
Аватара пользователя

Зарегистрирован:
Чт, ноя 11 2004, 16:25
Сообщения: 3109
Пол: Мужской
bossjohn написал(а):
FeBO-Sh написал:
Спасибо большое, Besa.
Возникает другая засада, что делать если на один объект диапазона нельзя создать два диапазона (01, 02) начинающие с номера 1 к примеру? Они будут пересекаться...

Неужели создавать еще один объект со своим диапазоном?

подобъект не поможет?

+1 Конечно поможет. :)

to FeBO-Sh, я ведь написал, смотрите подобъект, к Вашей задаче он там в самый раз :) Это как раз то, что Вы называете "bukva" у себя в коде, это доп ключ к вашему диапазону. Не нужно плодить объекты номеров.


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

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


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

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


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

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