Автор Тема: Enhancement Spot (Практический пример создания)  (Прочитано 81140 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн Uukrul

  • SAP ECC 6.0 Ehp(*)
  • Administrator
  • Epic Member
  • *****
  • Сообщений: 3 809
  • Репутация: +47/-0
  • Пол: Мужской
  • YearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYears
    • Sapforum.BIZ
Из темы You are not allowed to view links. Register or Login был поднят вопрос как можно вклиниться в стандартные программы SAP, ну методов много, а с версии ECC 6.0 появился просто с одной стороны, замечательный механизм точек расширения, а с другой, если руки кривые, то это самый простой способ поломать систему, причем если руки "очень кривые", то этим способом ее можно разнести в дребезги и пополам.

А теперь поехали и как еще говорят, все что вы попробуете сделать в своей системе по данному описанию, останется на вашей совести, без каких либо претензий ко мне  ;)

Enhancement Spot, если на пальцах то это новый механизм экзитов в системе, фактически система предоставляет две точки входа, после входа в любую стандартную подпрограмму и перед выходом из этой подпрограммы. Пример расширения берем из предложенной темы. Суть в том, что хочется вызвать программу транзакции MB5B например через SUBMIT и после вызова получить данные программы себе в отчет. В своем случае, я запустил MB5B как в примере с таким вот простым вариантом, рисунок MB5B.png. Суть в том, чтобы под отладчиком найти точку/подпрограмму, где идет вызов ALV-таблицы которая показывает результат выборки. Почему именно эта подпрограмма, ну так скорее всего раз программа дошла до этого места, то все данные уже корректно выбраны и подготовлены для показа. В данном случае это инклуд RM07MLBD_FORM_02 подпрограмма LISTAUSGABE1, если там поставить точку останова, то видно что приехали по месту вроде как правильно.
 
Теперь идем в SE38, в этот инклудик и там выбираем по меню "Обработка" - "Операции расширения" - "Показать предполагаемые опции расширения", рисунок RM07MLBD_FORM_02.png, после чего фактически в каждой подпрограмме будут выделены точки входа, а значит можно что-то туда дописать своего.  Выбираем по меню "Программа" - "Расширить" или на рисунке жмем соответствующую кнопку на панели инструментов, после чего снова нужно попросить показать точки расширения и должно получиться что-то из рисунка RM07MLBD_FORM_02-ES2.PNG... затем становимся на нужную там точку в начале программы (почему в начале расскажу ниже), и правой кнопкой мыши по контекстному меню "Enhancement Implemantation" - "Создать расширение", как на рисунке RM07MLBD_FORM_02-ES3.PNG ниже. Затем в появившемся окне выбора расширения жмете кнопку "Описание" и в появившемся окне ES1.png, жмем кнопку создать свое расширение (в чужие клиниться не есть хороший метод) рисунок ES2.png, обратите внимание, что так как это расширение у нас первое, то мы создаем так же и группу точек расширений YMY_MB5B - собственное имя и жмет еще раз рядом кнопку создать, потом вводим описание и система спросит пакет и запрос, после чего возвращаемся в экран точек расширений, жмем там ОК, и попадаем в основное окно, в котором уже появилась запись для наших точек ES3.png, выбираем нашу созданную запись и точка создана, в коде появилась запись куда мы можем вносить свой код, рисунок ES4.png

Что можно написать в этом месте. Ну мы знаем что результат выбора находится в таблице G_T_BELEGE1, которая выводится в ALV-таблице, значит нам нужно написать код который передаст эту таблицу в память, которая останется доступной после отработки отчета, так же тут наверное будет правильным сделать выхода из подпрограммы, так как дергать ALV смысла нет, но чтобы не нарушить отчет выход должен быть по какому-то из параметров, я предлагаю сделать имя варианта например с именем /MYBATH, на экране это будет поле выбора "Вариант просмотра", переменная P_VARI и фокус в том, что так как наше расширение работает в контексте работы программы то мы имеем нормальный доступ ко всем глобальным переменным программы, поэтому в своей точке можем написать что-то типа такого кода:
Код: You are not allowed to view links. Register or Login
*$*$-Start: (36 )-------------------------------------------------------------------------------$*$*
ENHANCEMENT 17  YMY_MB5B_EXT.    "active version
* Передача параметров для внешних вызовов
IF p_vari = '/MYBATH'.
  break-point.
  EXPORT G_T_BELEGE1 TO MEMORY ID 'MYBATH'.
  EXIT.
ENDIF.
ENDENHANCEMENT.
Т.е. передали в память данные таблицы, затем вышли из подпрограммы без вызова ALV-таблицы. Отчет завершиться, а в своей программе делаем IMPORT FROM MEMORY и получаем результат. Собственно поэтому мы сделали точку расширения в начале отчета, чтобы перехватить вызов отрисовки результата, так как в данном случае это будет лишним. Само собой код нужно активировать, после чего рядом с именем расширения будет добавлена фраза - active version.

В общем где-то так... и работает все!

07.07.2010  PS: Добавлен файл Enhancement Spot.pdf, в котором собрана вся ветка без флуда...

25.09.2010 PS: Удален файл Enhancement Spot.pdf

25.09.2010 PS: Добавлен файл Enhancement Spot 2.pdf, с более расширенным описанием работы с точками расширений на основании последних замечаний и примеров
« Последнее редактирование: Сентябрь 25, 2010, 06:02:18 pm от Uukrul »

Оффлайн Dmitriy

  • SAP ECC 6.0
  • Moderator
  • Newbie
  • *****
  • Сообщений: 380
  • Репутация: +0/-0
  • Пол: Мужской
  • Embracive Fire
  • YearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYears
Re: Enhancement Spot (Практический пример создания)
« Ответ #1 : Март 14, 2009, 05:27:42 pm »
Механизм, описанный Uukrul`ом дюже полезен для абапера, наконец-то SAP пошел навстречу. Однако необходимо помнить, что этим инструментом (как и многими другими) нужно пользоваться без фанатизма. Доводилось видеть, как по неопытности, люди не зная стандартных расширений вместо них лепили Enhancement Spot (к случаю MB5B это не относится).

Примечание: нельзя вставить в PBO и PAI логику экрана (только в код программы).

2 Паганель:
Цитировать
Собственно поэтому мы сделали точку расширения в начале отчета, чтобы перехватить вызов отрисовки результата, так как в данном случае это будет лишним.
В твоем случае можно будет делать проверку по sy-tcode, например, если отчет будет запускаться пользователем исключительно через транзакцию.
« Последнее редактирование: Март 14, 2009, 05:39:46 pm от Dmitriy »

Оффлайн Uukrul

  • SAP ECC 6.0 Ehp(*)
  • Administrator
  • Epic Member
  • *****
  • Сообщений: 3 809
  • Репутация: +47/-0
  • Пол: Мужской
  • YearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYears
    • Sapforum.BIZ
Re: Enhancement Spot (Практический пример создания)
« Ответ #2 : Март 14, 2009, 06:01:10 pm »
You are not allowed to view links. Register or Login
Примечание: нельзя вставить в PBO и PAI логику экрана (только в код программы).
Ну глядишь к ECC 7.0 будет все общее счастье и радость в мире SAP.

PS: Ну выделил, что механизм хороший, но сломать систему можно за пять минут... а поднимать потом будет мучительно больно.

Оффлайн Dmitriy

  • SAP ECC 6.0
  • Moderator
  • Newbie
  • *****
  • Сообщений: 380
  • Репутация: +0/-0
  • Пол: Мужской
  • Embracive Fire
  • YearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYears
Re: Enhancement Spot (Практический пример создания)
« Ответ #3 : Март 14, 2009, 06:12:18 pm »
You are not allowed to view links. Register or Login
Ну глядишь к ECC 7.0 будет все общее счастье и радость в мире SAP.

PS: Ну выделил, что механизм хороший, но сломать систему можно за пять минут... а поднимать потом будет мучительно больно.
Поэтому и написал: главное - без фанатизму.

Оффлайн Паганель

  • Я НЕ ЗАНИМАЮСЬ SAP
  • Administrator
  • Full Member
  • *****
  • Сообщений: 1 367
  • Репутация: +20/-0
  • Пол: Мужской
  • https://noteifyapp.com
  • YearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYears
    • MacPlus Software
Re: Enhancement Spot (Практический пример создания)
« Ответ #4 : Март 17, 2009, 12:53:27 pm »
You are not allowed to view links. Register or Login
Поэтому и написал: главное - без фанатизму.

Ладно, уговорили - не буду  :)
You are not allowed to view links. Register or Login
You are not allowed to view links. Register or Login

Оффлайн Uukrul

  • SAP ECC 6.0 Ehp(*)
  • Administrator
  • Epic Member
  • *****
  • Сообщений: 3 809
  • Репутация: +47/-0
  • Пол: Мужской
  • YearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYears
    • Sapforum.BIZ
Re: Enhancement Spot (Практический пример создания)
« Ответ #5 : Март 17, 2009, 01:08:17 pm »
You are not allowed to view links. Register or Login
Ладно, уговорили - не буду  :)
Так ты говорил что тебе это все равно пока не грозит... так как нет шестерки... ну если не путаю ничего.

Оффлайн Паганель

  • Я НЕ ЗАНИМАЮСЬ SAP
  • Administrator
  • Full Member
  • *****
  • Сообщений: 1 367
  • Репутация: +20/-0
  • Пол: Мужской
  • https://noteifyapp.com
  • YearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYears
    • MacPlus Software
Re: Enhancement Spot (Практический пример создания)
« Ответ #6 : Март 17, 2009, 01:13:13 pm »
ага, в продуктиве нет  :)
You are not allowed to view links. Register or Login
You are not allowed to view links. Register or Login

ВременныйНик

  • Гость
Re: Enhancement Spot (Практический пример создания)
« Ответ #7 : Май 19, 2009, 10:27:12 am »
добавлю свои 5 коп,
что подробности читать в bc427 ,
где в частности описано и про Switch Framework, это такая штука что позволяет включить/деактивировать бизнес функцию в рамках которой будут/могут обьеденены несколько spot (и их имплентации) размещенные в разных местах, (видимо вообще опасная вещь)
Uukrul как раз привел пример где можно добавить свой код,
а есть еще Enhancement-section это вроде как скобки кода внутри которых можно игнорировать код а вместо него подсунуть свой :)

Оффлайн Uukrul

  • SAP ECC 6.0 Ehp(*)
  • Administrator
  • Epic Member
  • *****
  • Сообщений: 3 809
  • Репутация: +47/-0
  • Пол: Мужской
  • YearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYears
    • Sapforum.BIZ
Re: Enhancement Spot (Практический пример создания)
« Ответ #8 : Май 19, 2009, 10:37:38 am »
You are not allowed to view links. Register or Login
а есть еще Enhancement-section это вроде как скобки кода внутри которых можно игнорировать код а вместо него подсунуть свой :)
Я про это даже боюсь заикаться... так как вообще вся техника Enhancement операций позволяет завалить систему за пару минут, при этом хорошо если оно сразу упадет, а если через пару месяцев?! Имел тут уже процесс поиска причины не работы одной функциональности. Когда дело дошло до меня, там уже много народу отметилось, так что мне удаленку дали за 20 минут  ;), ну и... таки криво написанный абапс, о котором все забыли уже давно, а оно вот тут возьми и выстрели.

Так что, как сказал Dmitriy, SAP конечно повернулся лицом к разработчику, но боюсь что геммороя себе создал... на перспективу  ::) ну очень много.
« Последнее редактирование: Май 25, 2009, 12:27:40 pm от Dmitriy »

Оффлайн Паганель

  • Я НЕ ЗАНИМАЮСЬ SAP
  • Administrator
  • Full Member
  • *****
  • Сообщений: 1 367
  • Репутация: +20/-0
  • Пол: Мужской
  • https://noteifyapp.com
  • YearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYears
    • MacPlus Software
Re: Enhancement Spot (Практический пример создания)
« Ответ #9 : Май 23, 2009, 10:29:13 am »
Перечитал тут все, вкусненько (облизывается), только один вопрос возник: при апгрейдaх системы, эти споты не затираются ? Так как они вроде бы хранятся прямо в коде основной транзакции?

2ВременныйНик
You are not allowed to view links. Register or Login
добавлю свои 5 коп,
что подробности читать в bc427 ,
где в частности описано и про Switch Framework, это такая штука что позволяет включить/деактивировать бизнес функцию в рамках которой будут/могут обьеденены несколько spot (и их имплентации) размещенные в разных местах, (видимо вообще опасная вещь)
Uukrul как раз привел пример где можно добавить свой код,
а есть еще Enhancement-section это вроде как скобки кода внутри которых можно игнорировать код а вместо него подсунуть свой :)
Скачал рекомендованный вами курс .... при случае буду заглядывать в него....
You are not allowed to view links. Register or Login
You are not allowed to view links. Register or Login

Оффлайн NachDenken

  • Newbie
  • *
  • Сообщений: 158
  • Репутация: +9/-0
  • YearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYears
Re: Enhancement Spot (Практический пример создания)
« Ответ #10 : Май 25, 2009, 09:55:11 am »
не стираются,
вроде как sap гарантирует, что все эти расширения хранятся отдельно

Оффлайн Uukrul

  • SAP ECC 6.0 Ehp(*)
  • Administrator
  • Epic Member
  • *****
  • Сообщений: 3 809
  • Репутация: +47/-0
  • Пол: Мужской
  • YearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYears
    • Sapforum.BIZ
Re: Enhancement Spot (Практический пример создания)
« Ответ #11 : Май 25, 2009, 10:01:33 am »
You are not allowed to view links. Register or Login
не стираются,
вроде как sap гарантирует, что все эти расширения хранятся отдельно
Ну на самом деле они действительно хранятся отдельно, это визуально редактор показывает типа вы в код вклинились, но вот работоспособность ваших энхансментов, при накладке патчей, а уж тем более миграции на новые версии, может быть сильно под вопросом, например вы читаете значение из переменной процедуры, которая в новой версии вообще удалена из кода, так что если увлекаемся энхансментами, то как минимум комментируем, для чего сделана вставка, другим потом будет проще и вспоминать вас не будут злым тЫхим словом  ;)

Оффлайн Dmitriy

  • SAP ECC 6.0
  • Moderator
  • Newbie
  • *****
  • Сообщений: 380
  • Репутация: +0/-0
  • Пол: Мужской
  • Embracive Fire
  • YearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYears
Re: Enhancement Spot (Практический пример создания)
« Ответ #12 : Май 25, 2009, 12:41:54 pm »
Да уж, колбасни хватает.
Оффтоп: сейчас, во время кризиса, многие стажерские программы (в плане привлечения новых, молодых сотрудников) накрылись, но вот как сказал Uukrul, код имеет свойство "выстреливать" (и не через один год). Правил тут 24 управляющие программы к SD PDF-формулярам (в т.ч. сами формуляры), это просто был северный зверь, под названием песец, аж снились иногда. Делали разные люди, в т.ч. "фрилансеры" 2-3х летней выдержки. Такого наваяли, мама не горюй. Стандартные, по большей части, процедуры везде написаны по-разному.
2 Паганель: кстати ФМ-ы, которые тебе прислал, как раз оттуда, это про нахождение адресов имеется ввиду. ;)

Оффлайн Паганель

  • Я НЕ ЗАНИМАЮСЬ SAP
  • Administrator
  • Full Member
  • *****
  • Сообщений: 1 367
  • Репутация: +20/-0
  • Пол: Мужской
  • https://noteifyapp.com
  • YearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYears
    • MacPlus Software
Re: Enhancement Spot (Практический пример создания)
« Ответ #13 : Май 25, 2009, 12:50:59 pm »
Спасибо добр человек, за сокровенные знания ;-)
You are not allowed to view links. Register or Login
You are not allowed to view links. Register or Login

Оффлайн Dmitriy

  • SAP ECC 6.0
  • Moderator
  • Newbie
  • *****
  • Сообщений: 380
  • Репутация: +0/-0
  • Пол: Мужской
  • Embracive Fire
  • YearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYears
Re: Enhancement Spot (Практический пример создания)
« Ответ #14 : Май 25, 2009, 12:57:53 pm »
You are not allowed to view links. Register or Login
Спасибо добр человек, за сокровенные знания ;-)
Нема за что, всегда рад помочь хорошему человеку. 4-х стажеров на одном проекте выучил в реальном режиме времени в сжатые сроки (оффтоп))). Припухаешь после этого основательно, но меня же тоже учили и терпели в свое время. Зато сейчас есть к кому обратиться. ;)

Оффлайн NachDenken

  • Newbie
  • *
  • Сообщений: 158
  • Репутация: +9/-0
  • YearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYears
Re: Enhancement Spot (Практический пример создания)
« Ответ #15 : Май 25, 2009, 02:33:59 pm »
народ офтопит :)

Оффлайн Паганель

  • Я НЕ ЗАНИМАЮСЬ SAP
  • Administrator
  • Full Member
  • *****
  • Сообщений: 1 367
  • Репутация: +20/-0
  • Пол: Мужской
  • https://noteifyapp.com
  • YearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYears
    • MacPlus Software
Re: Enhancement Spot (Практический пример создания)
« Ответ #16 : Май 25, 2009, 02:37:31 pm »
You are not allowed to view links. Register or Login
народ офтопит :)
Ага, и это модераторы, так че нам людям простым .....
You are not allowed to view links. Register or Login
You are not allowed to view links. Register or Login

Оффлайн Dmitriy

  • SAP ECC 6.0
  • Moderator
  • Newbie
  • *****
  • Сообщений: 380
  • Репутация: +0/-0
  • Пол: Мужской
  • Embracive Fire
  • YearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYears
Re: Enhancement Spot (Практический пример создания)
« Ответ #17 : Май 25, 2009, 02:51:45 pm »
You are not allowed to view links. Register or Login
Ага, и это модераторы, так че нам людям простым .....
Да лан, немного иногда можно пооффтопить, месье Паганель, тем более в разделе ABAP, который уже почти 7 лет изучаешь, и понимаешь, что учиться и учиться самому, как говорил товарищ Ленин;)
« Последнее редактирование: Май 25, 2009, 02:57:11 pm от Dmitriy »

Оффлайн A.

  • Newbie
  • *
  • Сообщений: 110
  • Репутация: +1/-0
  • YearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYears
Re: Enhancement Spot (Практический пример создания)
« Ответ #18 : Июль 30, 2010, 02:08:21 pm »
В чем, если сказать по-простому, разница между implicit и explicit enhancement points? Понимаю, что implicit - неявный, подразумеваемый, а explicit - явный, определенный. Но применительно к расширениям как это понимать?

Оффлайн Uukrul

  • SAP ECC 6.0 Ehp(*)
  • Administrator
  • Epic Member
  • *****
  • Сообщений: 3 809
  • Репутация: +47/-0
  • Пол: Мужской
  • YearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYears
    • Sapforum.BIZ
Re: Enhancement Spot (Практический пример создания)
« Ответ #19 : Июль 30, 2010, 03:33:16 pm »
You are not allowed to view links. Register or Login
В чем, если сказать по-простому, разница между implicit и explicit enhancement points?
Ну если на пальцах то как я понял разница заключается в том что:

Implicit Enhancement Options: Это точки вызова расширений в начале и конце блока кода, т.е. например есть подпрограмма, так вот Implicit Enhancement это расширение в начале подпрограммы и в конце подпрограммы, так что такой тип расширения позволяет добавить дополнительные параметры к существующим стандартным функциональным модулям SAP.

Explicit Enhancement Options: Это точки вызова которые могут быть в любом месте кода, при этом такая точка может быть как расширением стандартного кода, так и заменой его, т.е. ваше расширение полностью например заменит какой-то кусок кода системы, так же такие расширения используются для реализации фукнций Business Add-Ins, где мы уже являемся пользователями этого функционала.

Теперь в чем разница, во втором случае для Explicit Enhancement Options: после каких либо патчей, а тем более после апгрейда системы нужно убедиться, что место вставки вашего расширения осталось тем же, т.е. на практике пусть будет такой код:
Код: You are not allowed to view links. Register or Login
PERFORM call_1 CHANGING my_structure.
--- вставил точку расширения изменяющую my_structure ---
PERFROM call_2 USING my_structure.
PERFROM call_3.
Вы вставили например свою точку между вызовами call_1 и call_2 где например, что- то поменяли  в структуре my_structure. Так вот представим что после каких-то стандартных патчей код стал выглядеть как:
Код: You are not allowed to view links. Register or Login
PERFORM call_1 CHANGING my_structure.
--- вставил точку расширения изменяющую my_structure ---
PERFROM call_xxx CHANGING my_structure.
PERFROM call_2 USING my_structure.
PERFROM call_3.
Так вот как я понимаю, ваша вставленная точка расширения останется после call_1, но как видим появилась еще одна программка которая меняет как-то структуру до вызова call_2 и соответственно скорее всего нужно проанализировать, а правильно ли теперь выполняется ваш вставленный код. И в общем это еще самый просто случай, так как вы например можете заменить часть стандартного кода и после патчей вообще может оказаться, что код + ваша вставка, стали полностью не работоспособен.

Оффлайн A.

  • Newbie
  • *
  • Сообщений: 110
  • Репутация: +1/-0
  • YearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYears
Re: Enhancement Spot (Практический пример создания)
« Ответ #20 : Июль 30, 2010, 03:40:16 pm »
Спасибо.

Но как сделать Explicit для любой программы? Например, беру Z-программу и для нее хочу сделать explicit enhancement.

SE38, Просмотр (или Изменить),
Программа-Расширить,
Обработать-Операции расширения-Создать реализацию.

И тут выскакивает сообщение:

Для создания установите курсор на опцию расширения
№ сообщения ED300

Что я делаю неправильно?

Оффлайн A.

  • Newbie
  • *
  • Сообщений: 110
  • Репутация: +1/-0
  • YearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYears
Re: Enhancement Spot (Практический пример создания)
« Ответ #21 : Июль 30, 2010, 03:42:09 pm »
А если предварительно попросить показать предполагаемые точки (implicit), и став на них курсором создавать - процесс идёт.

Все описанное выше аналогично и для не Z-программ.
« Последнее редактирование: Июль 30, 2010, 03:47:00 pm от A. »

Оффлайн Uukrul

  • SAP ECC 6.0 Ehp(*)
  • Administrator
  • Epic Member
  • *****
  • Сообщений: 3 809
  • Репутация: +47/-0
  • Пол: Мужской
  • YearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYears
    • Sapforum.BIZ
Re: Enhancement Spot (Практический пример создания)
« Ответ #22 : Июль 30, 2010, 03:46:44 pm »
You are not allowed to view links. Register or Login
А если предварительно попросить показать предполагаемые точки (implicit), и став на них курсором создавать - процесс идёт.
Ну я если честно сам точки вида Explicit не создавал... щаззз гляну что там за вопросы...

Оффлайн A.

  • Newbie
  • *
  • Сообщений: 110
  • Репутация: +1/-0
  • YearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYears
Re: Enhancement Spot (Практический пример создания)
« Ответ #23 : Июль 30, 2010, 03:47:38 pm »
Вот и я задался этим вопросом. Курс BC427 уже прочитал 2 раза :)

Оффлайн Uukrul

  • SAP ECC 6.0 Ehp(*)
  • Administrator
  • Epic Member
  • *****
  • Сообщений: 3 809
  • Репутация: +47/-0
  • Пол: Мужской
  • YearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYears
    • Sapforum.BIZ
Re: Enhancement Spot (Практический пример создания)
« Ответ #24 : Июль 30, 2010, 04:12:32 pm »
You are not allowed to view links. Register or Login
Вот и я задался этим вопросом. Курс BC427 уже прочитал 2 раза :)
Да похоже что точки расширений должны быть как-то указаны до этого, так как они опять же похоже загружаются в процессе загрузки текста программы в редактор.

Оффлайн Uukrul

  • SAP ECC 6.0 Ehp(*)
  • Administrator
  • Epic Member
  • *****
  • Сообщений: 3 809
  • Репутация: +47/-0
  • Пол: Мужской
  • YearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYears
    • Sapforum.BIZ
Re: Enhancement Spot (Практический пример создания)
« Ответ #25 : Июль 30, 2010, 04:28:57 pm »
В общем похоже в свой программе надо предусмотреть сначала создание точек расширений, а потом уже из использовать.. ну мне пока так показалось (ну это что касается точек Explicit).

Оффлайн A.

  • Newbie
  • *
  • Сообщений: 110
  • Репутация: +1/-0
  • YearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYears
Re: Enhancement Spot (Практический пример создания)
« Ответ #26 : Июль 30, 2010, 04:30:07 pm »
Похоже, это как-то связано с пакетами.
You are not allowed to view links. Register or Login
You are not allowed to view links. Register or Login
You are not allowed to view links. Register or Login
You are not allowed to view links. Register or Login
You are not allowed to view links. Register or Login

Оффлайн Uukrul

  • SAP ECC 6.0 Ehp(*)
  • Administrator
  • Epic Member
  • *****
  • Сообщений: 3 809
  • Репутация: +47/-0
  • Пол: Мужской
  • YearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYears
    • Sapforum.BIZ
Re: Enhancement Spot (Практический пример создания)
« Ответ #27 : Июль 30, 2010, 04:37:15 pm »
You are not allowed to view links. Register or Login
Похоже, это как-то связано с пакетами.
You are not allowed to view links. Register or Login
You are not allowed to view links. Register or Login
You are not allowed to view links. Register or Login
You are not allowed to view links. Register or Login
You are not allowed to view links. Register or Login
Да нет, я тут поковырял короче в свой программе создать вот именно эти Explicit точки не вопрос, в режиме редактирования стоим на строке кода и правой кнопкой мыши по меню: Расширения - Создать опцию и получаем что-то типа
Код: You are not allowed to view links. Register or Login
ENHANCEMENT-SECTION Y_MY_AREA SPOTS Y_MY_SPOT_EX .
  IF dynbegin = 'X'.
  ENDIF.
END-ENHANCEMENT-SECTION.

Ну и еще по справке вот такая вот строка... т.е. это таки должно быть явное разрешение для вставки модификации, объявленное операторами ENHANCEMENT and ENDENHANCEMENT, т..е. если в программе нет явного разрешения на расширение кода в этом месте, то как бы и точки расширения нет, собственно говоря поэтому оно и называется "явная точка расширения", в отличии от не явной которая типа всегда есть в начале и конце подпрограммы или функционального модуля.
Цитировать
You can assign source code plug-ins, defined between ENHANCEMENT and ENDENHANCEMENT in an ABAP program, to an enhancement option defined using ENHANCEMENT-POINT. These source code plug-ins are inserted into the code unchanged if the switch is in the relevant position.
Так что как бы разница между Explicit и Implicit ну если уж совсем на пальцах, то Implicit - есть всегда и не требует каких либо шагов для ее объявления, а вот Explicit точка должна быть явно определена в коде в требуемом месте, т.е. из моего примера
Код: You are not allowed to view links. Register or Login
PERFORM call_1 CHANGING my_structure.
--- вставил точку расширения изменяющую my_structure ---
PERFROM call_2 USING my_structure.
PERFROM call_3.
чтобы вставить точку расширения между call_1 и call_2, в тексте должно было бы быть что-то типа так написано:
Код: You are not allowed to view links. Register or Login
PERFORM call_1 CHANGING my_structure.
*  Явная точка расширения
   ENHANCEMENT-POINT XXX_ME_EX SPOTS XXX_MY_SPOT_EX .
PERFROM call_2 USING my_structure.
PERFROM call_3.
только тогда можно было бы вставлять свой код в промежутке вызова.
« Последнее редактирование: Июль 30, 2010, 04:43:33 pm от Uukrul »

Оффлайн A.

  • Newbie
  • *
  • Сообщений: 110
  • Репутация: +1/-0
  • YearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYears
Re: Enhancement Spot (Практический пример создания)
« Ответ #28 : Июль 30, 2010, 04:50:29 pm »
Похоже, что так оно и есть - если разработчик не предусмотрел, то и не будет. Спасибо за разъяснения.

P.S.
А было бы неплохо :) Смотришь на код - ну не нравится тебе конструкция вида
Код: You are not allowed to view links. Register or Login
IF 1 = 0. MESSAGE E000(AA). ENDIF.и ты её бах! в enhancement-section заключил и переписал потом в enhancement-point как надо.

:)
« Последнее редактирование: Июль 30, 2010, 04:52:47 pm от A. »

Оффлайн Skif

  • Jr. Member
  • **
  • Сообщений: 726
  • Репутация: +10/-0
  • YearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYears
Re: Enhancement Spot (Практический пример создания)
« Ответ #29 : Август 13, 2010, 12:17:33 pm »
жаль что не даёт сделать IF в начальном enh, потом старое тело, endif в конечном enh, новое тело ;((

Оффлайн A.

  • Newbie
  • *
  • Сообщений: 110
  • Репутация: +1/-0
  • YearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYears
Re: Enhancement Spot (Практический пример создания)
« Ответ #30 : Август 24, 2010, 09:56:14 am »
После переноса в целевую систему приходится активировать объекты, в которые произведено внедрение. Иначе не отрабатывает. Даже в закрытом от изменений продуктиве это приходится проделывать.

Оффлайн Uukrul

  • SAP ECC 6.0 Ehp(*)
  • Administrator
  • Epic Member
  • *****
  • Сообщений: 3 809
  • Репутация: +47/-0
  • Пол: Мужской
  • YearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYears
    • Sapforum.BIZ
Re: Enhancement Spot (Практический пример создания)
« Ответ #31 : Август 24, 2010, 11:10:53 am »
You are not allowed to view links. Register or Login
После переноса в целевую систему приходится активировать объекты, в которые произведено внедрение.
Как-то странно это.. потому что эта технология используется в BADI и транспорты без проблем носят такие объекты, я переносил как сами BADI так и Enhancement Spot-ы и дополнительной активации делать в продуктиве не требовалось. Такая проблема у вас на одной системе или вы пробовали это делать на разных системах?

Оффлайн A.

  • Newbie
  • *
  • Сообщений: 110
  • Репутация: +1/-0
  • YearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYears
Re: Enhancement Spot (Практический пример создания)
« Ответ #32 : Август 24, 2010, 11:14:10 am »
Трехсистемный ландшафт. После переноса и в тест, и в продуктив надо активировать. При этом в разработке все активно. Активировать - нажимать на кнопку со спичкой.

Оффлайн Uukrul

  • SAP ECC 6.0 Ehp(*)
  • Administrator
  • Epic Member
  • *****
  • Сообщений: 3 809
  • Репутация: +47/-0
  • Пол: Мужской
  • YearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYears
    • Sapforum.BIZ
Re: Enhancement Spot (Практический пример создания)
« Ответ #33 : Август 24, 2010, 12:46:27 pm »
You are not allowed to view links. Register or Login
Трехсистемный ландшафт. После переноса и в тест, и в продуктив надо активировать.
Ладно подождем еще кого-то, потому как по мне это не совсем нормальное поведение при транспорте расширений или у меня сейчас временная потеря памяти  ???

Оффлайн №1

  • Administrator
  • Jr. Member
  • *****
  • Сообщений: 636
  • Репутация: +23/-0
  • Пол: Мужской
  • Судьбы я вызов принимаю прямым пожатием руки
  • YearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYears
Re: Enhancement Spot (Практический пример создания)
« Ответ #34 : Август 24, 2010, 01:38:27 pm »
Цитата: Uukrul  link=topic=546.msg7554#msg7554 date=1282643187
Ладно подождем еще кого-то, потому как по мне это не совсем нормальное поведение при транспорте расширений или у меня сейчас временная потеря памяти  ???
Я как участник процесса переноса ни разу с таким "капризом" системы не сталкивался
Мой You are not allowed to view links. Register or Login

Оффлайн Uukrul

  • SAP ECC 6.0 Ehp(*)
  • Administrator
  • Epic Member
  • *****
  • Сообщений: 3 809
  • Репутация: +47/-0
  • Пол: Мужской
  • YearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYears
    • Sapforum.BIZ
Enhancement Spot (Практический пример создания)
« Ответ #35 : Сентябрь 25, 2010, 06:04:06 pm »
В первую тему сообщения добавлен файл Enhancement Spot 2.pdf, с более расширенным описанием работы с точками расширений на основании последних замечаний и примеров.

Оффлайн insaf121

  • Newbie
  • *
  • Сообщений: 25
  • Репутация: +1/-0
  • Пол: Мужской
  • YearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYears
Re: Enhancement Spot (Практический пример создания)
« Ответ #36 : Июль 22, 2011, 10:00:30 am »
Я тоже не сталкивался с тем что после переноса нужно активировать расширения. А никто не знает способ полегче для того чтобы посмотреть все эти енкхасменты для какой-нибудь задачи?
Я сейчас работаю абапером и консалдинг который внедрял сап в нашу контору очень увлекался этим способом :( И под частую сразу не поймешь есть что то на стандарте или нет.

Оффлайн Uukrul

  • SAP ECC 6.0 Ehp(*)
  • Administrator
  • Epic Member
  • *****
  • Сообщений: 3 809
  • Репутация: +47/-0
  • Пол: Мужской
  • YearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYears
    • Sapforum.BIZ
Re: Enhancement Spot (Практический пример создания)
« Ответ #37 : Июль 25, 2011, 11:48:17 am »
You are not allowed to view links. Register or Login
Я тоже не сталкивался с тем что после переноса нужно активировать расширения. А никто не знает способ полегче для того чтобы посмотреть все эти енкхасменты для какой-нибудь задачи?
К сожалению нет... хотя как вариант если все разработки выполнялись одним пакетом, то просмотрев пакет, можно получить все активированные в нем расширения.

Оффлайн A.

  • Newbie
  • *
  • Сообщений: 110
  • Репутация: +1/-0
  • YearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYears
Re: Enhancement Spot (Практический пример создания)
« Ответ #38 : Ноябрь 01, 2011, 03:29:35 pm »
BAdI ORDER_COSTING_CK помечено только для использования в SAP. Есть ли пути все-таки задействовать её для себя? Ну кроме как подломать.
« Последнее редактирование: Ноябрь 01, 2011, 03:32:47 pm от A. »

Оффлайн Uukrul

  • SAP ECC 6.0 Ehp(*)
  • Administrator
  • Epic Member
  • *****
  • Сообщений: 3 809
  • Репутация: +47/-0
  • Пол: Мужской
  • YearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYears
    • Sapforum.BIZ
Re: Enhancement Spot (Практический пример создания)
« Ответ #39 : Апрель 29, 2013, 11:25:00 am »
You are not allowed to view links. Register or Login
После переноса в целевую систему приходится активировать объекты, в которые произведено внедрение. Иначе не отрабатывает. Даже в закрытом от изменений продуктиве это приходится проделывать.
Вот тут тоже возникла ситуация когда после переноса объекты активны, но код не отрабатывает. Пришлось заходить в код, где были внедрения и выполнять активацию. Система: EHP4 FOR SAP ERP 6.0 / NW7.01


You are not allowed to view links. Register or Login
BAdI ORDER_COSTING_CK помечено только для использования в SAP. Есть ли пути все-таки задействовать её для себя? Ну кроме как подломать.
Нет... надо искать другое расширение. Ну и ломать, не советую, как говорили в одном фильме - хлопотно это. Я тут с одной такой системой сейчас общаюсь, там тоже, в свое время, решили, что классный абапер, это проще чем найти хорошего консультанта.
« Последнее редактирование: Апрель 29, 2013, 11:26:55 am от Uukrul »

Оффлайн Uukrul

  • SAP ECC 6.0 Ehp(*)
  • Administrator
  • Epic Member
  • *****
  • Сообщений: 3 809
  • Репутация: +47/-0
  • Пол: Мужской
  • YearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYears
    • Sapforum.BIZ
Re: Enhancement Spot (Практический пример создания)
« Ответ #40 : Ноябрь 05, 2013, 12:39:27 pm »
Важное дополнение:

На небольшом эксурсе по поводу ENHANCEMENT, был задан вопрос чем отличаются декларации статических энхансментов от динамических энхансментов, ну т.е. если в коде вы встречаете следующие объявления:
 
Динамический: enhancement-point lmr1mfa0_01 spots es_saplmr1m.
 
или:
 
Статический: enhancement-point lmr1mfa0_01 spots es_saplmr1m static.
 
Само собой данные объявления применяются только при явных энхансментах - Explicit Enhancement Options.
 
Разница между этими объявлениями заключается в следующем.
 
Примечание: Я говорил, что техника Enhancement создана в первую очередь для возможности реализации бизнес-функций, а не для нас, простых пользователей системы.
 
Так вот бизнес-функция может находиться в состоянии "активно" или "в ожидании" (деактивирована), просмотреть статусы бизнес функций можно в транзакции SFW5. Бизнес-функции представляют собой собственно говоря набор Enhancement-тов, т.е. точек расширений, который могут быть декларированы в коде существующих транзакций системы как статические или динамические. Так вот если Enhancement объявлен как статический, но сама бизнес-функция не активирована, вы можете создать реализацию такого энхансмента и система будет обрабатывать написанный вами код. Если же энхансмент объявлен как динамический и бизнес-фукнция не активирована, то выполнять реализацию кода в таком энхансменте бесполезно, так как вызваться ваш код не будет, пока вы не активируете соответствующую бизнес-функцию в которую включен данный энхансмент.
 
PS: Это важный момент, если вы используете технику явных энхнасментов.

Оффлайн Uukrul

  • SAP ECC 6.0 Ehp(*)
  • Administrator
  • Epic Member
  • *****
  • Сообщений: 3 809
  • Репутация: +47/-0
  • Пол: Мужской
  • YearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYears
    • Sapforum.BIZ
Re: Enhancement Spot (Практический пример создания)
« Ответ #41 : Апрель 16, 2014, 12:42:50 pm »
Заметил занятную вещь, когда вроде как и есть неявная точка расширения, но по факту использовать ее в принципе нельзя. И так как мы знаем, неявные точки расширения находятся на входе и выходе подпрограмм и функциональных модулей, а так же в конце записей структур. Есть такая себе структура:
Код: You are not allowed to view links. Register or Login
types : begin of stype_totals_header,
          BWKEY              LIKE      MBEW-BWKEY,
          WERKS              LIKE      MSEG-WERKS,
          matnr              like      mbew-matnr,
          CHARG              LIKE      MSEG-CHARG,
          sobkz              like      mslb-sobkz,

          NAME1              like      T001W-NAME1,
          maktx              like      makt-maktx,
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""$"$\SE:(86) Typ STYPE_TOTALS_HEADER, Выход                                                                                                                           end of stype_totals_header.
В ней как видим есть неявная точка расширения. Пробуем добавить свой код:
Цитировать
types : begin of stype_totals_header,
          BWKEY              LIKE      MBEW-BWKEY,
          WERKS              LIKE      MSEG-WERKS,
          matnr              like      mbew-matnr,
          CHARG              LIKE      MSEG-CHARG,
          sobkz              like      mslb-sobkz,

          NAME1              like      T001W-NAME1,
          maktx              like      makt-maktx,
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""$"$\SE:(86) Typ STYPE_TOTALS_HEADER, Выход                                                                                                                   S
*$*$-Start: 9999--------------------------------------------------------------------------------$*$*
ENHANCEMENT 1  ZIMM_MB5B_REPORTS_01.    "inactive version
*
ENDENHANCEMENT.
*$*$-End:   9999--------------------------------------------------------------------------------$*$*
        end of stype_totals_header.
Получаем ошибки синтаксиса для выделенных красным строк. Что в принципе понятно, та как инструкция расширения после имени содержит точку, которая там не должна быть. В общем вот такая засада. Если бы структура была объявлена типа так:
Цитировать
]
types : begin of stype_totals_header,
          BWKEY              LIKE      MBEW-BWKEY,
          WERKS              LIKE      MSEG-WERKS,
          matnr              like      mbew-matnr,
          CHARG              LIKE      MSEG-CHARG,
          sobkz              like      mslb-sobkz,

          NAME1              like      T001W-NAME1,
          maktx              like      makt-maktx.
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""$"$\SE:(86) Typ STYPE_TOTALS_HEADER, Выход                                                                                                                           types: end of stype_totals_header.
То проблем бы небыло ни у кого. Так что абаперы объявляете свои структуры правильно. , с ними не только вам работать возможно придется.

Sapforum.Biz

Re: Enhancement Spot (Практический пример создания)
« Ответ #41 : Апрель 16, 2014, 12:42:50 pm »