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