Текущее время: Пн, авг 04 2025, 13:19

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


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


ВНИМАНИЕ!

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



Начать новую тему Ответить на тему  [ Сообщений: 22 ]  На страницу 1, 2  След.
Автор Сообщение
 Заголовок сообщения: Последовательный вызов двух бапи.
СообщениеДобавлено: Пн, май 12 2008, 13:02 
Гуру-модератор
Гуру-модератор
Аватара пользователя

Зарегистрирован:
Вт, май 17 2005, 13:35
Сообщения: 4871
Откуда: Москва
Пол: Мужской
Всем привет! Я так понимаю, похожие темы уже много раз обсуждалась, но ответа для себя я что-то не нашел.
Итак, ситуация такая.
вариант 1.
Code:
call fuction  BAPI_REQUISITION_RELEASE
call fuction BAPI_REQUISITION_CHANGE


Вторая бапишка ругается, что заявка еще заблокирована.
Пробую Вариант 2
Code:
call fuctionBAPI_REQUISITION_RELEASE
commit work and wait
call fuction BAPI_REQUISITION_CHANGE


Тоже не помогает :( Видимо потому, что в конце BAPI_REQUISITION_RELEASE уже стоит commit work но без wait.

В общем вопрос - как грамотно вызвать в данном случае две бапишки, чтобы они отработали строго одна за одной?

_________________
Удача - результат нашего желания (© А. Нортон)


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

Зарегистрирован:
Пн, сен 06 2004, 11:43
Сообщения: 1551
Пол: Мужской
BAPI_COMMIT ?

_________________
Ex ipso fonte bibere
Цитата:
Abyssus abyssum invocat
Dies diem docet
Ducunt volentem fata, nolentem trahunt

Estote prudentes sicut serpentes


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Последовательный вызов двух бапи.
СообщениеДобавлено: Пн, май 12 2008, 13:31 
Директор
Директор

Зарегистрирован:
Чт, июн 21 2007, 09:01
Сообщения: 904
Откуда: УЖ 15/2
Пол: Мужской
LKU написал:
Видимо потому, что в конце BAPI_REQUISITION_RELEASE уже стоит commit work но без wait.
Так там же есть параметр управляющий NO_COMMIT_WORK, т.е. можно и без commita внутри с
Code:
      CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
        EXPORTING
          WAIT = 'X'.
после запуска.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пн, май 12 2008, 13:34 
Гуру-модератор
Гуру-модератор
Аватара пользователя

Зарегистрирован:
Вт, май 17 2005, 13:35
Сообщения: 4871
Откуда: Москва
Пол: Мужской
Если вы про BAPI_TRANSACTION_COMMIT, то она внутри содержит тот же самый commit work and wait плюс считывание журнала сообщений, так что разницы, ИМХО, нет.

Но я утолько что нашел нотку Note 967440 - BAPI_REQUISITION_RELEASE(_GEN) with COMMIT WORK
Цитата:
Symptom
The following two BAPIs for the release of purchase requisitions execute a COMMIT WORK:
BAPI_REQUISITION_RELEASE
BAPI_REQUISITION_RELEASE_GEN.
However, the execution of the COMMIT WORK violates BAPI programming conventions.
Solution
The two BAPIs are extended with an optional parameter (NO_COMMIT_WORK). If the parameter is filled when it is called, the COMMIT WORK is not executed.


Вот такие пироги :)

_________________
Удача - результат нашего желания (© А. Нортон)


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Последовательный вызов двух бапи.
СообщениеДобавлено: Пн, май 12 2008, 13:38 
Гуру-модератор
Гуру-модератор
Аватара пользователя

Зарегистрирован:
Вт, май 17 2005, 13:35
Сообщения: 4871
Откуда: Москва
Пол: Мужской
Alex80 написал:
Так там же есть параметр управляющий NO_COMMIT_WORK, т.е. можно и без commita внутри с
Code:
      CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
        EXPORTING
          WAIT = 'X'.
после запуска.


Alex80, спасибо. Я сейчас с 4.7 работаю, и там как раз этого параметра еще нет. Ну сейчас нотку накатим и все будет ок.

_________________
Удача - результат нашего желания (© А. Нортон)


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Последовательный вызов двух бапи.
СообщениеДобавлено: Пн, май 12 2008, 13:42 
Директор
Директор

Зарегистрирован:
Чт, июн 21 2007, 09:01
Сообщения: 904
Откуда: УЖ 15/2
Пол: Мужской
LKU написал:
Alex80, спасибо. Я сейчас с 4.7 работаю, и там как раз этого параметра еще нет. Ну сейчас нотку накатим и все будет ок.
Сразу не заметил циферки справа :-)
Code:
  IF no_commit_work EQ space.                               "967440
    COMMIT WORK.
  ENDIF.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пн, май 12 2008, 14:26 
Гуру-модератор
Гуру-модератор
Аватара пользователя

Зарегистрирован:
Вт, май 17 2005, 13:35
Сообщения: 4871
Откуда: Москва
Пол: Мужской
Ну вот, только обрадовался и снова огорчение. Для BAPI_REQUISITION_RESET_RELEASE соотвествующей ноты нет, а COMMIT WORK в конце есть :(

Я конечно выставил сообщение в САП, но пока вопрос актуален - если в тексте бапи есть commit work без wait, можно ли добиться чтобы следующая бапишка дожидалась завершения работы предыдущей?

_________________
Удача - результат нашего желания (© А. Нортон)


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

Зарегистрирован:
Сб, сен 25 2004, 16:30
Сообщения: 1368
Откуда: Москва
Пол: Мужской
LKU написал:
Я конечно выставил сообщение в САП

Вот это зря. Works as designed. Смотрим описание асинхронных апдейтов.
Чтобы избежать проблем блокировки перед каждым BAPI (если вызываются цепочкой) ставим оператор SET UPDATE TASK LOCAL.

_________________
С уважением, Сергей Королев


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пн, май 12 2008, 15:10 
Гуру-модератор
Гуру-модератор
Аватара пользователя

Зарегистрирован:
Вт, май 17 2005, 13:35
Сообщения: 4871
Откуда: Москва
Пол: Мужской
Сергей, спасибо за совет, попробуем. Я как-то раз в хелпе к абапу смотрел описание SET UPDATE TASK LOCAL, сломал голову, но так и не понял как это должно работать.

Есть ли где-нибудь более понятное описание концепции всех этих SET UPDATE TASK LOCAL, SAP LUW и т.п?

А насчет "Works as designed", они сами честно написали "execution of the COMMIT WORK violates BAPI programming conventions". Вот пусть и исправляют :) Только долго ждать...

_________________
Удача - результат нашего желания (© А. Нортон)


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

Зарегистрирован:
Сб, сен 25 2004, 16:30
Сообщения: 1368
Откуда: Москва
Пол: Мужской
LKU написал:
Есть ли где-нибудь более понятное описание концепции всех этих SET UPDATE TASK LOCAL, SAP LUW и т.п?

Не сочтите за издевательство, но таки в хэлпе, в том числе в том, который по F1 в системе.
Works as designed касалось не этого BAPI, а вообще COMMIT+асинхронный апдейт+снятие блокировок.

_________________
С уважением, Сергей Королев


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пн, май 12 2008, 16:38 
Гуру-модератор
Гуру-модератор
Аватара пользователя

Зарегистрирован:
Вт, май 17 2005, 13:35
Сообщения: 4871
Откуда: Москва
Пол: Мужской
Да какое уж тут издевательство, буду разбираться.
Просто я думал, может в каком нибудь курсе есть пара картинок или примеров, которые помогут разобраться с этой концепцией.

_________________
Удача - результат нашего желания (© А. Нортон)


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пн, май 12 2008, 18:42 
Президент
Президент

Зарегистрирован:
Пт, апр 28 2006, 22:39
Сообщения: 2514
Откуда: North Taxolina, USA
Пол: Женский
LKU написал:
Есть ли где-нибудь более понятное описание концепции всех этих SET UPDATE TASK LOCAL, SAP LUW и т.п?


Есть курс BC414 (Programming Database Updates), но не знаю, насколько там понятно объяснено. Насчет LUW вот тут посмотрите:
http://sapboard.ru/forum/viewtopic.php?t=33320


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Вт, май 13 2008, 10:09 
Гуру-модератор
Гуру-модератор
Аватара пользователя

Зарегистрирован:
Вт, май 17 2005, 13:35
Сообщения: 4871
Откуда: Москва
Пол: Мужской
Большое спасибо всем откликнувшимся!
SET UPDATE TASK LOCAL перед вызовом бапишек помог.

_________________
Удача - результат нашего желания (© А. Нортон)


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Вт, май 13 2008, 14:54 
Специалист
Специалист

Зарегистрирован:
Чт, июн 21 2007, 09:14
Сообщения: 166
Откуда: Москва
Пол: Мужской
Jelena написала:
LKU написал:
Есть ли где-нибудь более понятное описание концепции всех этих SET UPDATE TASK LOCAL, SAP LUW и т.п?


Есть курс BC414 (Programming Database Updates), но не знаю, насколько там понятно объяснено. Насчет LUW вот тут посмотрите:
http://sapboard.ru/forum/viewtopic.php?t=33320


Конечно в BC414 всё понятно разжевано, как для дебилов, всё с картинками! Вобщем-то, как обычно в курсах BC*.

По вопросам ABAP изучайте курсы BC4*, там все есть и всё очень понятно.

В курсе BC414 можно прочитать, что без оператора SET UPDATE TASK LOCAL запросы обновления пишутся в таблицу БД VBLOG. При обновлении используется свой рабочий процесс для модулей обновления.
В случае SET UPDATE TASK LOCAL для запросов обновления используется память сервера приложений и для обновления используется текущий диалоговый процесс.
Это и есть самый что ни на есть синхронный метод обновления.

Соответственно, в данном случат бапишки будут выполняться строго одна за другой.

При использовании BAPI такое бывает нужно. Бывает, что поставишь COMMIT WORK AND WAIT (через BAPI_TRANSACTION_COMMIT), после выполнения BAPI делаешь SELECT из таблицы, куда бапишка заносит данные. А селект возвращает 4. Почему так происходит в системе - не совсем ясно. Смотрел по ST05, там показано, что сначала отрабатывает весь диалоговый процесс, а затем запускается программа обновления. Т.е. сначала происходит селект (до выполнения бапи), затем бапи.

Борьба со следствием этой проблемы - помогает использование как раз-таки SET UPDATE TASK LOCAL. Как бороться с причиной - неизвестно, т.к. неизвестна причина :) По крайней мере, для меня.
Может, кто знает?


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Вт, май 13 2008, 16:40 
Модератор
Модератор
Аватара пользователя

Зарегистрирован:
Пт, июн 16 2006, 00:43
Сообщения: 1686
Откуда: Москва <-> Красноярск
Пол: Мужской
Art386 написал:
Борьба со следствием этой проблемы - помогает использование как раз-таки SET UPDATE TASK LOCAL. Как бороться с причиной - неизвестно, т.к. неизвестна причина :) По крайней мере, для меня.
Может, кто знает?

Art386 написал:
Конечно в
SM50, если память не изменяет,
Art386 написал:
всё понятно разжевано, как для дебилов, всё с картинками! Вобщем-то, как обычно в курсах.


По существу: причина в том, что ваш диалоговый процесс и процесс, в котором выполняется обновление - асинхронны.

Результаты же ST05 вы просто неверно интерпритировали.


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 22 ]  На страницу 1, 2  След.

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


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

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


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

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