Текущее время: Пн, июл 21 2025, 03:16

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


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

Сейчас этот форум просматривают: Google [Bot]


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

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