Sapforum.Biz
Инструменты => ABAP - Инструментальные средства => Тема начата: jacknk88 от Октябрь 04, 2012, 02:54:26 pm
-
есть отрывок кода:
DATA: go_alv TYPE REF TO cl_salv_table
TRY.
cl_salv_table=>factory(
IMPORTING
r_salv_table = go_alv
CHANGING
t_table = gt_all[] ).
CATCH cx_salv_msg .
MESSAGE 'Ошибка при создании ALV' TYPE 'E'.
ENDTRY.
go_alv->set_screen_status( EXPORTING
report = sy-repid
pfstatus = 'SALV_STANDARD'
set_functions = CL_SALV_MODEL_BASE=>C_FUNCTIONS_ALL ).
1) что значит TYPE REF TO ?
2) что такое go_alv, что в нем содержится, какая структура будет у него?
3) что значит "=>" в cl_salv_table=>factory(... и само выражение?
4) что значит "->" в go_alv->set_screen_status( и само выражение?
что будет содержаться в go_alv?
заранее Огромное спасибо за разъяснения!
-
Ну как бы это все таки больше вопросы по правилам ООП (Объектно Ориентированное Программирование), чем по именно абапу, поэтому я возможно буду объяснять не очень понятными словами.
1) что значит TYPE REF TO ?
Объявляем переменную, которая будет содержать ссылку на экземпляр объекта, в данном случае объекта cl_salv_table.
2) что такое go_alv, что в нем содержится, какая структура будет у него?
Это переменная которая содержит в себе адрес размещения экземпляра объекта cl_salv_table. Сам экземпляр объекта создался при вызове конструктора. Хотя в данном случае конструктор был вызван при использовании метода класса (или как еще говорят классового метода) cl_salv_table=>factory, ну тут просто такая вот реализация, которая не требует предварительного вызова конструктора.
3) что значит "=>" в cl_salv_table=>factory(... и само выражение?
4) что значит "->" в go_alv->set_screen_status( и само выражение?
В первом случае => - как уже говорилось вызов метода класса, во втором случае, -> - вызов метода экземпляра объекта. Разница между методами следующая, для вызов метода класса, не нужен созданный экземпляр, поэтому вы указываете имя класса cl_salv_table и далее имя метода. Во втором случае вы создает экземпляр, т.е. конкретную уже ALV-таблицу и далее обращаетесь к свойствам/методам этого экземпляра объекта.
что будет содержаться в go_alv?
Ссылка на конкретный экземпляр объекта ALV-таблицы.
-
Что такое метод класса и метод экземпляра.. ну например смотрите, как создать объект в общем виде? Да есть переменная которая объявлена как XY TYPE RET TO z_class, но это только ссылка на... на пока что ни на что, так как переменная пустая. Теперь нужно создать экземпляр объекта, но как написать типа create(XY)? Ну в некоторых языках так и делают, но на самом деле что происходит, на само деле у класса z_class, есть метод который можно вызвать именно для класса и который сделает начальное создание объекта, т.е. этот метод не требует наличия конкретного уже созданного экземпляра. У этого метода есть определенные ограничения в работе по доступу к переменным и т.д. но его задача в большинстве случаев типа создать экземпляр объекта в памяти и поместить его адрес в переменную XY. Дальше уже работа будет идти с конкретными данными из памяти, т.е. работа с экземпляром (реализацией) класса z_class.
-
Uukrul
.спасибо еще раз...Вам либо преподавать надо, либо лучше всего писать книги…help-ы...очень понятно и доступно объясняете
PS: если не секрет - вам сколько лет и какой стаж в ABAP-е?
-
Uukrul
.спасибо еще раз...Вам либо преподавать надо, либо лучше всего писать книги…help-ы...очень понятно и доступно объясняете
Ну это спорный вариант :-) а хелпы.. ну как видите потихоньку пишу 8)
PS: если не секрет - вам сколько лет и какой стаж в ABAP-е?
38, а абап.. ну это знания не из абапа, а из объектного паскаля, который позже стал Delphi и т.д. Вообще-то я не специалист по именно ABAP (хотя уже лет 15 кажется с SAP работаю), я все больше как-то вроде думал, что специалист по ММ и все что около него лежит.
PS: Между нами говоря объектный ABAP мне не нравится, ну или я не очень умею его готовить, поэтому и не нравится :P
-
после таких объяснений у меня все вопросы отпадают)))....хорошо когда при объяснениизатрагивается и физическая сторона вопроса
создать экземпляр объекта в памяти и поместить его адрес в переменную XY. Дальше уже работа будет идти с конкретными данными из памяти
кстати, для меня Delphi более понятный чем ABAP...ABAP устаревший какой-то....и не понятный язык
-
хорошо когда при объяснениизатрагивается и физическая сторона вопроса
Ну это у меня типа годы программирования на ассемблере сказываются 8)
хорошо когда при объяснениизатрагивается и физическая сторона вопроса
кстати, для меня Delphi более понятный чем ABAP...ABAP устаревший какой-то....и не понятный язык
Есть одна статейка у меня по этому поводу, не моя. я только перевод сделаю, она на как раз вот поднятую тему, что такое ABAP и не устарел ли он... может на днях выложу. Мое мнение все таки ABAP это не совсем язык, это "Среда разработки" + "Язык" что накладывает определенные ограничения, возьмите тот же язык программирования 1С например. Вообще по ходу картина такая, что системы которые написали ядро + бизнес логика на внутреннем языке, оказались более тиражируемые, чем системы просто написанные с какими-то настройками.
-
еще курс BC401 можно почитать об ООП на ABAP. Есть много небольших простых примеров.