SAPфорум.RU https://sapboard.ru/forum/ |
|
Динамические программирование объектов https://sapboard.ru/forum/viewtopic.php?f=13&t=96524 |
Страница 1 из 1 |
Автор: | Igor_Beruk [ Ср, июн 20 2018, 09:46 ] |
Заголовок сообщения: | Динамические программирование объектов |
Привет всем! Подскажите советом. Никак не получается сделать следующее. Есть класс с public атрибутом назовем его 'My ' Type Ref To DATA . Ему передаю ссылку объекта GRID1 type ref to CL_GUI_ALV_GRID. Потом забираю его в средстве поиска. Забрать -то забираю-но никак его не могу преобразовать так,чтобы обратиться к нему как к объекту CL_GUI_ALV_GRID чтобы забрать его свойства-например выбранную строку ну или любые другие какие захочу . Например , объявляю у себя в ср.поиска <lt_grid> TYPE any и ассайню туда My и все ок-он ассайниится - но обратиться к нему <lt_grid>->get_selected_rows не могу .Объявляю <lt_grid2> Type Ref To CL_GUI_ALV_GRID, делаю asssign <lt_grid> to <lt_grid2> cust. Дампит..Подскажите-как мне забрать этот грид обхект так-чтобы смог к нему обратиться.. |
Автор: | olegbash [ Ср, июн 20 2018, 09:56 ] |
Заголовок сообщения: | Re: Динамические программирование объектов |
в качестве решения вижу: 1) динамическое обращение к методу типа lo_obj ?= <lt_grid>. CALL METHOD lo_obj->mo_obj->('GET_SELECTED_ROWS') вместо <lt_grid>->get_selected_rows 2) без общего типа; объявить сразу typre ref to CL_GUI_ALV_GRID |
Автор: | Sam Stone [ Ср, июн 20 2018, 10:12 ] |
Заголовок сообщения: | Re: Динамические программирование объектов |
ЕМНИП в DATA нельзя пихать ссылки на объекты. Надо делать переменную TYPE REF TO object. А чтобы обращаться, то делать либо так: DATA obj TYPE REF TO cl_gui_alv_grid. obj ?= myclass->my. obj->GET_SELECTED_ROWS( ). Либо динамически: call method myclass->my->('GET_SELECTED_ROWS'). Либо так (в зависимости от версии системы): CAST cl_gui_alv_grid( myclass->my )->get_selected_rows( ). |
Автор: | Igor_Beruk [ Ср, июн 20 2018, 10:23 ] |
Заголовок сообщения: | Re: Динамические программирование объектов |
obj ?= myclass->my. - в этом месте Дамп( |
Автор: | Igor_Beruk [ Ср, июн 20 2018, 10:25 ] |
Заголовок сообщения: | Re: Динамические программирование объектов |
А-нет - все нормально! Я просто через field-sumbols делал! Все получилось,спасибо огромное!!!! |
Автор: | Igor_Beruk [ Ср, июн 20 2018, 10:52 ] |
Заголовок сообщения: | Re: Динамические программирование объектов |
А еще один очень важный момент..obj ?= myclass->my. оно-то да,получается все передать,но с type object ушел очень важный момент. Я делал раньше в этом месте get reference of grid to my и когда происходили изменения в grid - то и в My соответственно тоже. А в этом случае .obj ?= myclass->my получается просто копия объекта а не ссылка. |
Автор: | Sam Stone [ Ср, июн 20 2018, 10:59 ] |
Заголовок сообщения: | Re: Динамические программирование объектов |
Экземпляр класса это ссылка. Поэтому obj ?= myclass->my это не копирование объекта, а копирование ссылки на объект. Вот пример для наглядности. Меняем аттрибут в obj2, а меняется в obj1. Code: report.
CLASS lcl_class DEFINITION. PUBLIC SECTION. DATA a TYPE char1. ENDCLASS. DATA(obj1) = new lcl_class( ). DATA obj2 TYPE REF TO lcl_class. obj2 ?= obj1. WRITE:/ '1)', obj1->a. obj2->a = 'Z'. WRITE:/ '2)', obj1->a. |
Автор: | Igor_Beruk [ Ср, июн 20 2018, 11:21 ] |
Заголовок сообщения: | Re: Динамические программирование объектов |
Sam Stone написал(а): Экземпляр класса это ссылка. Поэтому obj ?= myclass->my это не копирование объекта, а копирование ссылки на объект. Вот пример для наглядности. Меняем аттрибут в obj2, а меняется в obj1. Code: report. CLASS lcl_class DEFINITION. PUBLIC SECTION. DATA a TYPE char1. ENDCLASS. DATA(obj1) = new lcl_class( ). DATA obj2 TYPE REF TO lcl_class. obj2 ?= obj1. WRITE:/ '1)', obj1->a. obj2->a = 'Z'. WRITE:/ '2)', obj1->a. Да,точно-спасибо Вам большое. |
Страница 1 из 1 | Часовой пояс: UTC + 3 часа |
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group http://www.phpbb.com/ |