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

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


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

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


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

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