ABAP 导出到内存,使用文本字段文字的过时短格式

ABAP export to memory, obsolete short form using text field literal

我们正在 Java 中编写一个工具来解析和转换 ABAP 代码。因此,我们无意编写新的 ABAP 代码,但我们的工具必须处理所有 ABAP,甚至是过时的语句。此外,我不是ABAP专家。

在客户代码中,我看到以下语句变体

  export ' ' to memory ID 'AVG_PRC'.

此程序中唯一导入(包括所有包含)具有此内存 id 的是

  IMPORT AVG_PRC FROM MEMORY ID 'AVG_PRC' .

我知道 EXPORT ... TO MEMORY ... 语句在 dobj 位置有一个变量。解析器在这里也接受字符文字。但是这个声明有什么作用呢?

我试图用 IMPORT 读回值但失败了:解析器不允许此处的文本字段文字。另一方面,该语句在生产代码中,所以我认为它做了一些有用的事情。

编辑:

免责声明:据我所知,这是通过逆向工程进行的猜测,不受任何官方文档的支持。

ABAP 调试器包含一个检查内存区域的工具。

DATA named_variable TYPE c LENGTH 10 VALUE 'Foobar'.
EXPORT named_variable TO MEMORY ID 'ZFOOBAR'.

结果

EXPORT 'Boofar' TO MEMORY ID 'ZFOOBAR'.

结果

显然,系统只是 what the documentation says:

...the parameters are saved or found implicitly in the cluster under the name of the specified data object.

显然,再次获取值的唯一方法是动态访问,写起来有点麻烦:

TYPES: BEGIN OF t_import_value,
         name   TYPE c LENGTH 30,
         target TYPE c LENGTH 30,
       END OF t_import_value,
       t_import_table TYPE STANDARD TABLE OF t_import_value WITH DEFAULT KEY.

DATA(import_table) = VALUE t_import_table( ( name   = '''Boofar'''
                                             target = 'NAMED_VARIABLE' ) ).

IMPORT (import_table) FROM MEMORY ID 'ZFOOBAR'. " this changes the value of NAMED_VARIABLE!

我衷心祝愿您在您的工具中对此进行任何转换...