Текущее время: Вс, дек 16 2018, 09:28

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


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


ВНИМАНИЕ!

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



Начать новую тему Ответить на тему  [ Сообщений: 6 ] 
Автор Сообщение
 Заголовок сообщения: Область видимости переменных из подпрограммы
СообщениеДобавлено: Пт, авг 10 2018, 14:58 
Ассистент
Ассистент

Зарегистрирован:
Пн, апр 15 2013, 15:49
Сообщения: 48
Откуда: Санкт-Петербург
Пол: Мужской
Добрый день.
Возникла следующая проблема:
Нужно реализовать несколько расширений в подпрограммах программы RM07RESL, которые должны работать
с переменными, а точнее таблицами которые должны быть "видны" во всех этих расширениях.
Проблема в том что сделать расширение в самой головной программе и объявить переменную там как глобальную - возможности нет.
Можно конечно манипулировать данными и передавать их через импорт память, но такое решение кажется "некрасивым".
Вопрос:
Можно ли объявить переменную в подпрограмме с глобальной областью видимости?
Или может быть есть какие то иные способы решения такой проблемы?


Пометить тему как нерешенную
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Область видимости переменных из подпрограммы  Тема решена
СообщениеДобавлено: Пт, авг 10 2018, 16:08 
Почетный гуру
Почетный гуру

Зарегистрирован:
Пт, дек 04 2009, 13:52
Сообщения: 183
Можно создать, например, пул подпрограмм (либо отчет, либо гр.функций, ....) для хранения глобальных переменных:
Code:
PROGRAM  Z_TEST  .
* declarations
DATA: gv_var1 TYPE char10 .
DATA: gv_var2 TYPE char10 .

* SET/GET variable 1
FORM set_var1 USING pv_var1 .
   gv_var1 = pv_var1 .
ENDFORM .

FORM get_var1 CHANGING cv_var1 .
   cv_var1 = gv_var1 .
ENDFORM .

* SET/GET variable 2
FORM set_var2 USING pv_var2 .
   gv_var2 = pv_var2 .
ENDFORM .

FORM get_var2 CHANGING cv_var2 .
   cv_var2 = gv_var2 .
ENDFORM .

И обращаться к ним из расширений как-то так:
Code:
PERFORM set_var1(z_test1) USING 'value1' .
PERFORM get_var1(z_test1) CHANGING lv_value1.
Вместо подпрограмм можно использовать методы класса.


Пометить тему как нерешенную
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Область видимости переменных из подпрограммы
СообщениеДобавлено: Пт, авг 10 2018, 16:27 
Менеджер
Менеджер
Аватара пользователя

Зарегистрирован:
Пт, янв 18 2008, 11:34
Сообщения: 708
Откуда: Tashkent -> Astana -> Moscow
Пол: Мужской
other95 написал:
Добрый день.
Возникла следующая проблема:
Нужно реализовать несколько расширений в подпрограммах программы RM07RESL, которые должны работать
с переменными, а точнее таблицами которые должны быть "видны" во всех этих расширениях.
Проблема в том что сделать расширение в самой головной программе и объявить переменную там как глобальную - возможности нет.
Можно конечно манипулировать данными и передавать их через импорт память, но такое решение кажется "некрасивым".
Вопрос:
Можно ли объявить переменную в подпрограмме с глобальной областью видимости?
Или может быть есть какие то иные способы решения такой проблемы?


STATICS думаю вам в помощь для такого случая.

_________________
Пользователь не знает, чего он хочет, пока не увидит то, что он получил. (Э. Йодан)


Пометить тему как нерешенную
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Область видимости переменных из подпрограммы
СообщениеДобавлено: Пт, авг 10 2018, 16:40 
Гуру-модератор
Гуру-модератор
Аватара пользователя

Зарегистрирован:
Пн, окт 11 2004, 21:32
Сообщения: 2453
Пол: Мужской
Еще вариант - завести вспомогательный глобальный класс (в se24), в котором статические поля - это переменные и таблицы для использования в расширениях

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


Пометить тему как нерешенную
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Область видимости переменных из подпрограммы
СообщениеДобавлено: Пт, авг 10 2018, 16:42 
Гуру-эксперт
Гуру-эксперт
Аватара пользователя

Зарегистрирован:
Чт, ноя 11 2004, 17:25
Сообщения: 3019
Пол: Мужской
В добавок к тому, что написал Бородин Игорь, можно сделать через атрибуты класса.
Единственное я бы не стал использовать perfroms(prog), лучше SET/GET методы класса или SET/GET ФМы одной Гф.

Если посложнее - можно посмотреть в сторону Shared Memory Objects,.


Пометить тему как нерешенную
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Область видимости переменных из подпрограммы
СообщениеДобавлено: Вт, авг 14 2018, 14:07 
Ассистент
Ассистент

Зарегистрирован:
Пн, апр 15 2013, 15:49
Сообщения: 48
Откуда: Санкт-Петербург
Пол: Мужской
Огромное спасибо!

Решение через пул подпрограмм отлично сработало.
Решение при помощи объявления переменных как STATICS не подошло, такие переменные не видны в другой подрограмме.
А решение через глобальный класс, и вызов методов класса еще не попробовал, попробую реализовать позже.


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

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


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

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


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

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