Текущее время: Пн, ноя 19 2018, 01:16

Часовой пояс: 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
Сообщения: 181
Можно создать, например, пул подпрограмм (либо отчет, либо гр.функций, ....) для хранения глобальных переменных:
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
Сообщения: 705
Откуда: 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
Сообщения: 3007
Пол: Мужской
В добавок к тому, что написал Бородин Игорь, можно сделать через атрибуты класса.
Единственное я бы не стал использовать perfroms(prog), лучше SET/GET методы класса или SET/GET ФМы одной Гф.

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


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

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

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


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

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


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

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


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

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