Текущее время: Пт, авг 01 2025, 14:17

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


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


ВНИМАНИЕ!

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



Начать новую тему Ответить на тему  [ Сообщений: 21 ]  На страницу 1, 2  След.
Автор Сообщение
 Заголовок сообщения: Вызов ФМ с заполнением внутренних переменных, не описанных как входные параметры.
СообщениеДобавлено: Пт, июл 17 2009, 09:29 
Специалист
Специалист

Зарегистрирован:
Пт, фев 16 2007, 09:49
Сообщения: 157
Есть ФМ "SUSR_USER_MAINT_WITH_DIALOG". Он вызывается при запуске транзакции SU01. Задача - запустить его и передать ему те значения переменных, которые не описаны как входные, но описаны как внутренние. Возможно ли такое? То есть, в основной программе сэмулировать работу отладчика: остановить выполнение вызываемого ФМ на строчке такой-то, поменять значения таблиц и продолжить выполнение дальше. Это нужно для вызова экрана ФМ с уже заполненными данными. Можно конечно просто повырезать нужные куски кода этого ФМ, но их много, а хотелось бы сделать код более компактным.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Вызов ФМ с заполнением внутренних переменных, не описанных как входные параметры.
СообщениеДобавлено: Пт, июл 17 2009, 09:34 
Специалист
Специалист
Аватара пользователя

Зарегистрирован:
Пн, сен 17 2007, 10:48
Сообщения: 190
Откуда: Нальчик, РФ
Пол: Мужской
Code:
field-symbols: <is> type any,
               <it> type any table.

assign ('(PROG_NAME)PARAMETR_NAME') to <is>.
assign ('(PROG_NAME)TABLE_NAME[]') to <it>.

:)

_________________
С уважением, Сергей С.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Вызов ФМ с заполнением внутренних переменных, не описанных как входные параметры.
СообщениеДобавлено: Пт, июл 17 2009, 09:37 
Директор
Директор
Аватара пользователя

Зарегистрирован:
Пн, дек 20 2004, 16:05
Сообщения: 1080
Откуда: 4.0B
Пол: Мужской
east написал:
Code:
field-symbols: <is> type any,
               <it> type any table.

assign ('(PROG_NAME)PARAMETR_NAME') to <is>.
assign ('(PROG_NAME)TABLE_NAME[]') to <it>.

:)


перед вызовом вряд ли получится это сделать. область глобальных переменных группы функций еще не определена.

_________________
Я слышу и забываю,
Я вижу и помню долго,
Я делаю и — понимаю.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Вызов ФМ с заполнением внутренних переменных, не описанных как входные параметры.
СообщениеДобавлено: Пт, июл 17 2009, 09:50 
Специалист
Специалист

Зарегистрирован:
Пт, фев 16 2007, 09:49
Сообщения: 157
Это должно быть наверное что-то в виде вызова в фоне отладки с запуском ФМ в новой сессии. Предварительно в основной программе с помощью специального ФМ задать точку останова отладчика в нужном ФМ. Наверное это задача слишком трудоемкая..


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Вызов ФМ с заполнением внутренних переменных, не описанных как входные параметры.
СообщениеДобавлено: Пт, июл 17 2009, 10:00 
Специалист
Специалист
Аватара пользователя

Зарегистрирован:
Пн, сен 17 2007, 10:48
Сообщения: 190
Откуда: Нальчик, РФ
Пол: Мужской
Пардон, был невнимателен .. сплю мало :( Единственный возможный выход, который вижу я - расширение. :)

_________________
С уважением, Сергей С.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Вызов ФМ с заполнением внутренних переменных, не описанных как входные параметры.
СообщениеДобавлено: Пт, июл 17 2009, 10:04 
Специалист
Специалист
Аватара пользователя

Зарегистрирован:
Вт, июн 02 2009, 22:28
Сообщения: 228
Откуда: MOW
Пол: Мужской
Если цель не вызвать отладчик, а именно определить внутренние переменные в группе функций SUU0 (к которой принадлежит указанный ФМ), то можно попробовать следующие варианты:

1. Вызвать какую-нибудь любую процедуру из указанной группы функций, тогда все переменные области данной ГФ будут инициализированы и их можно будет присваивать через ASSIGN

пример:

Code:
PERFORM clear_all_buffers(SAPLSUU0) USING 'X'.
...
" Далее выполняем ASSIGN, как написано в одном из предыдущих постов
...
" Далее вызываем сам ФМ


2. Правда, можно предположить, что ФМ после вызова проинициализирует все переменные и они все равно будут пустыми. Тогда первый способ не подойдет.
В этом случае можно поискать какие-нибудь user-exit-ы или badi, вызывающиеся внутри данного ФМ (внутри транзакции su01), и в них с помощью передачи через MEMORY заполнить нужные значения.

3. В новой версии можно воспользоваться enhancement-ами, их можно воткнуть в любой ФМ или FORM в начале и в конце (часто в коде уже заблаговременно созданы ENHANCEMENT-POINTs тогда вообще супер), и опять же через память передать нужные значения и заполнить нужные данные.

4. Совсем кривой - скопировать группу функций и накривить все что хочется )) Крайне не рекомендуется, но такое тоже иногда приходится если задача очень обязательная и по-другому не получается


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Вызов ФМ с заполнением внутренних переменных, не описанных как входные параметры.
СообщениеДобавлено: Пт, июл 17 2009, 10:09 
Специалист
Специалист
Аватара пользователя

Зарегистрирован:
Пн, сен 17 2007, 10:48
Сообщения: 190
Откуда: Нальчик, РФ
Пол: Мужской
4й способ врядли покатит с su01... либо все равно будет использоваться расширение, либо zsu01 как альтернатива...что на мой взгляд жесть)))) все-таки основная запись юзера :D
ну и 3й вар. тож не прокатит, скорее всего, как и описано...

_________________
С уважением, Сергей С.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Вызов ФМ с заполнением внутренних переменных, не описанных как входные параметры.
СообщениеДобавлено: Пт, июл 17 2009, 12:48 
Специалист
Специалист

Зарегистрирован:
Пт, фев 16 2007, 09:49
Сообщения: 157
raaleksandr написал:
Если цель не вызвать отладчик, а именно определить внутренние переменные в группе функций SUU0 (к которой принадлежит указанный ФМ), то можно попробовать следующие варианты:

1. Вызвать какую-нибудь любую процедуру из указанной группы функций, тогда все переменные области данной ГФ будут инициализированы и их можно будет присваивать через ASSIGN

пример:

Code:
PERFORM clear_all_buffers(SAPLSUU0) USING 'X'.
...
" Далее выполняем ASSIGN, как написано в одном из предыдущих постов
...
" Далее вызываем сам ФМ


2. Правда, можно предположить, что ФМ после вызова проинициализирует все переменные и они все равно будут пустыми. Тогда первый способ не подойдет.
В этом случае можно поискать какие-нибудь user-exit-ы или badi, вызывающиеся внутри данного ФМ (внутри транзакции su01), и в них с помощью передачи через MEMORY заполнить нужные значения.

3. В новой версии можно воспользоваться enhancement-ами, их можно воткнуть в любой ФМ или FORM в начале и в конце (часто в коде уже заблаговременно созданы ENHANCEMENT-POINTs тогда вообще супер), и опять же через память передать нужные значения и заполнить нужные данные.

4. Совсем кривой - скопировать группу функций и накривить все что хочется )) Крайне не рекомендуется, но такое тоже иногда приходится если задача очень обязательная и по-другому не получается


3-й способ не прошел.. Сообщение - Object FUGR SUU0 is part of the central basis and therefore cannot be enhanced.
2-й способ тоже.. нету там user-exit-ов или badi.
Сейчас пробую 1-й.. но что-то пока не получается..


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Вызов ФМ с заполнением внутренних переменных, не описанных как входные параметры.
СообщениеДобавлено: Пт, июл 17 2009, 12:56 
Специалист
Специалист

Зарегистрирован:
Пт, фев 16 2007, 09:49
Сообщения: 157
Интересно можно ли так? Найти ФМ внутри данного ФМ в который можно добавить enhancement. В этот enhansement вставить код, который через assign(исх ФМ, переменная) заполнит нужные мне переменные. Хотя там вроде в основном вызов ФМ своей функц. группы.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Вызов ФМ с заполнением внутренних переменных, не описанных как входные параметры.
СообщениеДобавлено: Пт, июл 17 2009, 13:08 
Специалист
Специалист
Аватара пользователя

Зарегистрирован:
Пн, сен 17 2007, 10:48
Сообщения: 190
Откуда: Нальчик, РФ
Пол: Мужской
Damir написал(а):
Интересно можно ли так? Найти ФМ внутри данного ФМ в который можно добавить enhancement. В этот enhansement вставить код, который через assign(исх ФМ, переменная) заполнит нужные мне переменные. Хотя там вроде в основном вызов ФМ своей функц. группы.

Implizit Enhanceemnt тоже можно пробовать. Такой же вид расширения как и все остальные, практически ))

_________________
С уважением, Сергей С.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Вызов ФМ с заполнением внутренних переменных, не описанных как входные параметры.
СообщениеДобавлено: Пт, июл 17 2009, 13:26 
Специалист
Специалист

Зарегистрирован:
Пт, фев 16 2007, 09:49
Сообщения: 157
Нашел ФМ ADDR_DEQUEUE пакета SZA2.
В самом начале ФМ нажал кнопку "Добавить расширение". Система запросила название и описание. Ввел их, затем система просит ключ доступа на расширение..
Введите ключ
для объекта R3TR ENHO E1
SAP-версия 700
----
Ключ доступа ???
Инсталляция 0120024701
Так и должно что-ли быть? :roll:


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Вызов ФМ с заполнением внутренних переменных, не описанных как входные параметры.
СообщениеДобавлено: Пт, июл 17 2009, 13:39 
Менеджер
Менеджер
Аватара пользователя

Зарегистрирован:
Чт, мар 09 2006, 10:12
Сообщения: 565
Откуда: Волгодонск
Пол: Мужской
Зря мучаетесь объект этот системный для таких ENHANCEMENT не возможен

_________________
Изображение Попытка не пытка


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Вызов ФМ с заполнением внутренних переменных, не описанных как входные параметры.
СообщениеДобавлено: Пт, июл 17 2009, 14:16 
Специалист
Специалист
Аватара пользователя

Зарегистрирован:
Пн, сен 17 2007, 10:48
Сообщения: 190
Откуда: Нальчик, РФ
Пол: Мужской
Можно получиить ключик доступа на модификацию объекта, как вариант)) Вопрос тоько в том на сколько Вы дорожите SAP-овской поддержкой :)

_________________
С уважением, Сергей С.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Вызов ФМ с заполнением внутренних переменных, не описанных как входные параметры.
СообщениеДобавлено: Сб, июл 18 2009, 20:08 
Младший специалист
Младший специалист

Зарегистрирован:
Пт, окт 31 2008, 15:58
Сообщения: 70
Здравствуйте.

Расширение в функции ADDR_DEQUEUE выполняется легко и непринужденно через

enhacement framework, поэтому я не совсем понимаю, откуда взялся запрос ключа на модификацию объекта.

Я проверил все на системе. Все получилось без проблем.

Цитата:
Зря мучаетесь объект этот системный для таких ENHANCEMENT не возможен


Это в корне неверное рассуждение. Можно менять все, начиная от интерфейса ФМ, заканчивая вставкой кода и управлением активации enhacement проекта.

С Уважением, Абрамов Виктор.

_________________
С Уважением, Абрамов Виктор.
The devil is in the detail.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Вызов ФМ с заполнением внутренних переменных, не описанных как входные параметры.
СообщениеДобавлено: Вс, июл 19 2009, 15:23 
Менеджер
Менеджер
Аватара пользователя

Зарегистрирован:
Чт, мар 09 2006, 10:12
Сообщения: 565
Откуда: Волгодонск
Пол: Мужской
Извините, был не прав, действительно создаётся
видимо ENHANCEMENT невозможен если СтатусПрог = "S", а не Приложение

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

_________________
Изображение Попытка не пытка


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

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


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

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


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

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