Текущее время: Вс, июл 27 2025, 19:13

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


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


ВНИМАНИЕ!

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



Начать новую тему Ответить на тему  [ Сообщений: 12 ] 
Автор Сообщение
 Заголовок сообщения: Global class вместо MEMORY ID
СообщениеДобавлено: Пт, фев 25 2011, 14:51 
Менеджер
Менеджер
Аватара пользователя

Зарегистрирован:
Пн, авг 08 2005, 15:50
Сообщения: 505
Откуда: München
Пол: Мужской
Всем добрый день!

Искал пример по синтаксису EXPORT/IMPORT TO/FROM MEMORY ID, на SDN наткрулся на такую фразу:

Цитата:
I prefer declaring a global class, and a table as a static public property in the same class.

If you use that Global static component and populate some value to it, through out the execution the value will be there. So you can ignore the export memory id statement. and use a static component.

Что это за Global class, кто-нибудь может пояснить? В OOP разбираюсь неплохо - так что можно сразу "по понятиям".

_________________
Le chevalier du SAP


Пометить тему как нерешенную
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Global class вместо MEMORY ID
СообщениеДобавлено: Пт, фев 25 2011, 15:21 
Модератор
Модератор
Аватара пользователя

Зарегистрирован:
Пт, июн 16 2006, 00:43
Сообщения: 1686
Откуда: Москва <-> Красноярск
Пол: Мужской
Для тех же целей предпочитаю использовать паттерн синглтон. Краше и правильней, на мой взгляд, чем статика.

Автор пишет о простом. Global class - это класс, созданный в SE24. Статические атрибуты этого класса автор использует для передачи данных.


Пометить тему как нерешенную
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Global class вместо MEMORY ID
СообщениеДобавлено: Пт, фев 25 2011, 15:29 
Гуру-эксперт
Гуру-эксперт

Зарегистрирован:
Вт, сен 07 2004, 17:47
Сообщения: 2988
sokov написал:
Всем добрый день!

Искал пример по синтаксису EXPORT/IMPORT TO/FROM MEMORY ID, на SDN наткрулся на такую фразу:

Цитата:
I prefer declaring a global class, and a table as a static public property in the same class.

If you use that Global static component and populate some value to it, through out the execution the value will be there. So you can ignore the export memory id statement. and use a static component.

Что это за Global class, кто-нибудь может пояснить? В OOP разбираюсь неплохо - так что можно сразу "по понятиям".

Может имеется ввиду:
Цитата:
Addition 6
... SHARED MEMORY ENABLED


Effect
The SHARED MEMORY ENABLED addition defines a shared memory-enabled class whose instances can be stored in shared memory as shared memory objects.

The SHARED MEMORY ENABLED addition can only be applied to a subclass if all its superclasses have been defined with this addition. Subclasses do not necessarily inherit this addition from their superclasses

_________________
"После" - не значит "вследствие"


Пометить тему как нерешенную
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Global class вместо MEMORY ID
СообщениеДобавлено: Пт, фев 25 2011, 15:30 
Ассистент
Ассистент

Зарегистрирован:
Чт, июл 22 2010, 19:53
Сообщения: 34
Пономарев Артем написал:
Для тех же целей предпочитаю использовать паттерн синглтон. Краше и правильней, на мой взгляд, чем статика.

Автор пишет о простом. Global class - это класс, созданный в SE24. Статические атрибуты этого класса автор использует для передачи данных.


А если прочитать требуется внутри новой internal session инициированной через submit или call trasaction ? Ваш синглтон видимо не сработает.
Хотя надо проверить
UPD Впрочем подумав - думаю проверять не надо, не сработает))


Последний раз редактировалось Человек Пт, фев 25 2011, 15:35, всего редактировалось 1 раз.

Пометить тему как нерешенную
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Global class вместо MEMORY ID
СообщениеДобавлено: Пт, фев 25 2011, 15:32 
Младший специалист
Младший специалист
Аватара пользователя

Зарегистрирован:
Пн, фев 14 2011, 07:26
Сообщения: 80
Откуда: Альфа Центавра
Пол: Мужской
Пономарев Артем написал:
Для тех же целей предпочитаю использовать паттерн синглтон. Краше и правильней, на мой взгляд, чем статика.

Автор пишет о простом. Global class - это класс, созданный в SE24. Статические атрибуты этого класса автор использует для передачи данных.


Абсолютно согласен с предыдущим утверждением. Singelton потом проще править. Типа добавить листнер или реализовать какой-нибудь интерфес.


Последний раз редактировалось matik Пт, фев 25 2011, 15:34, всего редактировалось 1 раз.

Пометить тему как нерешенную
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Global class вместо MEMORY ID  Тема решена
СообщениеДобавлено: Пт, фев 25 2011, 15:34 
Менеджер
Менеджер
Аватара пользователя

Зарегистрирован:
Пн, авг 08 2005, 15:50
Сообщения: 505
Откуда: München
Пол: Мужской
Пономарев Артем написал:
Автор пишет о простом. Global class - это класс, созданный в SE24. Статические атрибуты этого класса автор использует для передачи данных.

Да, видимо это и имеется в виду. Интересный способ, спасибо!

Синглтон обсуждать не готов, ибо не знаю, что это такое.

_________________
Le chevalier du SAP


Пометить тему как нерешенную
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Global class вместо MEMORY ID
СообщениеДобавлено: Пт, фев 25 2011, 16:40 
Почетный гуру
Почетный гуру
Аватара пользователя

Зарегистрирован:
Пн, мар 28 2005, 15:38
Сообщения: 1257
2 Пономарев Артем: синглтон не сработает, если переход в др. тр-цию/отчет выполняется. Но он так же и не сработает если нужно передавать что-то и внутри одной программы если программа стандартная. Т.е. если в одном экзите что-то надо положить в ведро, а через пару-тройку вызовов, в совсем другом экзите считать.
2 Человек: глобальный класс не спасет при переходе в др. тр-цию/отчет. Экземпляр даже статического глобального класса живет только в 1 сессии. Можете проверить сами.

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


Пометить тему как нерешенную
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Global class вместо MEMORY ID
СообщениеДобавлено: Пт, фев 25 2011, 17:05 
Модератор
Модератор
Аватара пользователя

Зарегистрирован:
Пт, июн 16 2006, 00:43
Сообщения: 1686
Откуда: Москва <-> Красноярск
Пол: Мужской
Кодер, ну как вам сказать. У меня не один проект с синглтонами прекрасно живет. В то числе и с разными экзитами и транзакциями. Главное чтобы сессия одна была.
Вы себе, просто, неверно представляете мою реализацию :)

UPD.: Вернее в принципе неверно представляете себе реализацию паттерна, т.к. у меня классическая.


Пометить тему как нерешенную
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Global class вместо MEMORY ID
СообщениеДобавлено: Пт, фев 25 2011, 18:17 
Ассистент
Ассистент

Зарегистрирован:
Чт, июл 22 2010, 19:53
Сообщения: 34
2 Артем Хочется разобраться, т.е. понятно что тру ООП не должно содержать таких вещей как submit, но все же
как оно у вас работает,(оговорюсь системы нужной версии под рукой нет так что вопросы бы может и не задавал бы) например
CLASS ZA DEFINITION CREATE PRIVATE.
public section
CLASS-METHOD get_instance returning rr_instance type ref to ZA.
private section mr_instance.
ENDCALSS.
CLASS ZA IMPLEMENTATION.
METHOD get_instance.
If NOT mr_instance IS bound.
CREATE mr_instance.
endif.
rr_instance = mr_instance.
ENDMETHOD.
ENDCLASS.
Дергаем в программе А получаем инстанцию делаем submit программы Б и насколько я себе представляю,
то в новой сессии в программе Б также создастся своя ссылка(но другая), я не прав?
Позову на помощь Thorsten Franz http://www.sdn.sap.com/irj/scn/weblogs?blog=/pub/wlg/23449 он говорит

Implications of creating a new internal mode

Causing the creation of a new internal mode means that the states of every function group, class, and object instance you have touched and changed during the course of your main program is reset. If you have, say, initialized the Business Application Log function group and opened a log to which you want to add entries, you’re out of luck – the log lives in the internal mode of the caller but not the called program.
Same with any ABAP classes that you may have touched: All of their class constructors will have to be executed again in the new internal mode, different instances will be created for singleton, and the state of the internal mode will generally behave like a remotely called system (CALL FUNCTION … DESTINATION), except that you won’t be able to return to it with repeated function calls and that no call-back (as in CALL FUNCTION … DESTINATION ‘BACK’) is possible.


Пометить тему как нерешенную
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Global class вместо MEMORY ID
СообщениеДобавлено: Пт, фев 25 2011, 18:47 
Модератор
Модератор
Аватара пользователя

Зарегистрирован:
Пт, июн 16 2006, 00:43
Сообщения: 1686
Откуда: Москва <-> Красноярск
Пол: Мужской
Человек, так вы все верно пишете. Мой подход, как и вариант со статик атрибутами, работает только в рамках одной сессии.
Это ограничение на использование. Но достаточно часто - несущественное.

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


Пометить тему как нерешенную
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Global class вместо MEMORY ID
СообщениеДобавлено: Пт, фев 25 2011, 18:54 
Ассистент
Ассистент

Зарегистрирован:
Чт, июл 22 2010, 19:53
Сообщения: 34
Пономарев Артем написал:
Человек, так вы все верно пишете. Мой подход, как и вариант со статик атрибутами, работает только в рамках одной сессии.
Это ограничение на использование. Но достаточно часто - несущественное.

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

Т.е. просто легкий misunderstood случился, ну и ладно :roll:


Пометить тему как нерешенную
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Global class вместо MEMORY ID
СообщениеДобавлено: Сб, фев 26 2011, 10:50 
Почетный гуру
Почетный гуру
Аватара пользователя

Зарегистрирован:
Пн, мар 28 2005, 15:38
Сообщения: 1257
2 Пономарев Артем: тормознул. С подсказки коллеги идею понял

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


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

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


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

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


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

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