SAPфорум.RU https://sapboard.ru/forum/ |
|
ENHANCEMENT https://sapboard.ru/forum/viewtopic.php?f=13&t=92671 |
Страница 1 из 1 |
Автор: | hugo788 [ Пн, мар 21 2016, 07:18 ] |
Заголовок сообщения: | ENHANCEMENT |
Здравствуйте! Никогда не внедрялся в расширения. Подскажите пож-та как можно реализовать такую задачу. Есть две точки входа в саповскую форму, где могу вписать код(в самое начало и в самый конец). Задача - использовать те же переменные что в этой форме, но свою логику. Пишу 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. |
Автор: | Удав [ Пн, мар 21 2016, 08:24 ] |
Заголовок сообщения: | Re: ENHANCEMENT |
Если логика своя, то зачем чужие переменные? |
Автор: | hugo788 [ Пн, мар 21 2016, 08:38 ] |
Заголовок сообщения: | Re: ENHANCEMENT |
Логика частично своя, большую часть кода нужно будет использовать того что в стандарте. Создавая дублирующие переменные, почему то результат оказался не тот... Там еще переходы в стандарты... Можно конечно разобраться, но интересует все таки вопрос, как можно перейти из одного ENHANCEMENT в другой в даном случае. |
Автор: | Kengur [ Пн, мар 21 2016, 09:40 ] |
Заголовок сообщения: | Re: ENHANCEMENT |
Вначале энх чтобы подменить входные параметры. В конце чтобы подменить результат. Никаких "переходов" тут нет. Код выполняется обычным образом. Выкидываете результат стандарта в помойку и вычисляете свой заново. |
Автор: | hugo788 [ Вт, мар 22 2016, 12:31 ] |
Заголовок сообщения: | Re: ENHANCEMENT |
Понятно, т.е. если я хочу чтобы выполнился в начале ENHANCEMENT, потом в конце ENHANCEMENT, то без прогона стандартного кода в середине я все равно не обойдусь. |
Автор: | Kengur [ Вт, мар 22 2016, 13:00 ] |
Заголовок сообщения: | Re: ENHANCEMENT |
Ну наверно можно если сделать вначале вставку и потом return. |
Автор: | LKU [ Вт, мар 22 2016, 13:35 ] |
Заголовок сообщения: | Re: ENHANCEMENT |
Вариант 1. В первом энхансменте (в начале кода) пишете ваш код и в конце exit. Вариант 2. В первом энхансменте пишите if 1 = 2. Во втором (в конце кода) пишите else. Таким образом, можно выключить стандартный код и написать вместо него что-то свое. Если стандартного кода много, а нужно поменять несколько строчек, то такой подход ВРЕДНЫЙ. Потом прилетит обновление стандарта в очередной ноте и прекрасно установится, но никто и никогда не узнает, что работает на самом деле его устаревшая версия, скопированная вами во второй энхансмент. Гораздо лучше с точки зрения обновления системы взять ключ модификации и с помощью ассистента модификаций поменять нужные несколько строк. |
Автор: | hugo788 [ Вт, мар 22 2016, 13:55 ] |
Заголовок сообщения: | Re: ENHANCEMENT |
LKU написал: Вариант 2. В первом энхансменте пишите if 1 = 2. Во втором (в конце кода) пишите else. Хм...попробовал такой вариант - "В кодировке для нестатического расширения, а также в нестатическом ENHANCEMENT-SECTION необходимо завершить конструкторы контроля (IF, CASE и т.д.)." |
Автор: | LKU [ Вт, мар 22 2016, 14:05 ] |
Заголовок сообщения: | Re: ENHANCEMENT |
Точно видел такую реализацию. Или версия не та, или надо одновременно активировать код первого и второго энхансмента. |
Автор: | Nick_Papkov [ Ср, мар 23 2016, 01:08 ] |
Заголовок сообщения: | Re: ENHANCEMENT |
hugo788 написал(а): Понятно, т.е. если я хочу чтобы выполнился в начале ENHANCEMENT, потом в конце ENHANCEMENT, то без прогона стандартного кода в середине я все равно не обойдусь. А если попробовать такой вариант. Создаем класс с тремя статическими методами. Один отвечает за установление/сброс индикатора, второй выполняет проверку состояния данного индикатора, третий вызывает нужную вам форму с передачей ей необходимых параметров (их берем из входных данных метода, а сам вызов формы делаем через PERFORM <имя формы> IN PROGRAM <имя программы>). А дальше реализуем оба enhancements в таком варианте. В первом (тот, что в начале формы) проверяем индикатор. Если установлен, то переходим к выполнению стандартного кода, если нет, то устанавливаем индикатор через соответствующий метод нашего класса и вызываем второй метод для повторного вызова формы, после чего сбрасываем индикатор и выходим из формы. Во втором (тот, что в конце формы) проверяем индикатор. Если установлен, то пишем свою логику и корректируем выходные параметры формы, если нет, то выходим из формы. |
Автор: | qwerty [ Чт, фев 15 2018, 00:42 ] |
Заголовок сообщения: | Re: ENHANCEMENT |
hugo788 написал(а): LKU написал: Вариант 2. В первом энхансменте пишите if 1 = 2. Во втором (в конце кода) пишите else. Хм...попробовал такой вариант - "В кодировке для нестатического расширения, а также в нестатическом ENHANCEMENT-SECTION необходимо завершить конструкторы контроля (IF, CASE и т.д.)." При внедрении расширения выводилось окно в котором нужно было указать какого вида расширение "Безусловное" или "Условное". Для предложенной выше конструкции нужно выбирать "Безусловное" - т.е. вида static. |
Страница 1 из 1 | Часовой пояс: UTC + 3 часа |
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group http://www.phpbb.com/ |