Текущее время: Вс, июл 13 2025, 07:28

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


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


ВНИМАНИЕ!

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



Начать новую тему Ответить на тему  [ Сообщений: 8 ] 
Автор Сообщение
 Заголовок сообщения: Разбить запрос VA11 при создании
СообщениеДобавлено: Вт, сен 03 2013, 14:48 
Менеджер
Менеджер
Аватара пользователя

Зарегистрирован:
Ср, июн 13 2007, 16:36
Сообщения: 585
Откуда: Belarus
Пол: Мужской
Коллеги, прошу помощи зала.

Задача: при создании запроса через VA11 необходимо осуществить некоторую проверку и по результатам разбить запрос на несколько.

Как реализовывал:
- в USEREXIT_SAVE_DOCUMENT_PREPARE поставил точку расширения
- в ней сделал проверку
- обернул ФМ BAPI_SALESDOCU_CREATEFROMDATA в отдельный ФМ
- при проверке из внутренних таблиц удаляю всё лишнее, оставляю только для первого документа
- для остальных данных заполняю таблицы и вызываю свой ФМ

Грабли:
1. не даёт запустить свой ФМ в update task (валится в дамп, мотивируя что "реальная" блокировка в обновлении невозможна)
2. если же запускать не в update task, то сохраняет только тот документ, который создаётся через ФМ.

Вопрос: где собака порылась ?


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Разбить запрос VA11 при создании
СообщениеДобавлено: Ср, сен 04 2013, 09:30 
Специалист
Специалист

Зарегистрирован:
Пн, июл 12 2010, 11:43
Сообщения: 186
Добрый день.
У меня была похожая задача. Я победила дамп:
Попробуйте свой ФМ создать как
-МОДУЛЬ ОБНОВЛЕНИЯ
-ЗАПУСК ОТКЛАД.
И запустите через update task


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Разбить запрос VA11 при создании
СообщениеДобавлено: Ср, сен 04 2013, 10:27 
Почетный гуру
Почетный гуру
Аватара пользователя

Зарегистрирован:
Чт, сен 09 2004, 07:32
Сообщения: 777
Откуда: Москва
Пол: Мужской
Все "грабли" растут из попытки "впихнуть невпихуемое", а именно - засунуть в одну SAP LUW создание/изменение нескольких документов (бизнес-объектов). Это противоречит логике работы системы в принципе :)
Выход всегда один - разбить разные бизнес-объекты по разным SAP LUW.
Сделать это можно несколькими способами:
Способ 1 подсказала dev403k - фактически, в ее варианте "вторичные" документы приобретают статус статистических данных, отложенных на V2-Update.
Способ 2 заключается в генерации вторичных документов по событию в системе - например, создания первичного документа.
Оба способа относительно надежны, поскольку требуют контроля отсутствия ошибок вне исходной транзакции.

_________________
"Прежде чем сделать что-то, подумай, к чему это может привести..."


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Разбить запрос VA11 при создании
СообщениеДобавлено: Ср, сен 04 2013, 12:05 
Менеджер
Менеджер
Аватара пользователя

Зарегистрирован:
Ср, июн 13 2007, 16:36
Сообщения: 585
Откуда: Belarus
Пол: Мужской
dev403k, я изначально так и сделал, о чём и указал во вводной :wink: Получил вышеописанный дамп.
nicky555, воистину так. Меня в запарке немного сбило другое обстоятельство, а именно: там же вызываю ещё несколько ФМ-ников в update task, все отрабатывают нормально.
В итоге сделал по-старинке: ФМ вызываю не в update task, но внутри него БАПИшник вызываю с destination 'NONE' и т.д.
Может и не совсем спортивно, но работает. 8)


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Разбить запрос VA11 при создании
СообщениеДобавлено: Ср, сен 04 2013, 12:34 
Старший специалист
Старший специалист

Зарегистрирован:
Чт, окт 22 2009, 12:41
Сообщения: 473
Dzed Maroz написал:
В итоге сделал по-старинке: ФМ вызываю не в update task, но внутри него БАПИшник вызываю с destination 'NONE' и т.д.
Может и не совсем спортивно, но работает. 8)
А почему не спортивно?


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Разбить запрос VA11 при создании
СообщениеДобавлено: Ср, сен 04 2013, 12:42 
Менеджер
Менеджер
Аватара пользователя

Зарегистрирован:
Ср, июн 13 2007, 16:36
Сообщения: 585
Откуда: Belarus
Пол: Мужской
weise написал(а):
А почему не спортивно?

Ну, формально-то я ничего не нарушаю. Но на некоторых проектах доводилось узнавать о себе много нового от консультантов, которые смотрели код с такими конструкциями :wink:
Так что тут вопрос из разряда религиозных.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Разбить запрос VA11 при создании
СообщениеДобавлено: Ср, сен 04 2013, 13:15 
Старший специалист
Старший специалист

Зарегистрирован:
Чт, окт 22 2009, 12:41
Сообщения: 473
Просто я про эту конструкцию не могу сказать/вспомнить ничего плохого, наоборот - несколько раз очень выручала.
Так что, да, наверное это вопрос предпочтений.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Разбить запрос VA11 при создании
СообщениеДобавлено: Чт, сен 05 2013, 07:25 
Почетный гуру
Почетный гуру
Аватара пользователя

Зарегистрирован:
Чт, сен 09 2004, 07:32
Сообщения: 777
Откуда: Москва
Пол: Мужской
Пара нюансов при синхронном вызове функции по RFC-соединению NONE:
Вызов ФМ плодит новый контекст (область памяти, в которой работает процедура) на том же сервере приложений. В этом контексте и выполняется процедура. Причем контекст будет жить либо до завершения работы программы, установившей соединение, либо до ручного закрытия соединения (например, ФМ RFC_CONNECTION_CLOSE). Отсюда есть определенные ограничения:
1) Возможны взаимные блокировки;
2) Возможна перезапись данных контекста при повторном вызове;
3) Если ФМ генерит, например, динамическую программу (внутреннюю таблицу), то есть шанс упасть в дамп при достижении потолка динамической генерации при вызове в цикле - лечится закрытием соединения (см. выше).

_________________
"Прежде чем сделать что-то, подумай, к чему это может привести..."


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

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


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

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


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

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