报表,Salv实例和用户命令之间的正确封装

2020-09-23 10:43发布

点击此处---> 群内免费提供SAP练习系统(在群公告中)加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)嗨, 我想知道在创建报告并将C...

         点击此处--->   EasySAP.com群内免费提供SAP练习系统(在群公告中)

加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)


嗨,

我想知道在创建报告并将CL_SALV用于输出和各种用户命令时使用MVC/封装的最正确方法是什么?

我刚刚创建了一个包含两个本地类的报告; ,后面是salv实例。

模型返回一个包含大量数据的表,然后将其传递到报表中的。 我的问题是,我不知道将事件处理程序方法正确放置在哪里,因为它们无法访问实例化的类,该类是用户命令将要执行的所有方法。 此外,事件处理程序在调用时是否能够更改表中的值? 我很确定发送到用户命令方法的唯一内容是所选表条目的行和列。

希望这不是很清楚-我将尝试通过简化的代码示例进行说明

报告测试。

 包括lcl_model。
 包括lcl_view。

 数据:gt_data类型lcl_model => mty_t_data。

 实例化
 data(go_model)=新的lcl_model()。
 data(go_view)=新的lcl_view()。

 "获取数据

 gt_data = go_model-> get_data()

 "查看数据

 go_view-> output(更改ct_data = gt_data)。


 ============================================
 别的地方...
 ============================================

 方法on_user_command。

 *不要在这里知道GT_DATA

 将gt_data [行]分配给field-sybol()。  "行来自u-comm


 *此处不知道GO_MODEL-重构或实例化新的本地对象吗?

 go_model-> change_something(更改is_data = )。



 终结法。

 
1条回答
宇峰
2020-09-23 11:27 .采纳回答

在MVC中,控制器具有视图的实例和模型的实例。 该模型处理与应用程序有关的所有事情,而与向最终用户的演示无关。 它具有所有业务逻辑。 该视图是您的SALV实例。 剩下的就是控制器,它负责处理模型和视图之间的交互。 那就是您的事件处理程序去的地方。

在报告中,我有一个主班。 我可能还有另一个用于处理选择屏幕交互的类,或者它可能是main的一部分。 我通常允许主类直接访问报表全局变量(例如参数),但是永远不能访问模型。 有时,对于简单的报表,主类充当控制器的角色。 控制器实例化CL_SALV_TABLE,并且是发生事件的正确位置。

在我看来,您的问题是您正在尝试直接在报表中创建报表程序。 那实际上是行不通的,因为您不能直接在其中添加方法。 您需要控制器类。

一周热门 更多>