Текущее время: Ср, июл 16 2025, 23:52

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


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


ВНИМАНИЕ!

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



Начать новую тему Ответить на тему  [ Сообщений: 14 ] 
Автор Сообщение
 Заголовок сообщения: Макрос в глобальном классе
СообщениеДобавлено: Ср, июл 23 2014, 07:11 
Начинающий
Начинающий
Аватара пользователя

Зарегистрирован:
Сб, июн 01 2013, 22:36
Сообщения: 12
Добрый день, гуру ABAP'а.

Появилась необходимость реализовать макрос, который будет виден и в родительском классе и в дочернем. Реально ли сделать это?

Заранее большое спасибо (:


Пометить тему как нерешенную
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Макрос в глобальном классе
СообщениеДобавлено: Ср, июл 23 2014, 07:36 
Почетный гуру
Почетный гуру
Аватара пользователя

Зарегистрирован:
Пн, мар 28 2005, 15:38
Сообщения: 1257
Svirinstel Зачем? ну зачем вам этот пережиток прошлого? Сделайте нормальный протектед метод и наслаждайтесь прелестями ООП!

_________________
Там, где я рос, единственным развлечением было запоминать число «π».(С) Н. Стивенсон


Пометить тему как нерешенную
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Макрос в глобальном классе
СообщениеДобавлено: Ср, июл 23 2014, 08:25 
Начинающий
Начинающий
Аватара пользователя

Зарегистрирован:
Сб, июн 01 2013, 22:36
Сообщения: 12
Кодер да задача тривиальная - простенький макрос для удобного заполнения таблицы mt_toolbar доп кнопками, чтобы не каждый раз прописывать поля структуры.
Code:
  DEFINE add_btn.
    APPEND INITIAL LINE TO e_object->mt_toolbar ASSIGNING <lsf_toolbar>.
    <lsf_toolbar>-function  = &1.
    <lsf_toolbar>-icon      = &2.
    <lsf_toolbar>-quickinfo = &3.
    <lsf_toolbar>-butn_type = &4.
    <lsf_toolbar>-disabled  = &5.
    <lsf_toolbar>-text      = &6.
    <lsf_toolbar>-checked   = &7.
  END-OF-DEFINITION.

    add_btn:
*     &1         &2      &3                &4    &5  &6    &7
      'ENTER'    '@0Z@'  'Ввести данные'   ''    ''  ''    ''
     .

Вместо того, чтобы для каждой кнопки прописывать (и то, в данном примере только 3 поля заполнено):
Code:
  APPEND VALUE #(
    function  = 'ENTER'
    icon      = '@0Z@'
    quickinfo = 'Ввести данные'
  ) TO e_object->mt_toolbar[].

Если же делать отдельный протектед, то еще придется передавать дополнительно ссылку на таблицу mt_toolbar[], а это еще одни доп параметр при обращении.

Основная идея глобального макроса в этом случае - не загромождать код.


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

Зарегистрирован:
Пн, мар 28 2005, 15:38
Сообщения: 1257
Svirinstel: загромождение кода при макросе примерно то же что и при сокращенной записи вызова метода. Преимущества у макроса только одно: он побыстрее вызова метода(при поставленной задаче этот плюс не критичен). Зато в наличии масса минусов(не отладить, часто непонятен принцип, не наглядная синт.проверка). Передавать ссылку на таблу необязательно, если речь идет о табле-свойстве объекта. Метод - вот наш выбор в ООП.

_________________
Там, где я рос, единственным развлечением было запоминать число «π».(С) Н. Стивенсон


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

Зарегистрирован:
Чт, окт 06 2005, 16:44
Сообщения: 3080
Откуда: Москва
Для глобальных макросов есть таблица TRMAC.
А в остальном Кодер прав - лучше использовать методы.

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


Пометить тему как нерешенную
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Макрос в глобальном классе
СообщениеДобавлено: Ср, июл 23 2014, 13:02 
Почетный гуру
Почетный гуру
Аватара пользователя

Зарегистрирован:
Чт, авг 19 2004, 17:37
Сообщения: 1962
Откуда: Москва
Пол: Мужской
Тоже иногда сталкиваюсь с такой задачей. У макросов есть свои плюсы!
Правильным решением считаю исключительно вызов метода в макросе, тогда и отладка доступна.

_________________
"For all entries" не в SAP-ах, "for all entries" в головах! :)


Пометить тему как нерешенную
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Макрос в глобальном классе
СообщениеДобавлено: Ср, июл 23 2014, 13:12 
Почетный гуру
Почетный гуру
Аватара пользователя

Зарегистрирован:
Пт, сен 23 2005, 11:11
Сообщения: 963
в 740 можно отладить макрос в виде байткода,
интересно, кто-нибудь этим пользуется?

в целом ,в 740 наконец-то много полезных нововведений для нашего брата.
и сестёр.


Пометить тему как нерешенную
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Макрос в глобальном классе
СообщениеДобавлено: Ср, июл 23 2014, 13:56 
Начинающий
Начинающий
Аватара пользователя

Зарегистрирован:
Сб, июн 01 2013, 22:36
Сообщения: 12
Кодер думаю, что в данном случае отладка явно не нужна, поэтому и хотел использовать макрос. Для каких-то более глобальных действий однозначно использовал бы метод.

Табла стандартная объекта e_object, который подается на вход метода TABLE_HANDLE_TOOLBAR, определенного на событие TOOLBAR класса CL_GUI_ALV_GRID. Поэтому я пока что плохо понимаю, как можно из него сделать вызов метода для добавления каждой кнопки без передачи таблы или, как вариант, самого объекта. Атрибут M_CL_TOOLBAR у CL_GUI_ALV_GRID протектед...

Удав под "глобальным" имелось ввиду объявление в глобальном классе, немного не так выразился. Но отдельное спасибо за инфу про TRMAC.
Я знаю, что вообще в классе есть возможность объявления макроса, который будет виден для всех методов (Перейти К->Локальные определения/реализации->Макросы), но проблема в том, что он не наследуется в дочерних.

trop как раз потихоньку прощупываю все прелести 740 ^^


Пометить тему как нерешенную
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Макрос в глобальном классе
СообщениеДобавлено: Ср, июл 23 2014, 13:56 
Старший специалист
Старший специалист

Зарегистрирован:
Чт, май 12 2011, 16:06
Сообщения: 351
Как только Вы объявите макрос (глобально или даже внутри метода), он станет доступным для любого кода ниже по тексту. Т.е. объявите макрос до его использования в каком-либо из классов - и он будет доступен и из родительского класса, и из дочернего. Правда, он будет доступен и из любого другого класса (ил подпрограммы), который по тексту ниже его :).


Пометить тему как нерешенную
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Макрос в глобальном классе  Тема решена
СообщениеДобавлено: Ср, июл 23 2014, 13:58 
Старший специалист
Старший специалист

Зарегистрирован:
Чт, май 12 2011, 16:06
Сообщения: 351
А, речь о se24. Киньте макрос в общий (для дочернего и базового класса) инклуд или пул типов.


Пометить тему как нерешенную
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Макрос в глобальном классе
СообщениеДобавлено: Ср, июл 23 2014, 14:06 
Почетный гуру
Почетный гуру
Аватара пользователя

Зарегистрирован:
Чт, окт 06 2005, 16:44
Сообщения: 3080
Откуда: Москва
Svirinstel написал(а):
Атрибут M_CL_TOOLBAR у CL_GUI_ALV_GRID протектед...

Для работы с тулбаром есть событие TOOLBAR.

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


Пометить тему как нерешенную
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Макрос в глобальном классе
СообщениеДобавлено: Ср, июл 23 2014, 14:13 
Начинающий
Начинающий
Аватара пользователя

Зарегистрирован:
Сб, июн 01 2013, 22:36
Сообщения: 12
Удав написал(а):
Svirinstel написал(а):
Атрибут M_CL_TOOLBAR у CL_GUI_ALV_GRID протектед...

Для работы с тулбаром есть событие TOOLBAR.

так я и написал про метод TABLE_HANDLE_TOOLBAR, который висит на этом событии. Как раз в этом методе я и делаю определение нескольких кнопок в родительском классе, а остальные хотелось бы добавлять в дочернем.

LAT написал(а):
А, речь о se24. Киньте макрос в общий (для дочернего и базового класса) инклуд или пул типов.

похоже, что это единственный способ, который остается... =/


Пометить тему как нерешенную
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Макрос в глобальном классе
СообщениеДобавлено: Ср, июл 23 2014, 14:20 
Почетный гуру
Почетный гуру
Аватара пользователя

Зарегистрирован:
Чт, окт 06 2005, 16:44
Сообщения: 3080
Откуда: Москва
Svirinstel написал(а):
так я и написал про метод TABLE_HANDLE_TOOLBAR, который висит на этом событии. Как раз в этом методе я и делаю определение нескольких кнопок в родительском классе, а остальные хотелось бы добавлять в дочернем.

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

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


Пометить тему как нерешенную
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Макрос в глобальном классе
СообщениеДобавлено: Ср, июл 23 2014, 14:45 
Почетный гуру
Почетный гуру
Аватара пользователя

Зарегистрирован:
Чт, авг 19 2004, 17:37
Сообщения: 1962
Откуда: Москва
Пол: Мужской
LAT написал(а):
А, речь о se24. Киньте макрос в общий (для дочернего и базового класса) инклуд или пул типов.

Пул типов работает, достаточно его включить в список пулов предка.

_________________
"For all entries" не в SAP-ах, "for all entries" в головах! :)


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

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


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

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


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

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