Текущее время: Сб, июл 12 2025, 15:21

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


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

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


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

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