Текущее время: Вт, июл 29 2025, 13:31

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


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


ВНИМАНИЕ!

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



Начать новую тему Ответить на тему  [ Сообщений: 12 ] 
Автор Сообщение
 Заголовок сообщения: Как получить имя переменной?
СообщениеДобавлено: Вт, апр 20 2010, 13:08 
Почетный гуру
Почетный гуру
Аватара пользователя

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

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


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Как получить имя переменной?
СообщениеДобавлено: Вт, апр 20 2010, 15:03 
Почетный гуру
Почетный гуру
Аватара пользователя

Зарегистрирован:
Чт, окт 06 2005, 16:44
Сообщения: 3080
Откуда: Москва
Посмотрите справку к оператору DESCRIBE FIELD ... INTO

Будьте внимательны - там написано "for internal use only" :wink:

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


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

Зарегистрирован:
Пн, окт 11 2004, 20:32
Сообщения: 2470
Пол: Мужской
Удав написал(а):
Посмотрите справку к оператору DESCRIBE FIELD ... INTO

Будьте внимательны - там написано "for internal use only" :wink:

немножко не то... имя переменной так получить не получится

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


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Как получить имя переменной?
СообщениеДобавлено: Вт, апр 20 2010, 16:04 
Почетный гуру
Почетный гуру
Аватара пользователя

Зарегистрирован:
Сб, сен 25 2004, 16:30
Сообщения: 1368
Откуда: Москва
Пол: Мужской
А вот к примеру такое примитивное решение :roll:
Code:
DEFINE mac_get_var_name.
  &1 = '&2'.
  TRANSLATE &1 TO UPPER CASE.
END-OF-DEFINITION.


первый параметр - текстовая переменная,
второй параметр - переменная, имя которой надо вывести.

_________________
С уважением, Сергей Королев


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Как получить имя переменной?
СообщениеДобавлено: Вт, апр 20 2010, 16:23 
Почетный гуру
Почетный гуру
Аватара пользователя

Зарегистрирован:
Чт, окт 06 2005, 16:44
Сообщения: 3080
Откуда: Москва
ArmAnn написал:
Удав написал(а):
Посмотрите справку к оператору DESCRIBE FIELD ... INTO

Будьте внимательны - там написано "for internal use only" :wink:

немножко не то... имя переменной так получить не получится

мда.. Этот способ только для полей структуры отрабатывает верно :roll:

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


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Как получить имя переменной?
СообщениеДобавлено: Ср, апр 21 2010, 05:46 
Младший специалист
Младший специалист

Зарегистрирован:
Вт, авг 05 2008, 19:46
Сообщения: 96
Откуда: С Урала
Кодер написал(а):
Добрый день!
Собственно вопрос в сабже: как получить имя переменной. Т.е.: есть у меня переменная, как я могу получить в строку ее имя? Возможно ли вообще такое?

А так получится? Это получение имени из ссылки на данные. Наверно можно и под Ваш случай приспособить
Code:
ref_descr ?= cl_abap_typedescr=>describe_by_data( <fs> ).
***** получили перечень компонентов
  ld_struc_new = ref_descr->get_relative_name( ).


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Как получить имя переменной?
СообщениеДобавлено: Ср, апр 21 2010, 08:29 
Почетный гуру
Почетный гуру
Аватара пользователя

Зарегистрирован:
Пн, мар 28 2005, 15:38
Сообщения: 1257
2 Сергей Королев: похоже что это наиболее подходящий вариант. Только он фактически не отличается от хардкода. К сожалению, при изменении имени переменной в коде программы, если забудем изменить имя переменной в вызове макроса ошибки синтаксиса не будет. Можно этого исправить добавив внутрь макроса еще один оператор &2 = &2. Не красиво, но точно повлияет на проверку синтаксиса

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

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


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Как получить имя переменной?
СообщениеДобавлено: Ср, апр 21 2010, 09:19 
Младший специалист
Младший специалист

Зарегистрирован:
Вт, авг 05 2008, 19:46
Сообщения: 96
Откуда: С Урала
Кодер написал(а):
2 NickS: Не подходит, в силу того, что данный метод вернет имя типа, а не переменной. По моей задаче из вашего примера фактически хотелось бы чтобы вернулось имя именно филд-символа

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


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Как получить имя переменной?
СообщениеДобавлено: Ср, апр 21 2010, 10:24 
Почетный гуру
Почетный гуру

Зарегистрирован:
Пт, дек 04 2009, 12:52
Сообщения: 219
Кодер, а не могли бы вы описать цель, для которой необходимо находить имя переменной? Вот возьмем ситуацию, например, вы объявляете переменную, а, затем, передаете её как USING-параметр при вызове формы... Так вот, внутри этой подпрограммы именем переменной надо считать имя USING-параметра или все-таки имя той, исходной переменной?


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Как получить имя переменной?
СообщениеДобавлено: Ср, апр 21 2010, 12:13 
Почетный гуру
Почетный гуру
Аватара пользователя

Зарегистрирован:
Пн, мар 28 2005, 15:38
Сообщения: 1257
2 Бородин Игорь: такие вопросы - начало холивара " а нафига все это нужно?". :-)
Задача: есть структура, в ней есть поля . По определенным правилам формируется динамическое условие на основании значений полей структуры. Т.е. в итоге получается строка типа "A = STRUCT-A AND B = STRUCT-B". Так вот, при формировании не хотелось бы хардкодить значение имени структуры.
Да, вопрос какое имя должно определяться (имя глобальной переменной, к примеру, или имя внутри подпрограммы) - он тоже интересен, но пока что - без практического применения.

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


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Как получить имя переменной?
СообщениеДобавлено: Ср, апр 21 2010, 13:53 
Почетный гуру
Почетный гуру

Зарегистрирован:
Пт, дек 04 2009, 12:52
Сообщения: 219
Я интересуюсь совсем не с целью критики всей задачи. :wink:
Если я правильно понимаю, вам необходимо выполнять некий запрос, где в условии WHERE должны подставляться ОДНИ ТЕ ЖЕ поля но РАЗНЫХ структур. В этом случае, я бы сделал таким образом. Создаем подпрограмму, которая имеет НЕТИПИЗИРОВАННЫЙ using-параметр I_STRUCT. Каждый раз вызываем эту подпрограмму, передая в этом параметре (внутрь подпрограммы) вашу структуру. Запрос выполняется в этой подпрограмме, а результат выборки отправляется наружу в tables-параметре. Таким образом избегаем привязки к имени структуры.

P.S. Ну, а если в структурах еще и наименования использующихся в условии полей не совпадают ... то тут уж без хардкода и так не обойтись


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Как получить имя переменной?
СообщениеДобавлено: Ср, апр 21 2010, 16:11 
Почетный гуру
Почетный гуру
Аватара пользователя

Зарегистрирован:
Пт, сен 23 2005, 11:11
Сообщения: 963
уже давно бы всё ручками написали.. :mrgreen:

имён переменных (символьных привязок) в компилированном коде обычно не бывает,
они отдельно подтягивяются только в режиме отладки.
т.е. вы ищете runtime debug info, но с большой вероятностью этого в abap-е нет


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

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


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

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


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

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