Текущее время: Чт, мар 28 2024, 14:34

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


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


ВНИМАНИЕ!

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



Начать новую тему Ответить на тему  [ Сообщений: 11 ] 
Автор Сообщение
 Заголовок сообщения: ENHANCEMENT
СообщениеДобавлено: Пн, мар 21 2016, 07:18 
Младший специалист
Младший специалист

Зарегистрирован:
Пт, ноя 07 2014, 20:19
Сообщения: 55
Здравствуйте!

Никогда не внедрялся в расширения. Подскажите пож-та как можно реализовать такую задачу.
Есть две точки входа в саповскую форму, где могу вписать код(в самое начало и в самый конец). Задача - использовать те же переменные что в этой форме, но свою логику.
Пишу perform в первой точке, form во второй - нельзя, макрос нельзя. Писать ванчале всю логику(потом exit допустим) - не могу использовать переменные, т.к. они ниже.
Какие еще могут быть варианты?


Code:
FORM extended_objects_check     USING ps_request    TYPE trwbo_request
                                      pv_dialog     TYPE trboolean
                                      iv_without_objects_check
                                                    TYPE trboolean
                                      IV_CALLED_BY_ADT TYPE  TRBOOLEAN.
"здесь дают вставить свой код
"здесь дают вставить свой код

"стандарт
CONSTANTS: lc_attribute_sapcorr LIKE e070a-attribute VALUE 'SAPCORR'.

  DATA:
        lv_error_type           TYPE trwbo_charflag,
        lv_answer               TYPE c
...... прочее описание переменных
...... логика

"стандарт

"-здесь дают вставить свой код
"-здесь дают вставить свой код

ENDFORM.



Последний раз редактировалось hugo788 Пн, мар 21 2016, 08:38, всего редактировалось 1 раз.

Пометить тему как нерешенную
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: ENHANCEMENT
СообщениеДобавлено: Пн, мар 21 2016, 08:24 
Почетный гуру
Почетный гуру
Аватара пользователя

Зарегистрирован:
Чт, окт 06 2005, 16:44
Сообщения: 3074
Откуда: Москва
Если логика своя, то зачем чужие переменные? :?

_________________
С уважением,
Удав.


Пометить тему как нерешенную
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: ENHANCEMENT
СообщениеДобавлено: Пн, мар 21 2016, 08:38 
Младший специалист
Младший специалист

Зарегистрирован:
Пт, ноя 07 2014, 20:19
Сообщения: 55
Логика частично своя, большую часть кода нужно будет использовать того что в стандарте.
Создавая дублирующие переменные, почему то результат оказался не тот... Там еще переходы в стандарты...
Можно конечно разобраться, но интересует все таки вопрос, как можно перейти из одного ENHANCEMENT в другой в даном случае.


Пометить тему как нерешенную
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: ENHANCEMENT  Тема решена
СообщениеДобавлено: Пн, мар 21 2016, 09:40 
Почетный гуру
Почетный гуру
Аватара пользователя

Зарегистрирован:
Чт, дек 20 2007, 18:21
Сообщения: 1613
Вначале энх чтобы подменить входные параметры. В конце чтобы подменить результат. Никаких "переходов" тут нет. Код выполняется обычным образом. Выкидываете результат стандарта в помойку и вычисляете свой заново.

_________________
я твой сап эфай внедрял
BAdI-позитив
Взять немножечко абопу, сунь туда кошачью *опу, RFC лапки, БТ старой бабки, на медленном базиснике переносить, тестовое окружение материть, снимать SAT пенку, биться головой о стенку, охапка тайм-шитов, отчет готов!


Пометить тему как нерешенную
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: ENHANCEMENT
СообщениеДобавлено: Вт, мар 22 2016, 12:31 
Младший специалист
Младший специалист

Зарегистрирован:
Пт, ноя 07 2014, 20:19
Сообщения: 55
Понятно, т.е. если я хочу чтобы выполнился в начале ENHANCEMENT, потом в конце ENHANCEMENT, то без прогона стандартного кода в середине я все равно не обойдусь.


Пометить тему как нерешенную
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: ENHANCEMENT
СообщениеДобавлено: Вт, мар 22 2016, 13:00 
Почетный гуру
Почетный гуру
Аватара пользователя

Зарегистрирован:
Чт, дек 20 2007, 18:21
Сообщения: 1613
Ну наверно можно если сделать вначале вставку и потом return.

_________________
я твой сап эфай внедрял
BAdI-позитив
Взять немножечко абопу, сунь туда кошачью *опу, RFC лапки, БТ старой бабки, на медленном базиснике переносить, тестовое окружение материть, снимать SAT пенку, биться головой о стенку, охапка тайм-шитов, отчет готов!


Пометить тему как нерешенную
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: ENHANCEMENT
СообщениеДобавлено: Вт, мар 22 2016, 13:35 
Гуру-модератор
Гуру-модератор
Аватара пользователя

Зарегистрирован:
Вт, май 17 2005, 13:35
Сообщения: 4842
Откуда: Москва
Пол: Мужской
Вариант 1. В первом энхансменте (в начале кода) пишете ваш код и в конце exit.
Вариант 2. В первом энхансменте пишите if 1 = 2. Во втором (в конце кода) пишите else.

Таким образом, можно выключить стандартный код и написать вместо него что-то свое.

Если стандартного кода много, а нужно поменять несколько строчек, то такой подход ВРЕДНЫЙ.

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

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


Пометить тему как нерешенную
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: ENHANCEMENT
СообщениеДобавлено: Вт, мар 22 2016, 13:55 
Младший специалист
Младший специалист

Зарегистрирован:
Пт, ноя 07 2014, 20:19
Сообщения: 55
LKU написал:
Вариант 2. В первом энхансменте пишите if 1 = 2. Во втором (в конце кода) пишите else.


Хм...попробовал такой вариант -
"В кодировке для нестатического расширения, а также в нестатическом
ENHANCEMENT-SECTION необходимо завершить конструкторы контроля (IF,
CASE и т.д.)."


Пометить тему как нерешенную
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: ENHANCEMENT
СообщениеДобавлено: Вт, мар 22 2016, 14:05 
Гуру-модератор
Гуру-модератор
Аватара пользователя

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

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


Пометить тему как нерешенную
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: ENHANCEMENT
СообщениеДобавлено: Ср, мар 23 2016, 01:08 
Специалист
Специалист
Аватара пользователя

Зарегистрирован:
Чт, авг 22 2013, 01:09
Сообщения: 108
Откуда: г. Жлобин, Республика Беларусь
Пол: Мужской
hugo788 написал(а):
Понятно, т.е. если я хочу чтобы выполнился в начале ENHANCEMENT, потом в конце ENHANCEMENT, то без прогона стандартного кода в середине я все равно не обойдусь.

А если попробовать такой вариант. Создаем класс с тремя статическими методами. Один отвечает за установление/сброс индикатора, второй выполняет проверку состояния данного индикатора, третий вызывает нужную вам форму с передачей ей необходимых параметров (их берем из входных данных метода, а сам вызов формы делаем через PERFORM <имя формы> IN PROGRAM <имя программы>). А дальше реализуем оба enhancements в таком варианте. В первом (тот, что в начале формы) проверяем индикатор. Если установлен, то переходим к выполнению стандартного кода, если нет, то устанавливаем индикатор через соответствующий метод нашего класса и вызываем второй метод для повторного вызова формы, после чего сбрасываем индикатор и выходим из формы. Во втором (тот, что в конце формы) проверяем индикатор. Если установлен, то пишем свою логику и корректируем выходные параметры формы, если нет, то выходим из формы.

_________________
Когда другие слепо следуют за истиной, помни - ничто не истина.


Пометить тему как нерешенную
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: ENHANCEMENT
СообщениеДобавлено: Чт, фев 15 2018, 00:42 
Старший специалист
Старший специалист

Зарегистрирован:
Вт, авг 17 2004, 08:49
Сообщения: 319
Откуда: Мариуполь
hugo788 написал(а):
LKU написал:
Вариант 2. В первом энхансменте пишите if 1 = 2. Во втором (в конце кода) пишите else.


Хм...попробовал такой вариант -
"В кодировке для нестатического расширения, а также в нестатическом
ENHANCEMENT-SECTION необходимо завершить конструкторы контроля (IF,
CASE и т.д.)."


При внедрении расширения выводилось окно в котором нужно было указать какого вида расширение "Безусловное" или "Условное". Для предложенной выше конструкции нужно выбирать "Безусловное" - т.е. вида static.


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

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


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

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


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

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