如何使用动态 ABAP 程序生成技术,对 ABAP 系统标准的报表行为进行微调试读版

本教程前面有一篇文章,我们介绍了如何使用外部传入的字符串,动态生成 ABAP 报表实例,并执行的方法:

如何使用动态 ABAP 程序生成技术,对 ABAP 系统标准的报表行为进行微调试读版_第1张图片

我们可以看到在第 120 个例子里,我们使用硬编码拼接起来的字符串,来模拟外部传入的 ABAP 程序的代码源头。

笔者的知识星球里,有朋友提问,能不能从本地 ABAP 系统,提取某个标准 ABAP 程序的代码源,然后基于这些代码源进行微调,动态生成新的 ABAP 报表并执行呢?

这个需求理论上可行。

注意:实际使用时,确保对标准代码源的替换,一定要处于可控状态,以免给系统留下安全隐患。

下面是本解决方案详细的步骤。

如何使用动态 ABAP 程序生成技术,对 ABAP 系统标准的报表行为进行微调试读版_第2张图片

我们先编写一个简单的 ABAP 报表,用于模拟 SAP 系统里标准的 ABAP 报表。

这个报表的内容,仍然围绕本教程之前介绍过的 ABAP 系统的注册表 TADIR 来展开:

源代码如下:

REPORT z.

DATA: lt_tadir TYPE TABLE OF tadir,
      ls_tadir TYPE tadir.

SELECT * INTO TABLE lt_tadir FROM tadir
   UP TO 3 ROWS
     WHERE pgmid = 'R3TR' AND object = 'PROG' AND author = sy-uname.

LOOP AT lt_tadir INTO ls_tadir.
  WRITE:/ ls_tadir-obj_name.
ENDLOOP.

这个报表的作用是,从注册表里,查询出当前执行报表用户创建的三个 ABAP 报表的名称。
报表在 SE38 里的名称为 ZST.
如何使用动态 ABAP 程序生成技术,对 ABAP 系统标准的报表行为进行微调试读版_第3张图片

执行之后,打印三条输出记录:

如何使用动态 ABAP 程序生成技术,对 ABAP 系统标准的报表行为进行微调试读版_第4张图片

假设我的需求是,执行报表后,打印的记录条目数,改成10条

下面)是如何使用 ABAP 动态程序生成技术,实现的这个需求。

你可能感兴趣的:(如何使用动态 ABAP 程序生成技术,对 ABAP 系统标准的报表行为进行微调试读版)