Текущее время: Вс, авг 03 2025, 02:01

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


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


ВНИМАНИЕ!

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



Начать новую тему Ответить на тему  [ Сообщений: 6 ] 
Автор Сообщение
 Заголовок сообщения: Overwrite-exit для метода класса
СообщениеДобавлено: Чт, окт 14 2010, 17:04 
Специалист
Специалист

Зарегистрирован:
Ср, окт 04 2006, 09:08
Сообщения: 204
Всем привет.

Столкнулся с такой проблемой: расширяю класс и делаю к его методу overwrite-exit. А в этом exit недоступны приватные атрибуты и методы класса. Дело в том, что для exit'а генерируется ещё один локальный класс и в нем метод. Хоть в новом методе и есть ссылка экзмемпляр расширяемого класса, но private атрибуты в нем уже не видны.

Такой механизм нелогичен т.к. теряется смысл делать подобный exit. К тому же для методов web dynpro такой проблемы нет. Там exit видит все, что видит исходный метод.

Есть какие-то способы прозрачно подменить метод стандартного класса своим методом так, чтобы все, что доступно в исходном методе, было доступно и в новом?


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Overwrite-exit для метода класса
СообщениеДобавлено: Чт, окт 14 2010, 17:15 
Старший специалист
Старший специалист

Зарегистрирован:
Пт, ноя 12 2004, 10:44
Сообщения: 370
Откуда: Москва
ну чисто теоретически, тем же методом перезаписи добавить методы, достающие нужные вам параметры. нет?


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Overwrite-exit для метода класса
СообщениеДобавлено: Чт, окт 14 2010, 21:27 
Специалист
Специалист

Зарегистрирован:
Ср, окт 04 2006, 09:08
Сообщения: 204
holocron написал(а):
ну чисто теоретически, тем же методом перезаписи добавить методы, достающие нужные вам параметры. нет?


Теоретически я про это тоже думал, но это как-то громоздко и неправильно: ради расширения одного метода писать ещё 20 методов для доставания и записи данных. Должен быть красивый способ!

Вообще если бы тот стандартный класс не был бы конечным, то все было бы красиво: я бы от него унаследовался и переопределил нужный мне метод. Но он конечный.

Есть ещё решение - скопировать класс целиком. Но пока не хочу.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Overwrite-exit для метода класса
СообщениеДобавлено: Пт, окт 15 2010, 05:54 
Гуру-модератор
Гуру-модератор
Аватара пользователя

Зарегистрирован:
Пн, окт 11 2004, 20:32
Сообщения: 2470
Пол: Мужской
profiteer написал(а):
Вообще если бы тот стандартный класс не был бы конечным, то все было бы красиво: я бы от него унаследовался и переопределил нужный мне метод. Но он конечный.

В принципе есть вариант как обойти свойство 'Конечный' - сделать не глобальный класс, через SE24, а локальный, в вашей программе:
Code:
CLASS my_alv DEFINITION INHERITING FROM CL_GUI_ALV_GRID.
....
ENDCLASS.

Но к приватным данным вы разумеется доступа все равно не получите, только к PROTECTED

_________________
- Может ли настоящий мастер кунг-фу получить по морде?
- Настоящий мастер может все!


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Overwrite-exit для метода класса
СообщениеДобавлено: Пт, окт 15 2010, 09:25 
Специалист
Специалист

Зарегистрирован:
Пт, окт 20 2006, 16:39
Сообщения: 230
еще есть такая штука, как дружественный класс, возможно поможет...


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Overwrite-exit для метода класса
СообщениеДобавлено: Пт, окт 15 2010, 19:09 
Специалист
Специалист

Зарегистрирован:
Ср, окт 04 2006, 09:08
Сообщения: 204
demst написал(а):
еще есть такая штука, как дружественный класс, возможно поможет...


Не поможет, т.к. "друзей" в данном случае надо было бы перечислять в стандартном классе. А enhancement этого не позволяет сделать.

В общем я все-таки пошел по пути добавления методов для обращения к данным класса т.к. в данном случае их оказалось немного нужно.


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

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


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

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


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

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