2016-03-15 1 views
4

Я прочитал несколько статей, в которых говорится, что вы не можете разработать OO в классических dynpros. Я новичок, поэтому, возможно, у меня есть недоразумения. Но я разрабатываю объект, ориентированный, когда я использую классы и объекты, не так ли?Программирование SAP Classic Dynpro и OO. Почему нет?

В dynpro я также могу использовать классы и создавать объекты, использовать их методы и т. Д. Так почему же Dynpro не OO?

Я знаю, что это основной вопрос, но мне нужно, чтобы получить это из моего ума, если я получил misunderstandig О.О. :)

ответ

1

Это в основном из-за классической обработки ПБО-PAI. Вы связаны с «насосом сообщений», как классический динпро был разработан несколько лет назад. Но я должен не согласиться с тем, что невозможно развиваться по принципу ООП. Это просто не так приятно, например, вы обязаны поймать PAI для дальнейших навигаций, валидации и обработки, и вы можете устанавливать значения, сообщения и т. Д. В PBO.

Но как уродливый, он по-прежнему предлагает вам идеальный подход к чему? Он он?

MVC-Design-Pattern.

Пока вы моделируете хорошую модель и контроллер, вы отслеживаете ее как объект в верхней части и создаете некоторые обертки, которые ДОЛЖНЫ передать элемент управления (и мне это не так много) сперва через PAI/PBO-Модули вплоть до форм-процедур, внутри этих форм. Вы можете выполнять все, что захотите, даже в OO-контексте. Создайте глобальную модель и класс контроллера, создайте dynpro с помощью одной alv-сетки, создайте также топ-include и попробуйте поиграть. Существует уже много стандартных приложений, используя тот же подход. Одна приятная вещь (хотя у вас есть модуль-фортутин-делегирование), что вы действительно можете начать хорошее моделирование модели и контроллера, и это по определению.

+0

Хорошо спасибо за ваш ответ. Очень четко описано :) Просто чтобы убедиться, что я понял. Чтобы использовать OOP, вам нужно создать объект и передать его через PAI/PBO-Modules до форм-подпрограмм, где я могу его использовать, не так ли? – Dyrdek

+0

Как только вы находитесь внутри formroutine (который обычно вызывается модулем pai/pbo), вы также можете использовать и верхние включенные переменные. И если вы храните свой объект там, вы можете использовать его с помощью шаблона пула хороших объектов (запросить дополнительную информацию) в КАЖДОМ ПАРКЕ, например. Как «Get_Instance (anykeytoobject) -> mymethod (abap_true)». Или некоторые другие вещи .... – icbytes

+0

Хорошо, поэтому я могу обращаться к переменным, которые объявлены в верхней части include из любой формы. Мне нужно больше узнать о шаблонах проектирования объектов, я совершенно новичок в этом и «GET_INSTANCE» и тому подобное. – Dyrdek

0

SAP ABAP Классические экраны Dynpro являются частью встроенного процедурного процесса, который запускает обработку перед отображением экрана (PBO), отображает экран, а затем обрабатывает после обнаружения действия на экране (PAI).

Код SAP, обрабатывающий этот процесс, является процедурным, поэтому вы не можете создать «чистую» программу OO.

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

Вы можете сделать королевский беспорядок, пытаясь использовать MVC, но в этот момент почему бы вам просто не использовать WebDynpro?

Смежные вопросы