乐趣区

关于sap:ABAP-泛型编程实战-分享一个数据库表内容的拷贝工具试读版

ABAP 泛型编程技术,在本教程之前的多篇文章曾经有所介绍:

  • 66. SAP ABAP Function Module 的动静调用形式应用形式介绍
  • 127. 答网友疑难:ABAP Function Module 如何反对内表构造不确定的动静输出参数
  • 128. 工作实战:SAP ABAP 动态创建类型在理论工作中的一个利用场合分享

笔者在理论工作中,常常须要对一些 SAP 零碎规范的数据库表进行一些调研工作,比方调整数据库表的字段,或者对这张规范数据库表的内容,进行增删改查等等。

因为是调研性质,本人也没有 100% 把握,所以我个别习惯先将规范的数据库表,拷贝进去成为一个 Z 表。比方上面这张 SAP CRM 零碎里规范的数据库表 ZCRMC_OBJECTS:

应用 SE11 事务码里提供的拷贝性能:

在表名字前增加 Z 即可:

上面是拷贝进去的 Z 表,数据结构同原来规范的表截然不同:

然而这只是数据库表的构造做了拷贝,不蕴含数据库里寄存的记录。为此我开发了一个小工具,利用了 ABAP 泛型编程技术,只须要在工具输出参数里,指定源数据库表,和指标数据库表这两张表的名称,工具就能主动将源数据库表的全部内容,拷贝到指标数据库表去。

当然,既然是泛型编程,我的工具源代码里,就 <font color=’red’ size=”3pt”> 没有 </font> 硬编码任何对于 CRMC_OBJECTS 或者 ZCRMC_OBJECTS 这两张数据库表的构造信息。

所谓 ABAP 泛型编程,次要通过 泛型数据类型 来实现,而泛型数据类型的实现,离不开 ABAP 的 Field Symbol.

泛型数据类型容许咱们在申明变量、类或接口时 不指定具体的数据类型,而是应用类型为 <font color=’red’ size=”3pt”>ANY</font> 或者 TABLE 的 Field Symbol 来示意。这些 Field Symbol 在应用程序执行时,能力确定其具体的数据类型。

听起来可能有些形象,不过不要紧,咱们通过具体的例子来实战。

执行笔者开发的数据库表内容拷贝工具(残缺源代码在文末),指定两个参数:

  • 源数据库表名:保护想要将其内容复制进去的数据库表名称,在我的应用场景里,通常是 SAP 规范数据库表名称。
  • 指标数据库表名:从 SAP 规范数据库表拷贝进去的 Z 表的名称。

执行结束后,打印出胜利拷贝的数据库表记录数:

上面是具体的源代码解说。

退出移动版