Текущее время: Пн, июл 28 2025, 14:57

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


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

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


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

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