我有问题围绕ABAP(SAP)中的MVC方法进行包装。虽然我的问题不是代码相关,而是与概念相关。MVC实现概念(概念(ABAP SAP)
情况:
该视图需要1个参数。它创建控制器的对象并将参数传递给控制器。控制器将该输入重新路由到模型。该模型向数据访问类请求数据,检索数据,为该数据创建对象并将该对象返回给控制器。控制器将数据传递给视图。它读取对象的属性并将它们打印到屏幕上。
特定设置:
我需要阅读“业务伙伴”(名字&姓)在SAP并打印出来到屏幕的表。该方法应该是MVC,OO和一个单独的数据访问层(DAL)。 - 我的控制器在视图中被实例化。在那里它称为'RETRIEVE_BP(iv_BPart)'。 - 我的控制器基本重复对模型的调用(只是传递数据?) - 我的模型根据从DAL返回的数据创建本地对象。控制器调用模型时会返回此模型。 - 我是一个Singleton,用于从内部SAP表访问和检索数据。这将返回此表唯一的类型。在模型
方法从DAL检索:在控制器
method RETRIEVE_BP.
data ls_bp TYPE BAPIBUS1006_CENTRAL_PERSON.
ls_bp = mo_dal->get_buspartner(EXPORTING iv_bpart = iv_bpart).
create OBJECT mo_bp EXPORTING firstname = ls_bp-firstname lastname = ls_bp-lastname.
rv_bpart = mo_bp.
endmethod.
方法:
method GET_BUSPARTNER.
rv_bpart = mo_mdl_bp->retrieve_BP(exporting iv_BPART = iv_BPART).
endmethod.
问题:
- 因为我的控制器沿着信息只是路过。这应该是一个静态类吗?否则,我的控制器应该在哪里实例化?
- 我应该在我的控制器中保留一个本地参考以保存我的模型。因此能够通过控制器对象直接在视图中访问我的模型。从视图中删除需要使用传入参数重复呼叫。
- 我在哪里构建“业务合作伙伴”对象以将其传递回控制器。从那里到视图?
- 我应该在哪里打电话给我的DAL?
- 如果我将我的模型从业务合作伙伴类中分离出来。模型应该是单身人士吗?
在回答中,抽象出ABAP代码并且仅仅使用Java或C#中的示例是完全正确的。我已经有一个工作解决方案。我要求提高我的理解力。
由于这些代码是SAP系统的一部分,我避免了生成代码示例,并且在没有UI组件的情况下分发ABAP代码非常麻烦。
一如果我在这里发布任何错误。请纠正我并指引我到正确的地方。如果缺少任何信息,我很乐意提供此信息。