本教程后面有一篇文章,咱们介绍了如何应用内部传入的字符串,动静生成 ABAP 报表实例,并执行的办法:
- 120. SAP ABAP 动静生成 ABAP 程序并动静调用的例子代码
咱们能够看到在第 120 个例子里,咱们应用硬编码拼接起来的字符串,来模仿内部传入的 ABAP 程序的代码源头。
笔者的常识星球里,有敌人发问,能不能从本地 ABAP 零碎,提取某个规范 ABAP 程序的代码源,而后基于这些代码源进行微调,动静生成新的 ABAP 报表并执行呢?
这个需要实践上可行。
<font color=’red’ size=”3pt”> 留神:理论应用时,确保对规范代码源的替换,肯定要处于可控状态,免得给零碎留下安全隐患。</font>
上面是本解决方案具体的步骤。
咱们先编写一个简略的 ABAP 报表,用于模仿 SAP 零碎里规范的 ABAP 报表。
这个报表的内容,依然围绕本教程之前介绍过的 ABAP 零碎的注册表 TADIR 来开展:
- 131. 聊聊 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
.
执行之后,打印三条输入记录:
假如我的需要是,执行报表后,打印的记录条目数,改成 10 条
。
上面 ) 是如何应用 ABAP 动静程序生成技术,实现的这个需要。