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

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


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

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


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

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