Текущее время: Пт, июл 18 2025, 22:34

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


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


ВНИМАНИЕ!

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



Начать новую тему Ответить на тему  [ Сообщений: 9 ] 
Автор Сообщение
 Заголовок сообщения: Помогите с LUW
СообщениеДобавлено: Вт, мар 07 2006, 12:36 
Ассистент
Ассистент

Зарегистрирован:
Пт, фев 17 2006, 16:43
Сообщения: 28
Здравствуйте,
мне необходимо спомощью удаленного вызова своего RFC создать одновременно и Заказа на поставку и собственно саму Поставку. Причем хотелось бы, чтобы создавались либо сразу оба объекта, либо не создавался ни один.

Вот текст RFC (ниже). Он замечательно работает в таком виде, однако Заказ комитится, даже если Поставка не создалась. Если же я не делаю комит, Поставка не видит только-что созданный Заказ (и соответственно не создается). Не подскажите, что здесь можно сделать?


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

Зарегистрирован:
Пт, фев 17 2006, 16:43
Сообщения: 28
CALL FUNCTION 'BAPI_PO_CREATE1'
EXPORTING
poheader = POHEADER
poheaderx = POHEADERX
IMPORTING
exppurchaseorder = PO_NUMBER
TABLES
return = RETURN
poitem = POITEM
poitemx = POITEMX
.
CALL FUNCTION 'BAPI_TRANSACTION_COMMIT' EXPORTING WAIT = 'N'.

CALL FUNCTION 'BAPI_GOODSMVT_CREATE'
EXPORTING
goodsmvt_header = GOODSMVT_HEADER
goodsmvt_code = GOODSMVT_CODE
IMPORTING
goodsmvt_headret = RE_NUMBER
TABLES
goodsmvt_item = GOODSMVT_ITEM
return = RETURN
.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Вт, мар 07 2006, 12:59 
Почетный гуру
Почетный гуру
Аватара пользователя

Зарегистрирован:
Чт, окт 06 2005, 16:44
Сообщения: 3080
Откуда: Москва
Удалять заказ, если поставка не создалась.
По другому - никак... :roll:

_________________
С уважением,
Удав.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Вт, мар 07 2006, 14:04 
Специалист
Специалист
Аватара пользователя

Зарегистрирован:
Вт, авг 17 2004, 16:09
Сообщения: 202
проверяешь return на наличие ошибок - если есть
BAPI_TRANSACTION_ROLLBACK - и выход
если нет - тода комит


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Вт, мар 07 2006, 14:34 
Почетный гуру
Почетный гуру
Аватара пользователя

Зарегистрирован:
Чт, окт 06 2005, 16:44
Сообщения: 3080
Откуда: Москва
2Snegurenok: в том то и дело, что первый шаг (создание заказа) отрабатывает без ошибок, проблема возникает на 2 шаге :)

_________________
С уважением,
Удав.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Вт, мар 07 2006, 16:22 
Специалист
Специалист
Аватара пользователя

Зарегистрирован:
Вт, авг 17 2004, 16:09
Сообщения: 202
Удав написал(а):
2Snegurenok: в том то и дело, что первый шаг (создание заказа) отрабатывает без ошибок, проблема возникает на 2 шаге :)


дык ты после первого не комить - а просто проверяй на ошибки - нету - пошли во второй этам - там нету комить - если нету ошибок - тоды комить


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Чт, мар 09 2006, 11:18 
Ассистент
Ассистент

Зарегистрирован:
Пт, фев 17 2006, 16:43
Сообщения: 28
2Snegurenok: Так в этом и вопрос. Если я не комичу после первого (только проверяю), то второй ругается, что Поставка к такому Заказу не возможна, потому что не видит результатов выполнения первого BAPI.

Что довольно странно. Насколько я понимаю, BAPI и делают без внутренних комитов, чтобы можно было вызывать их несколько подряд...


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Чт, мар 09 2006, 15:48 
Почетный гуру
Почетный гуру
Аватара пользователя

Зарегистрирован:
Чт, окт 06 2005, 16:44
Сообщения: 3080
Откуда: Москва
Snegurenok написал(а):
дык ты после первого не комить - а просто проверяй на ошибки - нету - пошли во второй этам - там нету комить - если нету ошибок - тоды комить

Так не получится.
Дело в том, что для создания поставки необходимо, чтобы заказ УЖЕ существовал в БД. Иначе не сформируются данные, необходимые для передачи в функцию создания поставки в режиме UPDATE TASK...
Поэтому commit после создания заказа обязателен.
И ничего странного здесь нет :)

_________________
С уважением,
Удав.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Чт, мар 09 2006, 18:08 
Ассистент
Ассистент

Зарегистрирован:
Пт, фев 17 2006, 16:43
Сообщения: 28
Так заказ то уже существует в БД - в служебных таблицах типа VBLOG, откуда он собственно потом и апдейтится :D.

Вопрос в том, зачем SAP это вообще делает? Почему он не может выполнить эти два BAPI в рамках одного рабочего процесса, соответственно храня все нужное ему где-нибудь в памяти. Тогда в рамках этого рабочего процесса заказа будет уже создан, в товремя как для остальной системы еще ничего бы не произошло....

Может мне как-нибудь хитро вызвать в set update task local...


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

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


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

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


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

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