云服务器价格_云数据库_云主机【优惠】最新活动-搜集站云资讯

香港带宽_3元虚拟主机_企业级

小七 141 0

香港带宽_3元虚拟主机_企业级

这是我关于迁移功能组的系列文章的第2部分。

开始博客是第1部分,共3部分

在这部分我将处理转换以及合理和必要的代码调整。

经典异常应转换为基于类的异常,引用新的异常类。

我使用"消息"添加raisexception,所以我不需要消息变量的附加属性https://help.sap.com/doc/abapdocu\u 751\u index\u htm/7.51/en-US/index.htm?文件=ABAU异常_消息.htm

我的例子中的异常类已经没有什么区别了,所以我们可以考虑对一个包使用一个异常类。

例子

接口应该包含函数组中所有函数模块的所有方法定义,大数据与应用,以及参数表的相关类型定义所以除了DB条目之外,方法中使用的每种类型和常量都应该在这里定义。即使它们只是引用全局常量/类型接口。因此,调用者有一个清晰的约定,这是预期的。

我甚至建议定义自己的类型来准确地定义调用者和被调用者之间的约定。

命名

由于方法现在不是全局唯一的,所以应该遵循干净的代码规则来描述方法。

示例

一个函数组有一个函数模块ZJG_FM1_1定义如下。

在功能模块中,参数if_flag应只包含"X"或""。

功能模块名称ZJG_FM1_1可替换为其真正含义:为GUID定义的合同向其他系统发送消息。

=>为合同发送消息。

实例化

带私有实例化的类(如果需要,大数据的发展,则为单例)

应创建返回接口引用的工厂方法。

定义

它们将按照概述中的描述进行定义。

如果生成了异常类,则所有私有方法都应基于该类获取异常。这是必要的,因为在函数方法和窗体中,没有规则何时引发经典异常。它们可以在调用堆栈中的任何地方被提升。如果要替换raisings,则调用堆栈中的所有方法的方法签名中都需要此异常类。

在第一步中,如果使用singleton或公共静态属性,如果不使用singleton.

但是如果真的需要,应该检查它们。最好是尽可能少的属性。

即使决定遵循OOP而不是函数式编程风格,大数据的应用,也应该通过将属性分组到结构中来减少属性的数量。

属性的类型可能不符合ABAP-OO的规则(例如,带有标题行的表),所以在这里我们可能会有一些调整努力。

实现

要实现接口中定义的方法。

首先所有的实现都要适应ABAP-OO的规则。这可能很简单,也可能有点困难。

一个简单的例子是将一个用标题行定义的表转换成一个定义为标准表的表。

举例来说,实例方法中不允许使用静态,因此必须决定如何摆脱它们。例如,如果它们是配置的缓冲区,on应该通过一个单独的配置访问类来摆脱它们。

ABAPUnit Testclass

应该创建一个本地单元测试类。

提高创建自动测试的可能性是整个活动的关键原因之一。

Facade for Dependent on Components(DOC)

for separation of concern,所有对外部内容(如其他功能组的功能模块)的调用都应该通过facade调用DRY和unit test mocking.

通过创建本地DOC类来缓解这一要求。它由

类相关本地定义中的接口定义'lif\u doc'组成对于调用的每个外部函数模块,应使用转换的参数创建具有函数模块名称的方法。本地定义中"lcl\u doc"类的定义与实现每个接口方法都应该通过调用这个函数模块来实现,不需要任何参数。"lif\u doc"类型的私有属性应创建接口引用的私有属性。在生成类的构造函数方法中实例化此属性。

此方法仅在重构的第一步完全有效。

如果调用的函数模块属于相邻的函数组,则也应考虑重构它们。然后我们是迁移的函数模块的调用者,应该使我们的调用适应新的类/接口。

在函数组ZJG\u function\u group中,调用其他函数组的三个函数模块。

函数ZJG\u fm1\u set\u buffer。函数zjg\u fm1\u 1。函数zjg_fm2.

图例

类型TT_BAPIRET2在接口中创建,用于方法签名。请参阅绿色标记。

代码自适应

在接下来的章节中,我不会讨论ABAP-OO本身触发的代码自适应。由于ABAP-OO比过程ABAP严格得多,因此始终需要进行一些调整,包括更改本地表,去掉标题行、全局定义的字段符号、其他类型规则等。这里所做的工作很大程度上取决于程序的编写方式。有些语言适应很容易,服务器和云主机,大数据推荐,有些则不容易。

下面的章节描述了重构本身触发的代码适应,如对异常类的更改。

需要调用新创建的表单例程和函数模块方法。以前的函数模块和窗体中经典异常的出现也需要用新异常类的出现来代替

以前的窗体例程和函数模块的调用是函数组的专有调用,应该用新创建的方法的调用来代替

示例

方法的代码zjg\u if\u new\u class\u wrapp6~zjg\u fm6\u 1应适应于调用新方法zjg\u if\u new\u class\u wrapp6~zjg\u fm6\u 2和f01.